in yaml_test_runner/src/generator.rs [488:529]
fn write_mod_files(generated_dir: &PathBuf, toplevel: bool) -> anyhow::Result<()> {
if !generated_dir.exists() {
fs::create_dir(generated_dir)?;
}
let paths = fs::read_dir(generated_dir)?;
let mut mods = vec![];
for path in paths.flatten() {
let path = path.path();
let name = path.file_stem().unwrap().to_string_lossy();
if name != "mod" {
mods.push(format!(
"pub mod {};",
path.file_stem().unwrap().to_string_lossy()
));
}
if path.is_dir() && !(toplevel && name == "common") {
write_mod_files(&path, false)?;
}
}
// Make sure we have a stable output
mods.sort();
if toplevel {
// The "common" module must appear first so that its macros are parsed before the
// compiler visits other modules, otherwise we'll have "macro not found" errors.
mods.retain(|name| name != "pub mod common;");
mods.insert(0, "#[macro_use]".into());
mods.insert(1, "pub mod common;".into());
mods.insert(2, "".into());
}
let mut path = generated_dir.clone();
path.push("mod.rs");
let mut file = File::create(&path)?;
let generated_mods: String = mods.join("\n");
file.write_all(generated_mods.as_bytes())?;
Ok(())
}