def test_ignore_external(tmp_dir, scm, dvc, tmp_path_factory): tmp_dir.gen(".dvcignore", "*.backup\ntmp") ext_dir = TmpDir(os.fspath(tmp_path_factory.mktemp("external_dir"))) ext_dir.gen({"y.backup": "y", "tmp": {"file": "ext tmp"}}) result = walk_files(dvc, dvc.fs, ext_dir) assert set(result) == { (ext_dir / "y.backup").fs_path, (ext_dir / "tmp" / "file").fs_path, } assert dvc.dvcignore.is_ignored_dir(os.fspath(ext_dir / "tmp")) is False assert (dvc.dvcignore.is_ignored_file(os.fspath(ext_dir / "y.backup")) is False)
def test_pipeline_file_target_ops(tmp_dir, dvc, run_copy, local_remote): path = local_remote.url tmp_dir.dvc_gen("foo", "foo") run_copy("foo", "bar", single_stage=True) tmp_dir.dvc_gen("lorem", "lorem") run_copy("lorem", "lorem2", name="copy-lorem-lorem2") tmp_dir.dvc_gen("ipsum", "ipsum") run_copy("ipsum", "baz", name="copy-ipsum-baz") outs = ["foo", "bar", "lorem", "ipsum", "baz", "lorem2"] remove(dvc.stage_cache.cache_dir) dvc.push() outs = ["foo", "bar", "lorem", "ipsum", "baz", "lorem2"] # each one's a copy of other, hence 3 assert len(recurse_list_dir(path)) == 3 clean(outs, dvc) assert set(dvc.pull(["dvc.yaml"])["added"]) == {"lorem2", "baz"} clean(outs, dvc) assert set(dvc.pull()["added"]) == set(outs) # clean everything in remote and push from dvc.testing.tmp_dir import TmpDir clean(TmpDir(path).iterdir()) dvc.push(["dvc.yaml:copy-ipsum-baz"]) assert len(recurse_list_dir(path)) == 1 clean(TmpDir(path).iterdir()) dvc.push(["dvc.yaml"]) assert len(recurse_list_dir(path)) == 2 with pytest.raises(StageNotFound): dvc.push(["dvc.yaml:StageThatDoesNotExist"]) with pytest.raises(StageNotFound): dvc.pull(["dvc.yaml:StageThatDoesNotExist"])