diff options
Diffstat (limited to 'tests/testutils/artifactshare.py')
-rw-r--r-- | tests/testutils/artifactshare.py | 21 |
1 files changed, 20 insertions, 1 deletions
diff --git a/tests/testutils/artifactshare.py b/tests/testutils/artifactshare.py index bd9c97c61..8ce8a4198 100644 --- a/tests/testutils/artifactshare.py +++ b/tests/testutils/artifactshare.py @@ -209,7 +209,7 @@ class ArtifactShare(BaseArtifactShare): reachable = set() def reachable_dir(digest): - self.cas._reachable_refs_dir(reachable, digest, update_mtime=False, check_exists=True) + self._reachable_refs_dir(reachable, digest) try: artifact_proto_path = self.cas.objpath(artifact_proto_digest) @@ -271,6 +271,25 @@ class ArtifactShare(BaseArtifactShare): shutil.rmtree(self.directory) + def _reachable_refs_dir(self, reachable, tree): + if tree.hash in reachable: + return + + reachable.add(tree.hash) + + directory = remote_execution_pb2.Directory() + + with open(self.cas.objpath(tree), "rb") as f: + directory.ParseFromString(f.read()) + + for filenode in directory.files: + if not os.path.exists(self.cas.objpath(filenode.digest)): + raise FileNotFoundError + reachable.add(filenode.digest.hash) + + for dirnode in directory.directories: + self._reachable_refs_dir(reachable, dirnode.digest) + # create_artifact_share() # |