diff options
Diffstat (limited to 'morphlib')
-rw-r--r-- | morphlib/morphologyfactory.py | 19 | ||||
-rw-r--r-- | morphlib/morphologyfactory_tests.py | 17 |
2 files changed, 30 insertions, 6 deletions
diff --git a/morphlib/morphologyfactory.py b/morphlib/morphologyfactory.py index d0d9ea04..394d186a 100644 --- a/morphlib/morphologyfactory.py +++ b/morphlib/morphologyfactory.py @@ -36,6 +36,17 @@ class NotcachedError(MorphologyFactoryError): "remote cache specified" % repo_name) +class StratumError(MorphologyFactoryError): + pass + + +class NoChunkBuildDependsError(StratumError): + def __init__(self, stratum, chunk): + StratumError.__init__( + self, 'No build dependencies in stratum %s for chunk %s ' + '(build-depends is a mandatory field)' % (stratum, chunk)) + + class MorphologyFactory(object): '''An way of creating morphologies which will provide a default''' @@ -136,14 +147,10 @@ class MorphologyFactory(object): def _check_and_tweak_stratum(self, morphology, reponame, sha1, filename): '''Check and tweak a stratum morphology.''' - for source in morphology['chunks']: # pragma: no cover + for source in morphology['chunks']: if source.get('build-depends', None) is None: name = source.get('name', source.get('repo', 'unknown')) - raise morphlib.Error('No build dependencies ' - 'stratum %s for chunk %s ' - '(build-depends is a mandatory ' - 'field)' % - (filename, name)) + raise NoChunkBuildDependsError(filename, name) morphology.builds_artifacts = [morphology['name']] morphology.needs_artifact_metadata_cached = True diff --git a/morphlib/morphologyfactory_tests.py b/morphlib/morphologyfactory_tests.py index b1a6a621..7a3dc343 100644 --- a/morphlib/morphologyfactory_tests.py +++ b/morphlib/morphologyfactory_tests.py @@ -59,6 +59,18 @@ class FakeLocalRepo(object): "name": "stratum", "kind": "stratum" }''', + 'stratum-no-chunk-bdeps.morph': '''{ + "name": "stratum-no-chunk-bdeps", + "kind": "stratum", + "chunks": [ + { + "name": "chunk", + "repo": "test:repo", + "ref": "sha1", + "build-mode": "bootstrap" + } + ] + }''', 'system.morph': '''{ "name": "system", "kind": "system", @@ -261,3 +273,8 @@ class MorphologyFactoryTests(unittest.TestCase): self.assertRaises(morphlib.Error, self.mf.get_morphology, 'reponame', 'sha1', 'parse-error.morph') + def test_fails_on_no_chunk_bdeps(self): + self.assertRaises(morphlib.morphologyfactory.NoChunkBuildDependsError, + self.mf.get_morphology, 'reponame', 'sha1', + 'stratum-no-chunk-bdeps.morph') + |