use super::*;
const REGISTERED_DIR_RELATIVE: &str = "crates/sample-wasm";
const WASM_DEPENDENCY: &str = "sample-pkg";
const WASM_STALE_SPEC: &str = "1.3.0";
const WASM_FRESH_SPEC: &str = "1.2.3";
fn registered_dir(root: &Path) -> PathBuf {
root.join(REGISTERED_DIR_RELATIVE)
}
fn write_and_register_package_json(root: &Path, specifier: &str) -> PathBuf {
let dir = registered_dir(root);
std::fs::create_dir_all(&dir).expect("create registered dir");
let manifest = dir.join("package.json");
std::fs::write(
&manifest,
format!(
"{{\n \"name\": \"sample-wasm\",\n \"version\": \"0.1.0\",\n \"private\": \
false,\n \"devDependencies\": {{\n \"{WASM_DEPENDENCY}\": \"{specifier}\"\n }}\n}}\n"
),
)
.expect("write registered package.json");
crate::cli::cache::record_scaffold_owned_path(root, &manifest)
.expect("record the manifest in the committed ownership manifest");
manifest
}
fn write_pnpm_lock_v9_in(dir: &Path, locked_specifier: &str) {
std::fs::write(
dir.join("pnpm-lock.yaml"),
format!(
"lockfileVersion: '9.0'\n\nimporters:\n .:\n devDependencies:\n \
{WASM_DEPENDENCY}:\n specifier: {locked_specifier}\n version: \
{locked_specifier}\n"
),
)
.expect("write pnpm-lock.yaml");
}
#[test]
fn stampable_output_paths_examines_zero_paths_for_an_unmarkable_manifest() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
let files = vec![crate::core::backend::GeneratedFile {
path: PathBuf::from(format!("{REGISTERED_DIR_RELATIVE}/package.json")),
content: "{\n \"name\": \"sample-wasm\"\n}\n".to_string(),
generated_header: false,
}];
let examined = crate::cli::pipeline::stampable_output_paths(&files, root);
assert_eq!(
examined.len(),
0,
"a generated_header: false JSON manifest carries no alef:hash: marker and JSON has no \
comment syntax to hold one, so it must be structurally absent from the path set the \
gate's original source examined -- examined: {examined:?}"
);
}
#[test]
fn registered_only_manifest_mismatch_is_reported() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
write_and_register_package_json(root, WASM_STALE_SPEC);
write_pnpm_lock_v9_in(®istered_dir(root), WASM_FRESH_SPEC);
let generated: HashSet<PathBuf> = HashSet::new();
let error = check_generated_node_lock_freshness(&generated, root)
.expect("a manifest known only through the ownership registry must still be checked");
let message = format!("{error:#}");
assert!(
message.contains(WASM_DEPENDENCY) && message.contains(WASM_STALE_SPEC) && message.contains(WASM_FRESH_SPEC),
"message must name the drifted dependency and both specifiers: {message}"
);
}
#[test]
fn registered_only_manifest_missing_lock_importer_is_not_reported() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
write_and_register_package_json(root, WASM_STALE_SPEC);
std::fs::write(
registered_dir(root).join("pnpm-lock.yaml"),
"lockfileVersion: '9.0'\n\nimporters:\n packages/unrelated:\n devDependencies:\n \
other-pkg:\n specifier: 2.0.0\n version: 2.0.0\n",
)
.expect("write pnpm-lock.yaml");
let generated: HashSet<PathBuf> = HashSet::new();
assert!(
check_generated_node_lock_freshness(&generated, root).is_none(),
"a lock with no importer entry for this project at all must not be reported as drift"
);
}
#[test]
fn registered_only_manifest_with_no_lock_at_all_is_not_reported() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
write_and_register_package_json(root, WASM_STALE_SPEC);
let generated: HashSet<PathBuf> = HashSet::new();
assert!(
check_generated_node_lock_freshness(&generated, root).is_none(),
"a package the lock has never seen (no lockfile at all yet) must not be reported as drift"
);
}
#[test]
fn repeated_checks_over_an_unchanged_registered_fixture_agree() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
write_and_register_package_json(root, WASM_STALE_SPEC);
write_pnpm_lock_v9_in(®istered_dir(root), WASM_FRESH_SPEC);
let generated: HashSet<PathBuf> = HashSet::new();
let first = check_generated_node_lock_freshness(&generated, root).expect("first pass must report drift");
let second = check_generated_node_lock_freshness(&generated, root).expect("second pass must report drift");
assert_eq!(
format!("{first:#}"),
format!("{second:#}"),
"two runs over an unchanged fixture must report the identical finding, not accumulate \
duplicates or drift in wording"
);
let first_set = registered_unmarkable_manifest_dirs(root, "package.json");
let second_set = registered_unmarkable_manifest_dirs(root, "package.json");
assert_eq!(
first_set, second_set,
"the registered-directory set itself must be stable across repeated reads"
);
assert_eq!(
first_set.len(),
1,
"exactly one registered directory is expected, not a duplicate entry: {first_set:?}"
);
}
#[test]
fn repeated_checks_over_a_clean_registered_fixture_stay_clean() {
let temp = tempfile::tempdir().expect("tempdir");
let root = temp.path();
write_and_register_package_json(root, WASM_FRESH_SPEC);
write_pnpm_lock_v9_in(®istered_dir(root), WASM_FRESH_SPEC);
let generated: HashSet<PathBuf> = HashSet::new();
assert!(check_generated_node_lock_freshness(&generated, root).is_none());
assert!(
check_generated_node_lock_freshness(&generated, root).is_none(),
"a second pass over the same clean fixture must stay clean"
);
}