def test_walk_dir(tmp_dir, dvc, fetch, expected): tmp_dir.gen({ "dir": { "subdir1": { "foo1": "foo1", "bar1": "bar1" }, "subdir2": { "foo2": "foo2" }, "foo": "foo", "bar": "bar", } }) dvc.add("dir") tree = DvcTree(dvc, fetch=fetch) expected = [str(tmp_dir / path) for path in expected] with dvc.state: actual = [] for root, dirs, files in tree.walk("dir"): for entry in dirs + files: actual.append(os.path.join(root, entry)) assert set(actual) == set(expected) assert len(actual) == len(expected)
def test_walk(tmp_dir, dvc): tmp_dir.gen({ "dir": { "subdir1": { "foo1": "foo1", "bar1": "bar1" }, "subdir2": { "foo2": "foo2" }, "foo": "foo", "bar": "bar", } }) dvc.add("dir", recursive=True) tree = DvcTree(dvc) expected = [ str(tmp_dir / "dir" / "subdir1"), str(tmp_dir / "dir" / "subdir2"), str(tmp_dir / "dir" / "subdir1" / "foo1"), str(tmp_dir / "dir" / "subdir1" / "bar1"), str(tmp_dir / "dir" / "subdir2" / "foo2"), str(tmp_dir / "dir" / "foo"), str(tmp_dir / "dir" / "bar"), ] actual = [] for root, dirs, files in tree.walk("dir"): for entry in dirs + files: actual.append(os.path.join(root, entry)) assert set(actual) == set(expected) assert len(actual) == len(expected)
def test_walk_onerror(tmp_dir, dvc): def onerror(exc): raise exc tmp_dir.dvc_gen("foo", "foo") tree = DvcTree(dvc) # path does not exist for _ in tree.walk("dir"): pass with pytest.raises(OSError): for _ in tree.walk("dir", onerror=onerror): pass # path is not a directory for _ in tree.walk("foo"): pass with pytest.raises(OSError): for _ in tree.walk("foo", onerror=onerror): pass