fix: follow a link anywhere under the store base
This commit is contained in:
@@ -282,3 +282,27 @@ fn two_checkouts_of_one_remote_keep_their_own_files() {
|
||||
assert_eq!(fs::read(second.path(".env")).unwrap(), b"SECOND\n");
|
||||
second.ahab(&["link", "list"]).ok().says("linked: .env");
|
||||
}
|
||||
|
||||
#[test]
|
||||
fn a_link_into_an_older_store_layout_still_checks_clean_and_restores() {
|
||||
let case = Case::new("legacy");
|
||||
// the flat layout, before the store was keyed by checkout
|
||||
let old = case.store.parent().unwrap().join(".env");
|
||||
fs::create_dir_all(old.parent().unwrap()).unwrap();
|
||||
fs::write(&old, b"SECRET=1\n").unwrap();
|
||||
case.link(&case.path(".env"), &old);
|
||||
case.gitignore(".env\n");
|
||||
|
||||
case.ahab(&["link", "check", "--exit-code"]).ok();
|
||||
case.ahab(&["link", "restore", ".env"]).ok();
|
||||
|
||||
assert!(!case.is_symlink(".env"));
|
||||
assert_eq!(fs::read(case.path(".env")).unwrap(), b"SECRET=1\n");
|
||||
assert!(!old.exists());
|
||||
|
||||
// a link that leaves the store altogether is still refused
|
||||
case.link(&case.path("key"), &case.outside.join("key"));
|
||||
case.ahab(&["link", "restore", "key"])
|
||||
.failed()
|
||||
.says("not in the store");
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user