summaryrefslogtreecommitdiff
path: root/distbuild/serialise_tests.py
diff options
context:
space:
mode:
authorSam Thursfield <sam.thursfield@codethink.co.uk>2014-09-26 14:13:06 +0100
committerSam Thursfield <sam.thursfield@codethink.co.uk>2014-09-26 14:13:56 +0100
commit0ac2f5d3b0519b61e8cadc93bf2a33520e9ba062 (patch)
treea1dbcf97d5e5e2fcc498d6c592d78c9c19e00a45 /distbuild/serialise_tests.py
parentc754d0366d4557910775bfa83c85ffdf98af0610 (diff)
downloadmorph-0ac2f5d3b0519b61e8cadc93bf2a33520e9ba062.tar.gz
Fix distbuild to work with per-source building
The serialisation code is now in sync with the code in morphlib. FIXME: I didn't understand this: # We create separate sources for strata and systems, # this is a bit of a hack, but needed to allow # us to build strata and systems independently so I commented it out for now.
Diffstat (limited to 'distbuild/serialise_tests.py')
-rw-r--r--distbuild/serialise_tests.py61
1 files changed, 35 insertions, 26 deletions
diff --git a/distbuild/serialise_tests.py b/distbuild/serialise_tests.py
index 2ad3a384..8e0a9413 100644
--- a/distbuild/serialise_tests.py
+++ b/distbuild/serialise_tests.py
@@ -19,14 +19,15 @@
import unittest
import distbuild
+import morphlib
class MockMorphology(object):
- def __init__(self, name):
+ def __init__(self, name, kind):
self.dict = {
- 'name': '%s.morphology.name' % name,
- 'kind': '%s.morphology.kind' % name,
+ 'name': name,
+ 'kind': kind,
}
self.needs_staging_area = None
self.needs_artifact_metadata_cached = None
@@ -40,21 +41,15 @@ class MockMorphology(object):
class MockSource(object):
- def __init__(self, name):
+ def __init__(self, name, kind):
+ self.name = name
self.repo = None
self.repo_name = '%s.source.repo_name' % name
self.original_ref = '%s.source.original_ref' % name
self.sha1 = '%s.source.sha1' % name
self.tree = '%s.source.tree' % name
- self.morphology = MockMorphology(name)
+ self.morphology = MockMorphology(name, kind)
self.filename = '%s.source.filename' % name
-
-
-class MockArtifact(object):
-
- def __init__(self, name):
- self.source = MockSource(name)
- self.name = name
self.cache_id = {
'blip': '%s.blip' % name,
'integer': 42,
@@ -62,14 +57,26 @@ class MockArtifact(object):
self.cache_key = '%s.cache_key' % name
self.dependencies = []
+ if kind == 'chunk':
+ self.build_mode = '%s.source.build_mode' % name
+ self.prefix = '%s.source.prefix' % name
+
+
+
+def mock_artifact(name, kind):
+ source = MockSource(name, kind)
+ artifact = morphlib.artifact.Artifact(source, name)
+ source.artifacts = {name: artifact}
+ return artifact
+
class SerialisationTests(unittest.TestCase):
def setUp(self):
- self.art1 = MockArtifact('name1')
- self.art2 = MockArtifact('name2')
- self.art3 = MockArtifact('name3')
- self.art4 = MockArtifact('name4')
+ self.art1 = mock_artifact('name1', 'chunk')
+ self.art2 = mock_artifact('name2', 'chunk')
+ self.art3 = mock_artifact('name3', 'stratum')
+ self.art4 = mock_artifact('name4', 'system')
def assertEqualMorphologies(self, a, b):
self.assertEqual(sorted(a.keys()), sorted(b.keys()))
@@ -97,9 +104,11 @@ class SerialisationTests(unittest.TestCase):
self.assertEqual(a.name, b.name)
self.assertEqual(a.cache_id, b.cache_id)
self.assertEqual(a.cache_key, b.cache_key)
- self.assertEqual(len(a.dependencies), len(b.dependencies))
- for i in range(len(a.dependencies)):
- self.assertEqualArtifacts(a.dependencies[i], b.dependencies[i])
+ self.assertEqual(len(a.source.dependencies),
+ len(b.source.dependencies))
+ for i in range(len(a.source.dependencies)):
+ self.assertEqualArtifacts(a.source.dependencies[i],
+ b.source.dependencies[i])
def verify_round_trip(self, artifact):
encoded = distbuild.serialise_artifact(artifact)
@@ -128,21 +137,21 @@ class SerialisationTests(unittest.TestCase):
self.verify_round_trip(self.art1)
def test_works_with_single_dependency(self):
- self.art1.dependencies = [self.art2]
+ self.art1.source.dependencies = [self.art2]
self.verify_round_trip(self.art1)
def test_works_with_two_dependencies(self):
- self.art1.dependencies = [self.art2, self.art3]
+ self.art1.source.dependencies = [self.art2, self.art3]
self.verify_round_trip(self.art1)
def test_works_with_two_levels_of_dependencies(self):
- self.art2.dependencies = [self.art4]
- self.art1.dependencies = [self.art2, self.art3]
+ self.art2.source.dependencies = [self.art4]
+ self.art1.source.dependencies = [self.art2, self.art3]
self.verify_round_trip(self.art1)
def test_works_with_dag(self):
- self.art2.dependencies = [self.art4]
- self.art3.dependencies = [self.art4]
- self.art1.dependencies = [self.art2, self.art3]
+ self.art2.source.dependencies = [self.art4]
+ self.art3.source.dependencies = [self.art4]
+ self.art1.source.dependencies = [self.art2, self.art3]
self.verify_round_trip(self.art1)