summaryrefslogtreecommitdiff
path: root/morphlib/artifactresolver_tests.py
diff options
context:
space:
mode:
Diffstat (limited to 'morphlib/artifactresolver_tests.py')
-rw-r--r--morphlib/artifactresolver_tests.py105
1 files changed, 82 insertions, 23 deletions
diff --git a/morphlib/artifactresolver_tests.py b/morphlib/artifactresolver_tests.py
index 6f62b4d1..e8f86f24 100644
--- a/morphlib/artifactresolver_tests.py
+++ b/morphlib/artifactresolver_tests.py
@@ -110,7 +110,8 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk')
source = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(source)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -129,7 +130,8 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk', ['chunk-foobar'])
source = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(source)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -147,7 +149,8 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk', ['chunk-baz', 'chunk-qux'])
source = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(source)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -167,13 +170,51 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk')
chunk = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(chunk)
morph = FakeStratumMorphology(
'stratum', chunks=[('chunk', 'chunk', 'repo', 'ref')])
stratum = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'stratum.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
+ pool.add(stratum)
+
+ artifacts = self.resolver.resolve_artifacts(pool)
+
+ self.assertEqual(len(artifacts),
+ sum(len(s.split_rules.artifacts) for s in pool))
+
+ stratum_artifacts = set(a for a in artifacts if a.source == stratum)
+ chunk_artifacts = set(a for a in artifacts if a.source == chunk)
+
+ for stratum_artifact in stratum_artifacts:
+ self.assertTrue(stratum_artifact.name.startswith('stratum'))
+ self.assertEqual(stratum_artifact.dependents, [])
+ self.assertTrue(any(dep in chunk_artifacts
+ for dep in stratum_artifact.dependencies))
+
+ for chunk_artifact in chunk_artifacts:
+ self.assertTrue(chunk_artifact.name.startswith('chunk'))
+ self.assertEqual(chunk_artifact.dependencies, [])
+ self.assertTrue(any(dep in stratum_artifacts
+ for dep in chunk_artifact.dependents))
+
+ def test_resolve_stratum_and_chunk_with_chunk_path(self):
+ pool = morphlib.sourcepool.SourcePool()
+
+ morph = FakeChunkMorphology('chunk')
+ chunk = morphlib.source.Source(
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
+ pool.add(chunk)
+
+ morph = FakeStratumMorphology(
+ 'stratum', chunks=[('chunk', 'chunk.morph', 'repo', 'ref')])
+ stratum = morphlib.source.Source(
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
pool.add(stratum)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -201,7 +242,8 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk', ['chunk-foo', 'chunk-bar'])
chunk = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(chunk)
morph = FakeStratumMorphology(
@@ -210,7 +252,8 @@ class ArtifactResolverTests(unittest.TestCase):
('chunk', 'chunk', 'repo', 'ref'),
])
stratum = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'stratum.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
pool.add(stratum)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -238,14 +281,16 @@ class ArtifactResolverTests(unittest.TestCase):
morph = FakeChunkMorphology('chunk1')
chunk1 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk1.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk1.morph', 'repo', 'ref')
pool.add(chunk1)
morph = FakeStratumMorphology(
'stratum1',
chunks=[('chunk1', 'chunk1', 'repo', 'original/ref')])
stratum1 = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'stratum1.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'stratum1.morph', 'repo', 'ref')
pool.add(stratum1)
morph = morphlib.morph2.Morphology(
@@ -269,12 +314,14 @@ class ArtifactResolverTests(unittest.TestCase):
''')
morph.builds_artifacts = ['system-rootfs']
system = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'system.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'system.morph', 'repo', 'ref')
pool.add(system)
morph = FakeChunkMorphology('chunk2')
chunk2 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk2.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk2.morph', 'repo', 'ref')
pool.add(chunk2)
morph = FakeStratumMorphology(
@@ -282,7 +329,8 @@ class ArtifactResolverTests(unittest.TestCase):
chunks=[('chunk2', 'chunk2', 'repo', 'original/ref')],
build_depends=[('stratum1', 'repo', 'ref')])
stratum2 = morphlib.source.Source(
- 'repo', 'ref', 'sha1', 'tree', morph, 'stratum2.morph')
+ 'repo', 'ref', 'sha1', 'tree', morph,
+ 'stratum2.morph', 'repo', 'ref')
pool.add(stratum2)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -369,22 +417,26 @@ class ArtifactResolverTests(unittest.TestCase):
''')
morph.builds_artifacts = ['stratum']
stratum = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'stratum.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
pool.add(stratum)
morph = FakeChunkMorphology('chunk1')
chunk1 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk1.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk1.morph', 'repo', 'ref')
pool.add(chunk1)
morph = FakeChunkMorphology('chunk2')
chunk2 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk2.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk2.morph', 'repo', 'ref')
pool.add(chunk2)
morph = FakeChunkMorphology('chunk3')
chunk3 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk3.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk3.morph', 'repo', 'ref')
pool.add(chunk3)
artifacts = self.resolver.resolve_artifacts(pool)
@@ -425,7 +477,8 @@ class ArtifactResolverTests(unittest.TestCase):
chunks=[],
build_depends=[('stratum2', 'repo', 'original/ref')])
stratum1 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'stratum1.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'stratum1.morph', 'repo', 'ref')
pool.add(stratum1)
morph = FakeStratumMorphology(
@@ -433,7 +486,8 @@ class ArtifactResolverTests(unittest.TestCase):
chunks=[],
build_depends=[('stratum1', 'repo', 'original/ref')])
stratum2 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'stratum2.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'stratum2.morph', 'repo', 'ref')
pool.add(stratum2)
self.assertRaises(morphlib.artifactresolver.MutualDependencyError,
@@ -466,17 +520,20 @@ class ArtifactResolverTests(unittest.TestCase):
''')
morph.builds_artifacts = ['stratum']
stratum = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'stratum.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
pool.add(stratum)
morph = FakeChunkMorphology('chunk1')
chunk1 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk1.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk1.morph', 'repo', 'ref')
pool.add(chunk1)
morph = FakeChunkMorphology('chunk2')
chunk2 = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk2.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk2.morph', 'repo', 'ref')
pool.add(chunk2)
self.assertRaises(morphlib.artifactresolver.DependencyOrderError,
@@ -502,12 +559,14 @@ class ArtifactResolverTests(unittest.TestCase):
''')
morph.builds_artifacts = ['stratum']
stratum = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'stratum.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'stratum.morph', 'repo', 'ref')
pool.add(stratum)
morph = FakeChunkMorphology('chunk')
chunk = morphlib.source.Source(
- 'repo', 'original/ref', 'sha1', 'tree', morph, 'chunk.morph')
+ 'repo', 'original/ref', 'sha1', 'tree', morph,
+ 'chunk.morph', 'repo', 'ref')
pool.add(chunk)
self.assertRaises(morphlib.artifactresolver.DependencyFormatError,