diff options
-rw-r--r-- | morphlib/sourceresolver.py | 11 |
1 files changed, 11 insertions, 0 deletions
diff --git a/morphlib/sourceresolver.py b/morphlib/sourceresolver.py index 41f7c11a..0489a4ec 100644 --- a/morphlib/sourceresolver.py +++ b/morphlib/sourceresolver.py @@ -21,6 +21,7 @@ import os import pylru import shutil import tempfile +import yaml import cliapp @@ -83,6 +84,11 @@ class PickleCacheManager(object): # pragma: no cover class SourceResolverError(cliapp.AppException): pass +class FileNotYamlError(SourceResolverError): # pragma: no cover + def __init__(self, filename, errmsg): + SourceResolverError.__init__( + self, "Syntax error in filename %s:\n%s" % filename, errmsg) + class VersionNotFoundError(SourceResolverError): # pragma: no cover def __init__(self): SourceResolverError.__init__( @@ -357,6 +363,11 @@ class SourceResolver(object): if version is None: raise VersionNotFoundError() + try: + obj = yaml.safe_load(version) + except yaml.error.YAMLError as e: + raise FileNotYamlError(morph_filename, e) + while definitions_queue: filename = definitions_queue.popleft() |