use super::*;
const OLD_WORDING_NPMRC: &str =
"; alef-generated — frozen-lockfile is disabled: legacy wording nobody re-spelled.\nfrozen-lockfile=false\n";
fn current_wording_npmrc() -> String {
format!(
"; {}\n; frozen-lockfile is disabled: the under-test napi package pins platform \
optionalDependencies to the unpublished release version.\nfrozen-lockfile=false\n",
crate::core::hash::STANDARD_HEADER_LINE
)
}
#[test]
fn drifted_npmrc_is_stamped_in_place_not_recorded_as_presence_only() {
let dir = tempfile::tempdir().expect("tempdir");
let base = dir.path();
let target = seed(base, "e2e/node/.npmrc", OLD_WORDING_NPMRC);
let generated = current_wording_npmrc();
let outputs = managed("e2e/node/.npmrc", &generated, false, base);
let report = run(&options(base, "e2e/node/.npmrc", true), &outputs).expect("adopt");
let after = std::fs::read_to_string(&target).expect("read after");
assert!(
content_has_alef_marker(&after),
"adoption must leave a marker the guard will recognise, got:\n{after}"
);
assert!(
after.contains("legacy wording"),
"adopt stamps the existing bytes, never replaces them with generated content, got:\n{after}"
);
assert_eq!(report.adopted, vec![PathBuf::from("e2e/node/.npmrc")]);
assert!(
report.recorded_unstampable.is_empty(),
".npmrc can carry a marker in its own bytes -- it must never fall back to the \
presence-only ownership record, got: {:?}",
report.recorded_unstampable
);
assert_eq!(report.diffs.len(), 1);
assert_eq!(report.diffs[0].state, AdoptionState::Drifted);
}
#[test]
fn already_current_wording_npmrc_is_already_owned() {
let dir = tempfile::tempdir().expect("tempdir");
let base = dir.path();
let generated = current_wording_npmrc();
seed(base, "e2e/node/.npmrc", &generated);
let outputs = managed("e2e/node/.npmrc", &generated, false, base);
let report = run(&options(base, "e2e/node/.npmrc", true), &outputs).expect("adopt");
assert_eq!(report.already_owned, vec![PathBuf::from("e2e/node/.npmrc")]);
assert!(report.adopted.is_empty());
assert!(report.diffs.is_empty());
}