def test_broken_symlink(tmp_dir, dvc): from dvc.fs import system tmp_dir.gen("file", "content") system.symlink("file", "link") os.remove("file") entries = Repo.ls(os.fspath(tmp_dir)) assert entries == [ { "isout": False, "isdir": False, "isexec": False, "path": ".dvcignore", }, ]
def run(self): from dvc.repo import Repo try: entries = Repo.ls( self.args.url, self.args.target, rev=self.args.rev, recursive=self.args.recursive, outs_only=self.args.outs_only, ) if entries: entries = _prettify(entries, sys.stdout.isatty()) logger.info("\n".join(entries)) return 0 except DvcException: logger.exception("failed to list '{}'".format(self.args.url)) return 1
def test_ls_remote_repo_with_path_dir(erepo_dir): with erepo_dir.chdir(): erepo_dir.scm_gen(FS_STRUCTURE, commit="init") erepo_dir.dvc_gen(DVC_STRUCTURE, commit="dvc") url = f"file://{erepo_dir.as_posix()}" path = "model" files = Repo.ls(url, path) match_files( files, ( (("script.py", ), False), (("train.py", ), False), (("people.csv", ), True), (("people.csv.dvc", ), False), ((".gitignore", ), False), ), )
def run(self): from dvc.repo import Repo try: entries = Repo.ls( self.args.url, self.args.path, rev=self.args.rev, recursive=self.args.recursive, dvc_only=self.args.dvc_only, ) if entries: entries = _prettify(entries, sys.stdout.isatty()) logger.info("\n".join(entries)) return 0 except DvcException: logger.exception(f"failed to list '{self.args.url}'") return 1
def test_ls_remote_repo(erepo_dir): with erepo_dir.chdir(): erepo_dir.scm_gen(FS_STRUCTURE, commit="init") erepo_dir.dvc_gen(DVC_STRUCTURE, commit="dvc") url = "file://{}".format(erepo_dir) files = Repo.ls(url) match_files( files, ( ((".gitignore", ), False), (("README.md", ), False), (("structure.xml.dvc", ), False), (("model", ), False), (("data", ), False), (("structure.xml", ), True), ), )
def run(self): from dvc.repo import Repo try: entries = Repo.ls( self.args.url, self.args.path, rev=self.args.rev, recursive=self.args.recursive, dvc_only=self.args.dvc_only, ) if self.args.json: ui.write_json(entries) elif entries: entries = _prettify(entries, with_color=True) ui.write("\n".join(entries)) return 0 except DvcException: logger.exception(f"failed to list '{self.args.url}'") return 1
def test_ls_remote_repo_with_rev_recursive(erepo_dir): with erepo_dir.chdir(): erepo_dir.dvc_gen(DVC_STRUCTURE, commit="dvc") erepo_dir.scm_gen(FS_STRUCTURE, commit="init") rev = erepo_dir.scm.list_all_commits()[1] url = "file://{}".format(erepo_dir) files = Repo.ls(url, rev=rev, recursive=True) match_files( files, ( ("structure.xml.dvc", ), ("model", "people.csv.dvc"), ("data", "subcontent", "data.xml.dvc"), ("data", "subcontent", "statistics", "data.csv.dvc"), ("data", "subcontent", "statistics", "data.csv"), ("data", "subcontent", "data.xml"), ("model", "people.csv"), ("structure.xml", ), ), )
def test_ls_repo_recursive(tmp_dir, dvc, scm): tmp_dir.scm_gen(FS_STRUCTURE, commit="init") tmp_dir.dvc_gen(DVC_STRUCTURE, commit="dvc") files = Repo.ls(fspath(tmp_dir), recursive=True) match_files( files, ( (".gitignore", ), ("README.md", ), ("structure.xml.dvc", ), ("model", "script.py"), ("model", "train.py"), ("model", "people.csv.dvc"), ("data", "subcontent", "data.xml.dvc"), ("data", "subcontent", "statistics", "data.csv.dvc"), ("data", "subcontent", "statistics", "data.csv"), ("data", "subcontent", "data.xml"), ("model", "people.csv"), ("structure.xml", ), ), )
def test_ls_remote_repo_recursive(erepo_dir): with erepo_dir.chdir(): erepo_dir.scm_gen(FS_STRUCTURE, commit="init") erepo_dir.dvc_gen(DVC_STRUCTURE, commit="dvc") url = "file://{}".format(erepo_dir) files = Repo.ls(url, recursive=True) match_files( files, ( (".gitignore", ), ("README.md", ), ("structure.xml.dvc", ), ("model", "script.py"), ("model", "train.py"), ("model", "people.csv.dvc"), ("data", "subcontent", "data.xml.dvc"), ("data", "subcontent", "statistics", "data.csv.dvc"), ("data", "subcontent", "statistics", "data.csv"), ("data", "subcontent", "data.xml"), ("model", "people.csv"), ("structure.xml", ), ), )
def test_ls_not_existed_url(): from time import time dirname = "__{}_{}".format("not_existed", time()) with pytest.raises(CloneError): Repo.ls(dirname, recursive=True)
def test_ls_repo_with_removed_dvc_dir_with_path_file(tmp_dir, dvc, scm): create_dvc_pipeline(tmp_dir, dvc) path = os.path.join("out", "file") files = Repo.ls(os.fspath(tmp_dir), path) match_files(files, ((("file",), True),))
def _list_files(repo, path=None): return set(map(itemgetter("path"), Repo.ls(os.fspath(repo), path)))
def _ls(path): return Repo.ls(os.fspath(erepo_dir), path)
def test_ls_repo_with_removed_dvc_dir_with_target_file(tmp_dir, dvc, scm): create_dvc_pipeline(tmp_dir, dvc) target = os.path.join("out", "file") files = Repo.ls(fspath(tmp_dir), target) match_files(files, (("file", ), ))
def test_ls_repo_with_removed_dvc_dir(tmp_dir, dvc, scm): create_dvc_pipeline(tmp_dir, dvc) files = Repo.ls(fspath(tmp_dir)) match_files(files, (("script.py", ), ("dep.dvc", ), ("out.dvc", ), ("dep", ), ("out", )))
def test_ls_repo_with_removed_dvc_dir_with_target_dir(tmp_dir, dvc, scm): create_dvc_pipeline(tmp_dir, dvc) target = "out" files = Repo.ls(fspath(tmp_dir), target) match_files(files, ((("file", ), True), ))