def test_ignore_on_branch(tmp_dir, scm, dvc): tmp_dir.scm_gen({"foo": "foo", "bar": "bar"}, commit="add files") with tmp_dir.branch("branch", new=True): tmp_dir.scm_gen(DvcIgnore.DVCIGNORE_FILE, "foo", commit="add ignore") assert _files_set(".", dvc.tree) == {"./foo", "./bar"} dvc.tree = scm.get_tree("branch") assert _files_set(".", dvc.tree) == { to_posixpath(os.path.join(dvc.root_dir, DvcIgnore.DVCIGNORE_FILE)), to_posixpath(os.path.join(dvc.root_dir, "bar")), }
def test_ignore_on_branch(tmp_dir, scm, dvc): tmp_dir.scm_gen({"foo": "foo", "bar": "bar"}, commit="add files") scm.checkout("branch", create_new=True) tmp_dir.scm_gen(DvcIgnore.DVCIGNORE_FILE, "foo", commit="add ignore") scm.checkout("master") assert _files_set(".", dvc.tree) == {"./foo", "./bar"} tree = CleanTree(scm.get_tree("branch")) assert _files_set(".", tree) == { to_posixpath(os.path.join(tree.tree_root, DvcIgnore.DVCIGNORE_FILE)), to_posixpath(os.path.join(tree.tree_root, "bar")), }
def test_metadata_unchanged_when_moving_ignored_file(dvc_repo, repo_dir): new_data_path = repo_dir.DATA_SUB + "_new" ignore_file = os.path.join(dvc_repo.root_dir, DvcIgnore.DVCIGNORE_FILE) repo_dir.create( ignore_file, "\n".join( [to_posixpath(repo_dir.DATA_SUB), to_posixpath(new_data_path)]), ) mtime_sig, size = get_mtime_and_size(repo_dir.DATA_DIR, dvc_repo.dvcignore) shutil.move(repo_dir.DATA_SUB, new_data_path) new_mtime_sig, new_size = get_mtime_and_size(repo_dir.DATA_DIR, dvc_repo.dvcignore) assert new_mtime_sig == mtime_sig assert new_size == size
def test_metadata_unchanged_on_ignored_file_deletion(dvc_repo, repo_dir): ignore_file = os.path.join(dvc_repo.root_dir, DvcIgnore.DVCIGNORE_FILE) repo_dir.create(ignore_file, to_posixpath(repo_dir.DATA_SUB)) mtime, size = get_mtime_and_size(repo_dir.DATA_DIR, dvc_repo.dvcignore) os.remove(repo_dir.DATA_SUB) new_mtime, new_size = get_mtime_and_size(repo_dir.DATA_DIR, dvc_repo.dvcignore) assert new_mtime == mtime assert new_size == size
def test_ignore_on_branch(git, dvc_repo, repo_dir): dvc_repo.add(repo_dir.DATA_DIR) dvc_repo.scm.commit("add data dir") branch_name = "branch_one" dvc_repo.scm.checkout(branch_name, create_new=True) repo_dir.create(DvcIgnore.DVCIGNORE_FILE, to_posixpath(repo_dir.DATA_SUB)) dvc_repo.scm.add([DvcIgnore.DVCIGNORE_FILE]) git.index.commit("add ignore") dvc_repo.scm.checkout("master") git_tree = dvc_repo.scm.get_tree(branch_name) branch_data_files = set( itertools.chain.from_iterable([ files for _, _, files in dvc_repo.tree.walk( repo_dir.DATA_DIR, dvcignore=DvcIgnoreFilter(repo_dir.root_dir, git_tree), ) ])) assert branch_data_files == {"data"}
def _files_set(root, tree): return {to_posixpath(f) for f in tree.walk_files(root)}
def _files_set(root, dvcignore): return {to_posixpath(f) for f in walk_files(root, dvcignore)}