summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJavier Jardón <javier.jardon@codethink.co.uk>2015-02-24 21:38:50 +0000
committerJavier Jardón <javier.jardon@codethink.co.uk>2015-02-27 18:42:52 +0000
commitda638bab2c09c7eea91ce7c60cbbe0f551ccd60a (patch)
tree7a683ae4f0ce4b53519b63c3e3290dc5b08b97bf
parent6efb96db7e3bbac7ee76533b1c6484c0fa490235 (diff)
downloadmorph-da638bab2c09c7eea91ce7c60cbbe0f551ccd60a.tar.gz
morphlib/sourceresolver.py: Be sure VERSION file is a valid YAML file
-rw-r--r--morphlib/sourceresolver.py11
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()