From 10cc7833069b5d4a9a1da77fae161cd20446b101 Mon Sep 17 00:00:00 2001 From: Richard Maw Date: Wed, 5 Nov 2014 13:07:24 +0000 Subject: Validate run-depends values --- morphlib/morphloader.py | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/morphlib/morphloader.py b/morphlib/morphloader.py index 9c3e82bc..03267566 100644 --- a/morphlib/morphloader.py +++ b/morphlib/morphloader.py @@ -500,7 +500,7 @@ class MorphologyLoader(object): names.add(name) # Validate stratum spec fields - self._validate_stratum_specs_fields(morph, 'strata') + self._validate_stratum_specs_fields(morph, morph.get('strata') or []) # We allow the ARMv7 little-endian architecture to be specified # as armv7 and armv7l. Normalise. @@ -551,7 +551,8 @@ class MorphologyLoader(object): morph['name'], morph.filename) # Validate build-dependencies if specified - self._validate_stratum_specs_fields(morph, 'build-depends') + self._validate_stratum_specs_fields(morph, + morph.get('build-depends') or []) # Require build-dependencies for each chunk. for spec in morph['chunks']: @@ -565,6 +566,16 @@ class MorphologyLoader(object): raise NoBuildDependenciesError( morph['name'], chunk_name, morph.filename) + # Validate run-depends if specified + if 'run-depends' in morph: + rundep_map = morph['run-depends'] + if not isinstance(rundep_map, dict): + raise InvalidTypeError( + 'run-depends', dict, type(rundep_map), + morph['name']) + for rundeps in rundep_map.itervalues(): + self._validate_stratum_specs_fields(morph, rundeps) + @classmethod def _validate_chunk(cls, morphology): errors = [] @@ -650,8 +661,8 @@ class MorphologyLoader(object): stacklevel=2) @classmethod - def _validate_stratum_specs_fields(cls, morphology, specs_field): - for spec in morphology.get(specs_field, None) or []: + def _validate_stratum_specs_fields(cls, morphology, specs): + for spec in specs: for obsolete_field in ('repo', 'ref'): if obsolete_field in spec: cls._warn_obsolete_field(morphology, spec, obsolete_field) -- cgit v1.2.1