Skip to content

Commit 854c5fb

Browse files
authored
Merge pull request #3314 from vkarak/enhancement/compact-config-error
[enhancement] Issue a more compact message when JSON schema validation fails
2 parents d7b8a1e + a538b71 commit 854c5fb

File tree

5 files changed

+12
-11
lines changed

5 files changed

+12
-11
lines changed

reframe/core/config.py

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -447,8 +447,10 @@ def validate(self):
447447
try:
448448
jsonschema.validate(site_config, self._schema)
449449
except jsonschema.ValidationError as e:
450-
raise ConfigError(f"could not validate configuration files: "
451-
f"'{self._sources}'") from e
450+
getlogger().debug(str(e))
451+
sources = ', '.join(f'`{f}`' for f in self._sources)
452+
raise ConfigError('could not validate configuration files: '
453+
f'{sources}') from e
452454

453455
def _warn_variables(config, opt_path):
454456
opt_path = '/'.join(opt_path + ['variables'])

reframe/core/exceptions.py

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@
88
#
99

1010
import inspect
11+
import jsonschema
1112
import os
1213

1314
import reframe
@@ -54,7 +55,10 @@ def message(self):
5455
def __str__(self):
5556
ret = self._message or ''
5657
if self.__cause__ is not None:
57-
ret += ': ' + str(self.__cause__)
58+
if isinstance(self.__cause__, jsonschema.ValidationError):
59+
ret += ': ' + self.__cause__.message
60+
else:
61+
ret += ': ' + str(self.__cause__)
5862

5963
return ret
6064

reframe/frontend/autodetect.py

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -106,6 +106,7 @@ def _load_info(filename, schema=None):
106106
)
107107
return {}
108108
except jsonschema.ValidationError as e:
109+
getlogger().debug(str(e))
109110
raise ConfigError(
110111
f'could not validate meta-config file {filename!r}'
111112
) from e

reframe/frontend/reporting/__init__.py

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -215,12 +215,12 @@ def _restore_session(filename):
215215
except KeyError:
216216
found_ver = 'n/a'
217217

218-
getlogger().verbose(f'JSON validation error: {e}')
218+
getlogger().debug(str(e))
219219
raise ReframeError(
220220
f'failed to validate report {filename!r}: {e.args[0]} '
221221
f'(check report data version: required {DATA_VERSION}, '
222222
f'found: {found_ver})'
223-
) from None
223+
) from e
224224

225225
return _RestoredSessionInfo(report)
226226

unittests/resources/config/settings.py

Lines changed: 0 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -226,12 +226,6 @@ def hostname():
226226
'modules': ['PrgEnv-cray'],
227227
'features': ['cxx14', 'mpi'],
228228
},
229-
{
230-
'name': 'builtin',
231-
'cc': 'cc',
232-
'cxx': '',
233-
'ftn': ''
234-
},
235229
{
236230
'name': 'e0',
237231
'modules': ['m0']

0 commit comments

Comments
 (0)