forked from mirrors/jj
working_copy: test changes in tracked-but-ignored directory
It's currently the same code path for handling changes to tracked paths in ignored directories as outside ignored directories, but I'm about to change that. I also updated the assertion in the test to compare all entries instead of just the tree id, so it's easier to spot errors if it fails.
This commit is contained in:
parent
0dc5d967ae
commit
aff483c431
1 changed files with 30 additions and 8 deletions
|
@ -594,23 +594,45 @@ fn test_gitignores_ignored_directory_already_tracked(use_git: bool) {
|
|||
|
||||
let settings = testutils::user_settings();
|
||||
let mut test_workspace = TestWorkspace::init(&settings, use_git);
|
||||
let repo = &test_workspace.repo;
|
||||
let workspace_root = test_workspace.workspace.workspace_root().clone();
|
||||
let repo = test_workspace.repo.clone();
|
||||
|
||||
let gitignore_path = RepoPath::from_internal_string(".gitignore");
|
||||
let file_path = RepoPath::from_internal_string("ignored/file");
|
||||
let unchanged_path = RepoPath::from_internal_string("ignored/unchanged");
|
||||
let modified_path = RepoPath::from_internal_string("ignored/modified");
|
||||
let deleted_path = RepoPath::from_internal_string("ignored/deleted");
|
||||
let tree = create_tree(
|
||||
repo,
|
||||
&[(&gitignore_path, "/ignored/\n"), (&file_path, "contents")],
|
||||
&repo,
|
||||
&[
|
||||
(&gitignore_path, "/ignored/\n"),
|
||||
(&unchanged_path, "contents"),
|
||||
(&modified_path, "contents"),
|
||||
(&deleted_path, "contents"),
|
||||
],
|
||||
);
|
||||
|
||||
// Check out the tree with the file in `ignored/`
|
||||
// Check out the tree with the files in `ignored/`
|
||||
let wc = test_workspace.workspace.working_copy_mut();
|
||||
wc.check_out(repo.op_id().clone(), None, &tree).unwrap();
|
||||
|
||||
// Check that the file is still in the tree created by snapshotting the working
|
||||
// copy (that it didn't get removed because the directory is ignored)
|
||||
// Make some changes inside the ignored directory and check that they are
|
||||
// detected when we snapshot. The files that are still there should not be
|
||||
// deleted from the resulting tree.
|
||||
std::fs::write(modified_path.to_fs_path(&workspace_root), "modified").unwrap();
|
||||
std::fs::remove_file(deleted_path.to_fs_path(&workspace_root)).unwrap();
|
||||
let new_tree = test_workspace.snapshot();
|
||||
assert_eq!(new_tree.id(), tree.id());
|
||||
let expected_tree = create_tree(
|
||||
&repo,
|
||||
&[
|
||||
(&gitignore_path, "/ignored/\n"),
|
||||
(&unchanged_path, "contents"),
|
||||
(&modified_path, "modified"),
|
||||
],
|
||||
);
|
||||
assert_eq!(
|
||||
new_tree.entries().collect_vec(),
|
||||
expected_tree.entries().collect_vec()
|
||||
);
|
||||
}
|
||||
|
||||
#[test_case(false ; "local backend")]
|
||||
|
|
Loading…
Reference in a new issue