use super::*;
use crate::cli::cache::{CACHE_DIR, LEGACY_SCAFFOLD_OWNED_PATHS_MANIFEST, OWNERSHIP_MANIFEST};
#[test]
fn legacy_only_ownership_survives_the_cache_being_cleared_once_queried() {
let dir = tempfile::tempdir().expect("tempdir");
let base = dir.path();
let relative = Path::new("packages/java/pom.xml");
std::fs::create_dir_all(base.join(CACHE_DIR)).expect("create legacy cache dir");
std::fs::write(
base.join(CACHE_DIR).join(LEGACY_SCAFFOLD_OWNED_PATHS_MANIFEST),
"packages/java/pom.xml\n",
)
.expect("seed legacy record");
assert!(
!base.join(OWNERSHIP_MANIFEST).exists(),
"ownership starts recorded only in the legacy cache"
);
assert!(
is_scaffold_owned_path(base, &base.join(relative)),
"sanity: the legacy record alone must already answer true"
);
std::fs::remove_dir_all(base.join(CACHE_DIR)).expect("clear the cache, as `alef clean` / a fresh CI runner would");
assert!(!base.join(CACHE_DIR).exists(), "sanity: the cache is now wholly absent");
assert!(
is_scaffold_owned_path(base, &base.join(relative)),
"ownership queried once while the legacy cache still existed must survive the cache being cleared"
);
}
#[test]
fn path_never_recorded_stays_refused_even_with_no_cache_at_all() {
let dir = tempfile::tempdir().expect("tempdir");
let base = dir.path();
let relative = Path::new("packages/java/pom.xml");
assert!(!base.join(CACHE_DIR).exists(), "sanity: no cache at all");
assert!(
!base.join(OWNERSHIP_MANIFEST).exists(),
"sanity: no committed record either"
);
assert!(
!is_scaffold_owned_path(base, &base.join(relative)),
"a path alef never recorded must stay refused, cache absent or not"
);
}
#[test]
fn legacy_gitignored_record_is_still_honoured_for_reads() {
let dir = tempfile::tempdir().expect("tempdir");
let base = dir.path();
let relative = Path::new("packages/java/pom.xml");
std::fs::create_dir_all(base.join(CACHE_DIR)).expect("create legacy cache dir");
std::fs::write(
base.join(CACHE_DIR).join(LEGACY_SCAFFOLD_OWNED_PATHS_MANIFEST),
"packages/java/pom.xml\n",
)
.expect("seed legacy record");
assert!(!base.join(OWNERSHIP_MANIFEST).exists(), "no committed record yet");
assert!(is_scaffold_owned_path(base, &base.join(relative)));
}