summaryrefslogtreecommitdiff
path: root/tests/testutils/artifactshare.py
diff options
context:
space:
mode:
Diffstat (limited to 'tests/testutils/artifactshare.py')
-rw-r--r--tests/testutils/artifactshare.py21
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()
#