summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJürg Billeter <j@bitron.ch>2019-03-14 15:40:14 +0000
committerJürg Billeter <j@bitron.ch>2019-03-25 10:24:41 +0100
commit3e586591349bef3b269414debd80ca44d6d2d6fa (patch)
tree66920d930b12c5ca1fa753c8ddddc2ef4e1a7840
parent190c272d8e31aac5ef83da7ab4f40ac543a163f6 (diff)
downloadbuildstream-3e586591349bef3b269414debd80ca44d6d2d6fa.tar.gz
cascache.py: Do not silently ignore missing directories in checkout()
Outside tests, CASCache.checkout() is used only in CasBasedDirectory.export() and we don't want to silently ignore missing directories when exporting files.
-rw-r--r--buildstream/_cas/cascache.py6
-rw-r--r--tests/integration/pullbuildtrees.py6
2 files changed, 6 insertions, 6 deletions
diff --git a/buildstream/_cas/cascache.py b/buildstream/_cas/cascache.py
index 46bd7d945..63871ebe4 100644
--- a/buildstream/_cas/cascache.py
+++ b/buildstream/_cas/cascache.py
@@ -198,10 +198,8 @@ class CASCache():
stat.S_IRGRP | stat.S_IXGRP | stat.S_IROTH | stat.S_IXOTH)
for dirnode in directory.directories:
- # Don't try to checkout a dangling ref
- if os.path.exists(self.objpath(dirnode.digest)):
- fullpath = os.path.join(dest, dirnode.name)
- self.checkout(fullpath, dirnode.digest, can_link=can_link)
+ fullpath = os.path.join(dest, dirnode.name)
+ self.checkout(fullpath, dirnode.digest, can_link=can_link)
for symlinknode in directory.symlinks:
# symlink
diff --git a/tests/integration/pullbuildtrees.py b/tests/integration/pullbuildtrees.py
index 4ed5cb86b..308905690 100644
--- a/tests/integration/pullbuildtrees.py
+++ b/tests/integration/pullbuildtrees.py
@@ -58,6 +58,8 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles):
cas = CASCache(str(tmpdir))
cas.checkout(extractdir, digest)
yield os.path.join(extractdir, 'buildtree')
+ except FileNotFoundError:
+ yield None
finally:
utils._force_rmtree(extractdir)
@@ -87,7 +89,7 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles):
assert element_name in result.get_pulled_elements()
elementdigest = share1.has_artifact('test', element_name, cli2.get_element_key(project, element_name))
with cas_extract_buildtree(elementdigest) as buildtreedir:
- assert not os.path.isdir(buildtreedir)
+ assert not buildtreedir
result = cli2.run(project=project, args=['--pull-buildtrees', 'artifact', 'pull', element_name])
assert element_name in result.get_pulled_elements()
with cas_extract_buildtree(elementdigest) as buildtreedir:
@@ -150,7 +152,7 @@ def test_pullbuildtrees(cli2, tmpdir, datafiles):
assert "Attempting to fetch missing artifact buildtrees" in result.stderr
assert element_name not in result.get_pulled_elements()
with cas_extract_buildtree(elementdigest) as buildtreedir:
- assert not os.path.isdir(buildtreedir)
+ assert not buildtreedir
assert element_name not in result.get_pushed_elements()
assert not share3.has_artifact('test', element_name, cli2.get_element_key(project, element_name))