def test_list_hashes(dvc): tree = BaseRemoteTree(dvc, {}) tree.path_info = PathInfo("foo") with mock.patch.object(tree, "list_paths", return_value=["12/3456", "bar"]): hashes = list(tree.list_hashes()) assert hashes == ["123456"]
def test_list_paths(dvc): tree = BaseRemoteTree(dvc, {}) tree.path_info = PathInfo("foo") with mock.patch.object(tree, "walk_files", return_value=[]) as walk_mock: for _ in tree.list_paths(): pass walk_mock.assert_called_with(tree.path_info, prefix=False) for _ in tree.list_paths(prefix="000"): pass walk_mock.assert_called_with(tree.path_info / "00" / "0", prefix=True)
def test_list_hashes_traverse(_path_to_hash, list_hashes, dvc): tree = BaseRemoteTree(dvc, {}) tree.path_info = PathInfo("foo") # parallel traverse size = 256 / tree.JOBS * tree.LIST_OBJECT_PAGE_SIZE list(tree.list_hashes_traverse(size, {0})) for i in range(1, 16): list_hashes.assert_any_call(prefix=f"{i:03x}", progress_callback=CallableOrNone) for i in range(1, 256): list_hashes.assert_any_call(prefix=f"{i:02x}", progress_callback=CallableOrNone) # default traverse (small remote) size -= 1 list_hashes.reset_mock() list(tree.list_hashes_traverse(size - 1, {0})) list_hashes.assert_called_with(prefix=None, progress_callback=CallableOrNone)