summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorPeter Scheibel <scheibel1@llnl.gov>2020-05-25 06:08:47 -0700
committerGitHub <noreply@github.com>2020-05-25 15:08:47 +0200
commit768fa6bc531379519b8bbf0222367083a37c7dd3 (patch)
tree04b67ec9abffe9458e4a4e1f2c09f75c3be1504d /lib
parenta3dc9cf848088360f8f9bd02e08b991b2ff93209 (diff)
downloadspack-768fa6bc531379519b8bbf0222367083a37c7dd3.tar.gz
spack-768fa6bc531379519b8bbf0222367083a37c7dd3.tar.bz2
spack-768fa6bc531379519b8bbf0222367083a37c7dd3.tar.xz
spack-768fa6bc531379519b8bbf0222367083a37c7dd3.zip
bugfix: schema errors without line numbers (#16765)
* account for schema validation errors where the associated instance doesn't have a line number * fix unrelated flake error (but it must be fixed because this PR touches this file and the flake rules have been updated since the last edit to this file)
Diffstat (limited to 'lib')
-rw-r--r--lib/spack/spack/environment.py12
1 files changed, 8 insertions, 4 deletions
diff --git a/lib/spack/spack/environment.py b/lib/spack/spack/environment.py
index 43e91073e3..8d3b1438e1 100644
--- a/lib/spack/spack/environment.py
+++ b/lib/spack/spack/environment.py
@@ -406,8 +406,12 @@ def validate(data, filename=None):
try:
spack.schema.Validator(spack.schema.env.schema).validate(validate_data)
except jsonschema.ValidationError as e:
+ if hasattr(e.instance, 'lc'):
+ line_number = e.instance.lc.line + 1
+ else:
+ line_number = None
raise spack.config.ConfigFormatError(
- e, data, filename, e.instance.lc.line + 1)
+ e, data, filename, line_number)
return validate_data
@@ -1445,9 +1449,9 @@ class Environment(object):
# The primary list is handled differently
continue
- active_yaml_lists = [l for l in yaml_dict.get('definitions', [])
- if name in l and
- _eval_conditional(l.get('when', 'True'))]
+ active_yaml_lists = [x for x in yaml_dict.get('definitions', [])
+ if name in x and
+ _eval_conditional(x.get('when', 'True'))]
# Remove any specs in yaml that are not in internal representation
for ayl in active_yaml_lists: