use crate::config::schemas;
use std::path::PathBuf;
use tempfile::TempDir;
fn schemas_dir() -> PathBuf {
PathBuf::from(env!("CARGO_MANIFEST_DIR")).join("schemas")
}
#[test]
fn generated_schemas_are_byte_identical_to_checked_in() {
let checked_in = schemas_dir();
let update = std::env::var_os("UPDATE_SCHEMAS").is_some();
let tmp = TempDir::new().expect("scratch dir");
let candidates = [tmp.path().to_path_buf(), checked_in.clone()];
let out_dir = &candidates[usize::from(update)];
let written = schemas::write_to(out_dir).expect("generate schemas");
for path in &written {
let name = path.file_name().expect("schema file name");
let generated = std::fs::read(path).expect("read generated schema");
let expected = std::fs::read(checked_in.join(name)).unwrap_or_else(|e| {
panic!("checked-in schema {name:?} missing: {e}; run `make schemas`")
});
assert_eq!(
generated, expected,
"schema {name:?} is stale; run `make schemas` to regenerate it",
);
}
}