summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-17 13:35:06 +0100
committerJannis Pohlmann <jannis.pohlmann@codethink.co.uk>2012-04-17 13:35:30 +0100
commit75adcd50b5565b45e80688244521702bb6fa6c2a (patch)
tree752f59a2fab033d7ff4665f8b98d9ac15633230c
parent9d00fd2ad6299cdfd6ac240b921ebaf48f698178 (diff)
downloadmorph-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).
-rw-r--r--morphlib/artifactresolver.py4
-rw-r--r--morphlib/artifactresolver_tests.py86
-rw-r--r--morphlib/buildgraph.py4
-rw-r--r--morphlib/buildgraph_tests.py101
-rw-r--r--morphlib/cachedrepo.py5
-rw-r--r--morphlib/cachedrepo_tests.py7
-rw-r--r--morphlib/cachekeycomputer_tests.py3
-rw-r--r--morphlib/source.py4
-rw-r--r--morphlib/sourcepool.py12
-rw-r--r--morphlib/sourcepool_tests.py13
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 = []