NLeSC / software.esciencecenter.nl

eStep website with projects software and people.
http://software.esciencecenter.nl
Other
4 stars 3 forks source link

Non-useful error message when using array instead of string #216

Open egpbos opened 7 years ago

egpbos commented 7 years ago

The validator gives a giant, illegible error message when a string field accidentally contains a list. For instance, I tried to use

contactPerson:
- /person/p.bos

instead of

contactPerson: /person/p.bos

This gave the error below. Note that it also doesn't mention the file in which the error was generated, making it even harder to track the error down.

Traceback (most recent call last):
  File "/home/patrick/miniconda2/envs/software.nlesc/bin/estep", line 9, in <module>
    load_entry_point('estep==1.0.0', 'console_scripts', 'estep')()
  File "build/bdist.linux-x86_64/egg/estep/script.py", line 309, in main
  File "build/bdist.linux-x86_64/egg/estep/script.py", line 114, in validate
  File "build/bdist.linux-x86_64/egg/estep/script.py", line 89, in validate_document
  File "build/bdist.linux-x86_64/egg/estep/validate.py", line 48, in iter_errors
  File "build/bdist.linux-x86_64/egg/estep/schema.py", line 154, in iter_errors
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors
    for error in errors:
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/_validators.py", line 291, in properties_draft4
    schema_path=property,
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/validators.py", line 114, in descend
    for error in self.iter_errors(instance, schema):
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors
    for error in errors:
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/_validators.py", line 351, in anyOf_draft4
    errs = list(validator.descend(instance, subschema, schema_path=index))
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/validators.py", line 114, in descend
    for error in self.iter_errors(instance, schema):
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/validators.py", line 98, in iter_errors
    for error in errors:
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/_validators.py", line 150, in format
    validator.format_checker.check(instance, format)
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/jsonschema/_format.py", line 74, in check
    result = func(instance)
  File "build/bdist.linux-x86_64/egg/estep/schema.py", line 110, in url_ref
  File "build/bdist.linux-x86_64/egg/estep/utils.py", line 99, in parse_url
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/rfc3987.py", line 453, in parse
    m = match(string, rule)
  File "/home/patrick/miniconda2/envs/software.nlesc/lib/python2.7/site-packages/rfc3987.py", line 417, in match
    return get_compiled_pattern('^%%(%s)s$' % rule).match(string)
TypeError: expected string or buffer