diff options
author | Javier Jardón <javier.jardon@codethink.co.uk> | 2015-02-24 21:38:50 +0000 |
---|---|---|
committer | Javier Jardón <javier.jardon@codethink.co.uk> | 2015-02-27 18:42:52 +0000 |
commit | da638bab2c09c7eea91ce7c60cbbe0f551ccd60a (patch) | |
tree | 7a683ae4f0ce4b53519b63c3e3290dc5b08b97bf | |
parent | 6efb96db7e3bbac7ee76533b1c6484c0fa490235 (diff) | |
download | morph-da638bab2c09c7eea91ce7c60cbbe0f551ccd60a.tar.gz |
morphlib/sourceresolver.py: Be sure VERSION file is a valid YAML file
-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() |