summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-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()