-
Notifications
You must be signed in to change notification settings - Fork 22
Open
Description
Given the following schema.yaml
file :
$id: 'https://api.apiture.com/schemas/systemIdentityChallenges'
$schema: 'https://json-schema.org/draft/2020-12/schema'
$defs:
nested:
title: Nested
description: Nested within outer.
type: object
unevaluatedProperties: false
required:
- foo
- bar
properties:
foo:
type: string
minLength: 2
maxLength: 80
bar:
type: string
minLength: 2
maxLength: 80
examples:
- foo: 'foo'
bar: 'bar'
outer:
title: Outer
type: object
unevaluatedProperties: false
required:
- a
properties:
a:
description: A nested object.
allOf:
- $ref: '#/$defs/nested'
b:
description: Another nested object.
allOf:
- $ref: '#/$defs/nested'
examples:
- a:
foo: 'foo'
bar: 'bar'
b:
foo: 'foo'
bar: false
frob: false
d:
foo: true
bar: 123
running
$ jsonschema version
9.2.4
$ jsonschema lint schema.yaml
shows the following:
Only include instances in the `examples` array that validate against the schema (blaze/valid_examples)
at schema location "/$defs/outer"
Invalid example instance at index 0
The value was expected to consist of a string of 2 to 80 characters
at instance location "/b/bar"
at evaluate path "/properties/b/allOf/0/$ref/properties/bar/type"
catches one error (wrong type on (examples[0].b.bar
-- boolean should be string)
but does not catch the unevaluated property examples[0].b.frob
if I fix examples[0].b.bar
(change false
to "bar"
)
I now see
Only include instances in the `examples` array that validate against the schema (blaze/valid_examples)
at schema location "/$defs/outer"
Invalid example instance at index 0
The object value was not expected to define the property "frob"
at instance location "/b/frob"
at evaluate path "/properties/b/allOf/0/$ref/unevaluatedProperties"
The object value was not expected to define unevaluated properties
at instance location "/b"
at evaluate path "/properties/b/allOf/0/$ref/unevaluatedProperties"
After fixing that (i.e. remove the extra property), running again yields a third error
Only include instances in the `examples` array that validate against the schema (blaze/valid_examples)
at schema location "/$defs/outer"
Invalid example instance at index 0
The object value was not expected to define the property "d"
at instance location "/d"
at evaluate path "/unevaluatedProperties"
The object value was not expected to define unevaluated properties
at instance location ""
at evaluate path "/unevaluatedProperties"
A better experience would be to list all errors, so one is not forced to
make n separate edits/corrections and run the tool n separate times to resolve all problems.
Metadata
Metadata
Assignees
Labels
No labels