diff options
author | Todd Gamblin <tgamblin@llnl.gov> | 2016-01-14 12:00:33 -0800 |
---|---|---|
committer | Todd Gamblin <tgamblin@llnl.gov> | 2016-01-14 12:00:44 -0800 |
commit | d869d8e86fcabfd04121806c8c1554a00cc5339c (patch) | |
tree | 6c3b6d9f251dbaddb772c74d961a9b64461e285f /lib | |
parent | b567cb57e1c74dcb876b0ed935295a848ec45438 (diff) | |
download | spack-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.py | 6 |
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.""" |