diff options
author | Richard Maw <richard.maw@codethink.co.uk> | 2013-08-07 11:55:25 +0000 |
---|---|---|
committer | Richard Maw <richard.maw@codethink.co.uk> | 2013-08-07 13:41:40 +0100 |
commit | 66291811c81ed21f5005ba35e68898c73edd88bd (patch) | |
tree | a2aefc7e7cb36a73d4c76da349796c3402bbcc20 /morphlib/morphologyfactory.py | |
parent | 6c0e0fb41df901771be8074d1e2603ceb26a3926 (diff) | |
download | morph-66291811c81ed21f5005ba35e68898c73edd88bd.tar.gz |
morphologyfactory: refactor chunk bdeps exceptions
This creates a small exception hierarchy for failures to validate
stratum morphologies. This is currently a line rather than a tree,
but it will be expanded later in the patch series.
This also adds test coverage for chunk build dependencies being
omitted.
Diffstat (limited to 'morphlib/morphologyfactory.py')
-rw-r--r-- | morphlib/morphologyfactory.py | 19 |
1 files changed, 13 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 |