summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2020-10-28 11:38:40 +0100
committerJürg Billeter <j@bitron.ch>2020-12-09 14:51:06 +0000
commitc35f843d4e027caf209d88a384a2c3f7a2dd8680 (patch)
tree5b1ae535ad30e81dda5a54030d9580182588ae71
parent47ef74f0ba4868eeba94baea3a8beb2874ec6b24 (diff)
downloadbuildstream-c35f843d4e027caf209d88a384a2c3f7a2dd8680.tar.gz
Move _reachable_refs_dir() method from cascache.py to testutils
It's not used outside testutils.
-rw-r--r--src/buildstream/_cas/cascache.py32
-rw-r--r--tests/testutils/artifactshare.py21
2 files changed, 20 insertions, 33 deletions
diff --git a/src/buildstream/_cas/cascache.py b/src/buildstream/_cas/cascache.py
index d13531c6c..3182ec050 100644
--- a/src/buildstream/_cas/cascache.py
+++ b/src/buildstream/_cas/cascache.py
@@ -470,38 +470,6 @@ class CASCache:
# Local Private Methods #
################################################
- def _reachable_refs_dir(self, reachable, tree, update_mtime=False, check_exists=False):
- if tree.hash in reachable:
- return
- try:
- if update_mtime:
- os.utime(self.objpath(tree))
-
- reachable.add(tree.hash)
-
- directory = remote_execution_pb2.Directory()
-
- with open(self.objpath(tree), "rb") as f:
- directory.ParseFromString(f.read())
-
- except FileNotFoundError:
- if check_exists:
- raise
-
- # Just exit early if the file doesn't exist
- return
-
- for filenode in directory.files:
- if update_mtime:
- os.utime(self.objpath(filenode.digest))
- if check_exists:
- if not os.path.exists(self.objpath(filenode.digest)):
- raise FileNotFoundError
- reachable.add(filenode.digest.hash)
-
- for dirnode in directory.directories:
- self._reachable_refs_dir(reachable, dirnode.digest, update_mtime=update_mtime, check_exists=check_exists)
-
# _temporary_object():
#
# Returns:
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()
#