summaryrefslogtreecommitdiff
path: root/morphlib/morphologyfactory.py
diff options
context:
space:
mode:
authorRichard Maw <richard.maw@codethink.co.uk>2013-08-07 11:55:25 +0000
committerRichard Maw <richard.maw@codethink.co.uk>2013-08-07 13:41:40 +0100
commit66291811c81ed21f5005ba35e68898c73edd88bd (patch)
treea2aefc7e7cb36a73d4c76da349796c3402bbcc20 /morphlib/morphologyfactory.py
parent6c0e0fb41df901771be8074d1e2603ceb26a3926 (diff)
downloadmorph-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.py19
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