summaryrefslogtreecommitdiff
path: root/morphlib
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2012-06-14 12:50:20 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2012-06-14 12:50:20 +0000
commit34b5ccb6bf00e0b6fa67e75eb749a32dd9fed277 (patch)
tree4a08f0c68c065e5f709a7eb325c687fbe8e3dce6 /morphlib
parent18a3b4dbf2fabf46cca6f163ec949d22437ee966 (diff)
downloadmorph-34b5ccb6bf00e0b6fa67e75eb749a32dd9fed277.tar.gz
morphlib.builder2: fix unit tests
Diffstat (limited to 'morphlib')
-rw-r--r--morphlib/builder2.py8
-rw-r--r--morphlib/builder2_tests.py20
2 files changed, 23 insertions, 5 deletions
diff --git a/morphlib/builder2.py b/morphlib/builder2.py
index 08427b6f..bc7070d4 100644
--- a/morphlib/builder2.py
+++ b/morphlib/builder2.py
@@ -70,14 +70,14 @@ def download_depends(constituents, lac, rac):
target.close()
source.close()
-def get_chunk_files(f):
+def get_chunk_files(f): # pragma: no cover
tar = tarfile.open(fileobj=f)
for member in tar.getmembers():
if member.type is not tarfile.DIRTYPE:
yield member.name
tar.close()
-def get_stratum_files(f, lac):
+def get_stratum_files(f, lac): # pragma: no cover
for ca in (ArtifactCacheReference(a) for a in json.load(f)):
cf = lac.get(ca)
for filename in get_chunk_files(cf):
@@ -102,7 +102,7 @@ def get_overlaps(artifact, constituents, lac): #pragma: no cover
overlaps[frozenset(artifacts)].add(filename)
return overlaps
-def log_overlaps(overlaps):
+def log_overlaps(overlaps): #pragma: no cover
for overlapping, files in sorted(overlaps.iteritems()):
logging.warning(' Artifacts %s overlap with files:' %
', '.join(sorted(a.name for a in overlapping))
@@ -110,7 +110,7 @@ def log_overlaps(overlaps):
for filename in sorted(files):
logging.warning(' %s' % filename)
-def write_overlap_metadata(artifact, overlaps, lac):
+def write_overlap_metadata(artifact, overlaps, lac): #pragma: no cover
f = lac.put_artifact_metadata(artifact, 'overlaps')
# the big list comprehension is because json can't serialize
# artifacts, sets or dicts with non-string keys
diff --git a/morphlib/builder2_tests.py b/morphlib/builder2_tests.py
index 9730b59e..5a86fe75 100644
--- a/morphlib/builder2_tests.py
+++ b/morphlib/builder2_tests.py
@@ -80,9 +80,15 @@ class FakeFileHandle(object):
def __enter__(self):
return self
- def __exit__(self, type, value, traceback):
+ def _writeback(self):
self._cache._cached[self._key] = self._string
+ def __exit__(self, type, value, traceback):
+ self._writeback()
+
+ def close(self):
+ self._writeback()
+
def write(self, string):
self._string += string
@@ -209,6 +215,18 @@ class BuilderBaseTests(unittest.TestCase):
self.assertEqual(sorted(events),
sorted(meta['build-times'].keys()))
+ def test_downloads_depends(self):
+ lac = FakeArtifactCache()
+ rac = FakeArtifactCache()
+ afacts = [FakeArtifact(name) for name in ('a', 'b', 'c')]
+ for a in afacts:
+ fh = rac.put(a)
+ fh.write(a.name)
+ fh.close()
+ morphlib.builder2.download_depends(afacts, lac, rac)
+ self.assertTrue(all(lac.has(a) for a in afacts))
+
+
class ChunkBuilderTests(unittest.TestCase):
def setUp(self):