Dependencies
///|
test "minimal downstream callback" {
@fs.create_dir(".test-tmp") catch {
_ => ()
}
@fs.create_dir(".test-tmp/mproc_gen") catch {
_ => ()
}
let input_path = ".test-tmp/mproc_gen/readme_input.mbt"
@fs.write_string_to_file(input_path, "fn source() -> Unit { () }\n")
let plan = @mproc_gen.GenerationPlan::{
input_paths: [input_path],
output_path: ".test-tmp/mproc_gen/readme_output.g.mbt",
}
let generated = @mproc_gen.generate_to_string(plan, fn(sources, out) {
match sources[:] {
[source] => out.write_string("// generated from \{source.path}")
_ => abort("expected one parsed source")
}
}) catch {
@mproc_gen.ParseFailure(message) =>
abort("unexpected parse failure: \{message}")
@mproc_gen.GenerationFailure(message) =>
abort("unexpected generation failure: \{message}")
_ => abort("unexpected runner failure")
}
inspect(
generated,
content="// generated from .test-tmp/mproc_gen/readme_input.mbt",
)
}fn generate(plan : GenerationPlan, callback : (Array[ParsedSource], StringBuilder) -> Unit raise GenerationFailure) -> Unit raisefn generate_to_string(plan : GenerationPlan, callback : (Array[ParsedSource], StringBuilder) -> Unit raise GenerationFailure) -> String raiseDependencies