summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorTodd Gamblin <tgamblin@llnl.gov>2016-01-14 12:00:33 -0800
committerTodd Gamblin <tgamblin@llnl.gov>2016-01-14 12:00:44 -0800
commitd869d8e86fcabfd04121806c8c1554a00cc5339c (patch)
tree6c3b6d9f251dbaddb772c74d961a9b64461e285f /lib
parentb567cb57e1c74dcb876b0ed935295a848ec45438 (diff)
downloadspack-d869d8e86fcabfd04121806c8c1554a00cc5339c.tar.gz
spack-d869d8e86fcabfd04121806c8c1554a00cc5339c.tar.bz2
spack-d869d8e86fcabfd04121806c8c1554a00cc5339c.tar.xz
spack-d869d8e86fcabfd04121806c8c1554a00cc5339c.zip
add sanity check on config write as well as validation on read.
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/config.py6
1 files changed, 6 insertions, 0 deletions
diff --git a/lib/spack/spack/config.py b/lib/spack/spack/config.py
index e57aa75f8e..193b311434 100644
--- a/lib/spack/spack/config.py
+++ b/lib/spack/spack/config.py
@@ -297,7 +297,10 @@ class ConfigScope(object):
try:
mkdirp(self.path)
with open(filename, 'w') as f:
+ validate_section(data, section_schemas[section])
syaml.dump(data, stream=f, default_flow_style=False)
+ except jsonschema.ValidationError as e:
+ raise ConfigSanityError(e, data)
except (yaml.YAMLError, IOError) as e:
raise ConfigFileError("Error writing to config file: '%s'" % str(e))
@@ -533,3 +536,6 @@ class ConfigFormatError(ConfigError):
message = '%s: %s' % (location, validation_error.message)
super(ConfigError, self).__init__(message)
+
+class ConfigSanityError(ConfigFormatError):
+ """Same as ConfigFormatError, raised when config is written by Spack."""