diff options
author | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-04-17 13:35:06 +0100 |
---|---|---|
committer | Jannis Pohlmann <jannis.pohlmann@codethink.co.uk> | 2012-04-17 13:35:30 +0100 |
commit | 75adcd50b5565b45e80688244521702bb6fa6c2a (patch) | |
tree | 752f59a2fab033d7ff4665f8b98d9ac15633230c /morphlib | |
parent | 9d00fd2ad6299cdfd6ac240b921ebaf48f698178 (diff) | |
download | morph-75adcd50b5565b45e80688244521702bb6fa6c2a.tar.gz |
Add original_name member to CachedRepo. Use it for SourcePool lookups.
This is done to avoid a nasty mix of SourcePool lookups using CachedRepo
objects (e.g. for strata within a system) versus lookups using repo names
(e.g for sources within a stratum).
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/artifactresolver.py | 4 | ||||
-rw-r--r-- | morphlib/artifactresolver_tests.py | 86 | ||||
-rw-r--r-- | morphlib/buildgraph.py | 4 | ||||
-rw-r--r-- | morphlib/buildgraph_tests.py | 101 | ||||
-rw-r--r-- | morphlib/cachedrepo.py | 5 | ||||
-rw-r--r-- | morphlib/cachedrepo_tests.py | 7 | ||||
-rw-r--r-- | morphlib/cachekeycomputer_tests.py | 3 | ||||
-rw-r--r-- | morphlib/source.py | 4 | ||||
-rw-r--r-- | morphlib/sourcepool.py | 12 | ||||
-rw-r--r-- | morphlib/sourcepool_tests.py | 13 |
10 files changed, 137 insertions, 102 deletions
diff --git a/morphlib/artifactresolver.py b/morphlib/artifactresolver.py index 808f7119..56da8e8c 100644 --- a/morphlib/artifactresolver.py +++ b/morphlib/artifactresolver.py @@ -157,7 +157,7 @@ class ArtifactResolver(object): for stratum_name in system.source.morphology['strata']: source = self._source_pool.lookup( - system.source.repo, + system.source.repo.original_name, system.source.original_ref, '%s.morph' % stratum_name) @@ -179,7 +179,7 @@ class ArtifactResolver(object): if stratum.source.morphology['build-depends']: for stratum_name in stratum.source.morphology['build-depends']: other_source = self._source_pool.lookup( - stratum.source.repo, + stratum.source.repo.original_name, stratum.source.original_ref, '%s.morph' % stratum_name) diff --git a/morphlib/artifactresolver_tests.py b/morphlib/artifactresolver_tests.py index d77ff5bb..eba8c80a 100644 --- a/morphlib/artifactresolver_tests.py +++ b/morphlib/artifactresolver_tests.py @@ -94,6 +94,8 @@ class FakeStratumMorphology(morphlib.morph2.Morphology): class ArtifactResolverTests(unittest.TestCase): def setUp(self): + self.repo = morphlib.cachedrepo.CachedRepo( + 'repo', 'git://foo.bar/repo.git', '/foo/bar/repo') self.cache_key_computer = FakeCacheKeyComputer() self.resolver = morphlib.artifactresolver.ArtifactResolver( self.cache_key_computer) @@ -108,7 +110,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk') source = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(source) artifacts = self.resolver.resolve_artifacts(pool) @@ -126,7 +128,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk', ['chunk-runtime']) source = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(source) artifacts = self.resolver.resolve_artifacts(pool) @@ -143,7 +145,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk', ['chunk-runtime', 'chunk-devel']) source = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(source) artifacts = self.resolver.resolve_artifacts(pool) @@ -173,7 +175,7 @@ class ArtifactResolverTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'foo.morph') + self.repo, 'original/ref', 'sha1', morph, 'foo.morph') pool.add(stratum) artifacts = self.resolver.resolve_artifacts(pool) @@ -195,7 +197,7 @@ class ArtifactResolverTests(unittest.TestCase): } ''') system = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'foo.morph') + self.repo, 'original/ref', 'sha1', morph, 'foo.morph') pool.add(system) artifacts = self.resolver.resolve_artifacts(pool) @@ -211,13 +213,13 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk') chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) morph = FakeStratumMorphology( 'stratum', [('chunk', 'chunk', 'repo', 'ref')]) stratum = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum.morph') + self.repo, 'ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) artifacts = self.resolver.resolve_artifacts(pool) @@ -241,7 +243,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk', ['chunk-devel', 'chunk-runtime']) chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) morph = FakeStratumMorphology( @@ -250,7 +252,7 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk-runtime', 'chunk', 'repo', 'ref') ]) stratum = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum.morph') + self.repo, 'ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) artifacts = self.resolver.resolve_artifacts(pool) @@ -281,7 +283,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk', ['chunk-devel', 'chunk-runtime']) chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) morph = FakeStratumMorphology( @@ -289,7 +291,7 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk-runtime', 'chunk', 'repo', 'ref') ]) stratum = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum.morph') + self.repo, 'ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) artifacts = self.resolver.resolve_artifacts(pool) @@ -313,12 +315,12 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('foo') foo_chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'foo.morph') + self.repo, 'ref', 'sha1', morph, 'foo.morph') pool.add(foo_chunk) morph = FakeChunkMorphology('bar') bar_chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'bar.morph') + self.repo, 'ref', 'sha1', morph, 'bar.morph') pool.add(bar_chunk) morph = FakeStratumMorphology( @@ -327,7 +329,7 @@ class ArtifactResolverTests(unittest.TestCase): ('bar', 'bar', 'repo', 'ref') ]) stratum = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum.morph') + self.repo, 'ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) artifacts = self.resolver.resolve_artifacts(pool) @@ -358,12 +360,12 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeStratumMorphology('stratum1') stratum1 = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum1.morph') + self.repo, 'ref', 'sha1', morph, 'stratum1.morph') pool.add(stratum1) morph = FakeStratumMorphology('stratum2', [], ['stratum1']) stratum2 = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum2.morph') + self.repo, 'ref', 'sha1', morph, 'stratum2.morph') pool.add(stratum2) artifacts = self.resolver.resolve_artifacts(pool) @@ -387,7 +389,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeStratumMorphology('stratum1') stratum1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum1.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum1.morph') pool.add(stratum1) morph = FakeStratumMorphology( @@ -396,17 +398,17 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk2', 'chunk2', 'repo', 'original/ref') ], ['stratum1']) stratum2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum2.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum2.morph') pool.add(stratum2) morph = FakeChunkMorphology('chunk1') chunk1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk1.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk1.morph') pool.add(chunk1) morph = FakeChunkMorphology('chunk2') chunk2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk2.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk2.morph') pool.add(chunk2) artifacts = self.resolver.resolve_artifacts(pool) @@ -445,7 +447,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeStratumMorphology('stratum1') stratum1 = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum1.morph') + self.repo, 'ref', 'sha1', morph, 'stratum1.morph') pool.add(stratum1) morph = morphlib.morph2.Morphology( @@ -460,12 +462,12 @@ class ArtifactResolverTests(unittest.TestCase): } ''') system = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'system.morph') + self.repo, 'ref', 'sha1', morph, 'system.morph') pool.add(system) morph = FakeStratumMorphology('stratum2', [], ['stratum1']) stratum2 = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum2.morph') + self.repo, 'ref', 'sha1', morph, 'stratum2.morph') pool.add(stratum2) artifacts = self.resolver.resolve_artifacts(pool) @@ -525,22 +527,22 @@ class ArtifactResolverTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = FakeChunkMorphology('chunk1') chunk1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk1.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk1.morph') pool.add(chunk1) morph = FakeChunkMorphology('chunk2') chunk2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk2.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk2.morph') pool.add(chunk2) morph = FakeChunkMorphology('chunk3') chunk3 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk3.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk3.morph') pool.add(chunk3) artifacts = self.resolver.resolve_artifacts(pool) @@ -579,7 +581,7 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeChunkMorphology('chunk') chunk = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'chunk.morph') + self.repo, 'ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) morph = FakeStratumMorphology( @@ -587,7 +589,7 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk-runtime', 'chunk', 'repo', 'ref') ]) stratum = morphlib.source.Source( - 'repo', 'ref', 'sha1', morph, 'stratum.morph') + self.repo, 'ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) self.assertRaises( @@ -599,12 +601,12 @@ class ArtifactResolverTests(unittest.TestCase): morph = FakeStratumMorphology('stratum1', [], ['stratum2']) stratum1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum1.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum1.morph') pool.add(stratum1) morph = FakeStratumMorphology('stratum2', [], ['stratum1']) stratum2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum2.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum2.morph') pool.add(stratum2) self.assertRaises(morphlib.artifactresolver.MutualDependencyError, @@ -619,7 +621,7 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk2', 'chunk2', 'repo', 'original/ref') ], []) stratum1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum1.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum1.morph') pool.add(stratum1) morph = FakeStratumMorphology( @@ -628,17 +630,17 @@ class ArtifactResolverTests(unittest.TestCase): ('chunk1', 'chunk1', 'repo', 'original/ref') ], ['stratum1']) stratum2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum2.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum2.morph') pool.add(stratum2) morph = FakeChunkMorphology('chunk1') chunk1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk1.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk1.morph') pool.add(chunk1) morph = FakeChunkMorphology('chunk2') chunk2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk2.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk2.morph') pool.add(chunk2) self.assertRaises(morphlib.artifactresolver.MutualDependencyError, @@ -675,12 +677,12 @@ class ArtifactResolverTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = FakeChunkMorphology('chunk') chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) artifacts = self.resolver.resolve_artifacts(pool) @@ -725,17 +727,17 @@ class ArtifactResolverTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = FakeChunkMorphology('chunk1') chunk1 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk1.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk1.morph') pool.add(chunk1) morph = FakeChunkMorphology('chunk2') chunk2 = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk2.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk2.morph') pool.add(chunk2) self.assertRaises(morphlib.artifactresolver.DependencyOrderError, @@ -760,12 +762,12 @@ class ArtifactResolverTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = FakeChunkMorphology('chunk') chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) self.assertRaises(morphlib.artifactresolver.DependencyFormatError, diff --git a/morphlib/buildgraph.py b/morphlib/buildgraph.py index d95e7bc1..444d5f5f 100644 --- a/morphlib/buildgraph.py +++ b/morphlib/buildgraph.py @@ -69,7 +69,7 @@ class BuildGraph(object): def _realise_system_dependencies(self, system, queue, source_pool): for stratum_name in system.morphology['strata']: stratum = source_pool.lookup( - system.repo, + system.repo.original_name, system.original_ref, '%s.morph' % stratum_name) @@ -82,7 +82,7 @@ class BuildGraph(object): if stratum.morphology['build-depends']: for stratum_name in stratum.morphology['build-depends']: other_stratum = source_pool.lookup( - stratum.repo, + stratum.repo.original_name, stratum.original_ref, '%s.morph' % stratum_name) strata.append(other_stratum) diff --git a/morphlib/buildgraph_tests.py b/morphlib/buildgraph_tests.py index 8ab32f78..d344592c 100644 --- a/morphlib/buildgraph_tests.py +++ b/morphlib/buildgraph_tests.py @@ -25,6 +25,7 @@ class BuildGraphTests(unittest.TestCase): def setUp(self): self.graph = morphlib.buildgraph.BuildGraph() + self.repo = morphlib.cachedrepo.CachedRepo('repo', 'url', 'path') def test_create_empty_build_order_for_empty_pool(self): pool = morphlib.sourcepool.SourcePool() @@ -46,7 +47,7 @@ class BuildGraphTests(unittest.TestCase): } ''') source = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'foo.morph') + self.repo, 'original/ref', 'sha1', morph, 'foo.morph') pool.add(source) order = self.graph.compute_build_order(pool) @@ -66,7 +67,7 @@ class BuildGraphTests(unittest.TestCase): } ''') source = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'foo.morph') + self.repo, 'original/ref', 'sha1', morph, 'foo.morph') pool.add(source) order = self.graph.compute_build_order(pool) @@ -86,7 +87,7 @@ class BuildGraphTests(unittest.TestCase): } ''') source = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'foo.morph') + self.repo, 'original/ref', 'sha1', morph, 'foo.morph') pool.add(source) order = self.graph.compute_build_order(pool) @@ -113,7 +114,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -128,7 +129,7 @@ class BuildGraphTests(unittest.TestCase): } ''') chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) order = self.graph.compute_build_order(pool) @@ -159,7 +160,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -174,7 +175,7 @@ class BuildGraphTests(unittest.TestCase): } ''') chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) order = self.graph.compute_build_order(pool) @@ -214,7 +215,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -225,7 +226,7 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -236,7 +237,7 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'second-chunk.morph') pool.add(second_chunk) morph = morphlib.morph2.Morphology( @@ -247,7 +248,7 @@ class BuildGraphTests(unittest.TestCase): } ''') third_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'third-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'third-chunk.morph') pool.add(third_chunk) order = self.graph.compute_build_order(pool) @@ -299,7 +300,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -310,7 +311,7 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -321,7 +322,7 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'second-chunk.morph') pool.add(second_chunk) morph = morphlib.morph2.Morphology( @@ -332,7 +333,7 @@ class BuildGraphTests(unittest.TestCase): } ''') third_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'third-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'third-chunk.morph') pool.add(third_chunk) order = self.graph.compute_build_order(pool) @@ -360,7 +361,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -374,7 +376,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) morph = morphlib.morph2.Morphology( @@ -388,7 +391,8 @@ class BuildGraphTests(unittest.TestCase): } ''') third_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'third-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'third-stratum.morph') pool.add(third_stratum) order = self.graph.compute_build_order(pool) @@ -414,7 +418,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -440,7 +445,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) morph = morphlib.morph2.Morphology( @@ -451,7 +457,7 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -462,7 +468,7 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'second-chunk.morph') pool.add(second_chunk) order = self.graph.compute_build_order(pool) @@ -492,7 +498,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -503,7 +510,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) morph = morphlib.morph2.Morphology( @@ -518,7 +526,7 @@ class BuildGraphTests(unittest.TestCase): } ''') system = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'system.morph') + self.repo, 'original/ref', 'sha1', morph, 'system.morph') pool.add(system) order = self.graph.compute_build_order(pool) @@ -546,7 +554,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -560,7 +569,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) self.assertRaises(morphlib.buildgraph.MutualDependencyError, @@ -589,7 +599,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -615,7 +626,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) morph = morphlib.morph2.Morphology( @@ -626,7 +638,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -637,7 +650,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-chunk.morph') pool.add(second_chunk) self.assertRaises(morphlib.buildgraph.MutualDependencyError, @@ -677,7 +691,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-stratum.morph') pool.add(first_stratum) morph = morphlib.morph2.Morphology( @@ -703,7 +718,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-stratum.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-stratum.morph') pool.add(second_stratum) morph = morphlib.morph2.Morphology( @@ -714,7 +730,8 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, + 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -725,7 +742,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, + 'second-chunk.morph') pool.add(second_chunk) morph = morphlib.morph2.Morphology( @@ -736,7 +754,8 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'third-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, + 'third-chunk.morph') pool.add(second_chunk) self.assertRaises(morphlib.buildgraph.CyclicDependencyChainError, @@ -768,7 +787,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -779,7 +798,7 @@ class BuildGraphTests(unittest.TestCase): } ''') first_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'first-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'first-chunk.morph') pool.add(first_chunk) morph = morphlib.morph2.Morphology( @@ -790,7 +809,7 @@ class BuildGraphTests(unittest.TestCase): } ''') second_chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'second-chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'second-chunk.morph') pool.add(second_chunk) self.assertRaises(morphlib.buildgraph.DependencyOrderError, @@ -815,7 +834,7 @@ class BuildGraphTests(unittest.TestCase): } ''') stratum = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'stratum.morph') + self.repo, 'original/ref', 'sha1', morph, 'stratum.morph') pool.add(stratum) morph = morphlib.morph2.Morphology( @@ -826,7 +845,7 @@ class BuildGraphTests(unittest.TestCase): } ''') chunk = morphlib.source.Source( - 'repo', 'original/ref', 'sha1', morph, 'chunk.morph') + self.repo, 'original/ref', 'sha1', morph, 'chunk.morph') pool.add(chunk) self.assertRaises(morphlib.buildgraph.DependencyFormatError, diff --git a/morphlib/cachedrepo.py b/morphlib/cachedrepo.py index 37c53c7b..5dc7e55d 100644 --- a/morphlib/cachedrepo.py +++ b/morphlib/cachedrepo.py @@ -74,9 +74,10 @@ class CachedRepo(object): ''' - def __init__(self, url, path): - '''Creates a new CachedRepo for a given repo URL and local path.''' + def __init__(self, original_name, url, path): + '''Creates a new CachedRepo for a repo name, URL and local path.''' + self.original_name = original_name self.url = url self.path = path self.ex = morphlib.execute.Execute(self.path, logging.debug) diff --git a/morphlib/cachedrepo_tests.py b/morphlib/cachedrepo_tests.py index af2b81fa..72624f36 100644 --- a/morphlib/cachedrepo_tests.py +++ b/morphlib/cachedrepo_tests.py @@ -80,9 +80,11 @@ class CachedRepoTests(unittest.TestCase): raise morphlib.execute.CommandFailure('git remote update origin', '') def setUp(self): + self.repo_name = 'foo' self.repo_url = 'git://foo.bar/foo.git' self.repo_path = '/tmp/foo' - self.repo = cachedrepo.CachedRepo(self.repo_url, self.repo_path) + self.repo = cachedrepo.CachedRepo( + self.repo_name, self.repo_url, self.repo_path) self.repo._show_ref = self.show_ref self.repo._rev_list = self.rev_list self.repo._cat_file = self.cat_file @@ -93,7 +95,8 @@ class CachedRepoTests(unittest.TestCase): def tearDown(self): self.tempdir.remove() - def test_constructor_sets_url_and_path(self): + def test_constructor_sets_name_and_url_and_path(self): + self.assertEqual(self.repo.original_name, self.repo_name) self.assertEqual(self.repo.url, self.repo_url) self.assertEqual(self.repo.path, self.repo_path) diff --git a/morphlib/cachekeycomputer_tests.py b/morphlib/cachekeycomputer_tests.py index 923cc9f9..f9ffb387 100644 --- a/morphlib/cachekeycomputer_tests.py +++ b/morphlib/cachekeycomputer_tests.py @@ -81,7 +81,8 @@ class CacheKeyComputerTests(unittest.TestCase): ] }''', }.iteritems(): - source = morphlib.source.Source('repo', 'original/ref', 'sha', + repo = morphlib.cachedrepo.CachedRepo('repo', 'url', 'path') + source = morphlib.source.Source(repo, 'original/ref', 'sha', morphlib.morph2.Morphology(text), name) pool.add(source) self.sources[name] = source diff --git a/morphlib/source.py b/morphlib/source.py index 22676f02..dc535a55 100644 --- a/morphlib/source.py +++ b/morphlib/source.py @@ -57,4 +57,6 @@ class Source(object): return source in self.dependencies def __str__(self): # pragma: no cover - return '%s|%s|%s' % (self.repo, self.original_ref, self.filename) + return '%s|%s|%s' % (self.repo.original_name, + self.original_ref, + self.filename) diff --git a/morphlib/sourcepool.py b/morphlib/sourcepool.py index fe6bf9e9..0f144ef2 100644 --- a/morphlib/sourcepool.py +++ b/morphlib/sourcepool.py @@ -22,23 +22,25 @@ class SourcePool(object): self._sources = {} self._order = [] - def _key(self, repo, original_ref, filename): - return (repo, original_ref, filename) + def _key(self, reponame, original_ref, filename): + return (reponame, original_ref, filename) def add(self, source): '''Add a source to the pool.''' - key = self._key(source.repo, source.original_ref, source.filename) + key = self._key(source.repo.original_name, + source.original_ref, + source.filename) self._sources[key] = source self._order.append(source) - def lookup(self, repo, original_ref, filename): + def lookup(self, reponame, original_ref, filename): '''Find a source in the pool. Raise KeyError if it is not found. ''' - key = self._key(repo, original_ref, filename) + key = self._key(reponame, original_ref, filename) return self._sources[key] def __iter__(self): diff --git a/morphlib/sourcepool_tests.py b/morphlib/sourcepool_tests.py index 5ed5be4d..60f09dfc 100644 --- a/morphlib/sourcepool_tests.py +++ b/morphlib/sourcepool_tests.py @@ -22,7 +22,8 @@ import morphlib class DummySource(object): def __init__(self): - self.repo = 'dummy.repo' + self.repo = morphlib.cachedrepo.CachedRepo( + 'repo', 'repo url', 'repo path') self.original_ref = 'original/ref' self.sha1 = 'dummy.sha1' self.filename = 'dummy.morph' @@ -47,13 +48,17 @@ class SourcePoolTests(unittest.TestCase): def test_looks_up_source(self): self.pool.add(self.source) - result = self.pool.lookup(self.source.repo, self.source.original_ref, + result = self.pool.lookup(self.source.repo.original_name, + self.source.original_ref, self.source.filename) self.assertEqual(result, self.source) def test_lookup_raises_keyerror_if_not_found(self): - self.assertRaises(KeyError, self.pool.lookup, self.source.repo, - self.source.original_ref, self.source.filename) + self.assertRaises(KeyError, + self.pool.lookup, + self.source.repo.original_name, + self.source.original_ref, + self.source.filename) def test_iterates_in_add_order(self): sources = [] |