Skip to content

Commit

Permalink
internal/filetypes: default strictFeatures to true
Browse files Browse the repository at this point in the history
In general in JSON Schema we want to ignore keywords which
aren't defined, but it seems better to default to giving an error
when there's a keyword that we know is not implemented,
meaning that the schema cannot be interpreted correctly.

To revert to previous behavior, `jsonschema+strictFeatures=0:`
can be used.

Signed-off-by: Roger Peppe <[email protected]>
Change-Id: I65d24ae8c147d36499b4e02b418bedcc6d1a376b
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1200932
Reviewed-by: Daniel Martí <[email protected]>
TryBot-Result: CUEcueckoo <[email protected]>
Unity-Result: CUE porcuepine <[email protected]>
  • Loading branch information
rogpeppe committed Sep 10, 2024
1 parent 2f82fb4 commit 15fbf7f
Show file tree
Hide file tree
Showing 4 changed files with 26 additions and 7 deletions.
7 changes: 4 additions & 3 deletions cmd/cue/cmd/help.go
Original file line number Diff line number Diff line change
Expand Up @@ -613,14 +613,15 @@ The following tags are only valid in combination with other tags,
and influence the functioning of the codec. The tag they are
valid with is mentioned in parentheses at the end.
strictFeatures report errors for lossy mappings (jsonschema)
strictFeatures report errors for lossy mappings. Enabled by default (jsonschema)
strictKeywords report errors for unknown keywords (jsonschema)
strict report errors for either of the above (jsonschema)
The above flags also accept a boolean flag value (e.g. true, 1, false, 0)
to set them explicitly. For example:
to set them explicitly. For example, to ignore unimplemented JSON Schema
features rather than giving an error:
jsonschema+strictKeywords=0+strictFeatures=1
jsonschema+strictFeatures=0
Many commands also support the --out and --outfile/-o flags.
The --out flag specifies the output type using a qualifier
Expand Down
5 changes: 4 additions & 1 deletion cmd/cue/cmd/testdata/script/def_jsonschema.txtar
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,10 @@ cmp stdout expect-stdout
exec cue def schema.json -p schema -l '#Person:'
cmp stdout expect-stdout

exec cue def jsonschema: bad.json
! exec cue def jsonschema: bad.json
cmp stderr expect-stderr-strict-features

exec cue def jsonschema+strictFeatures=0: bad.json

! exec cue def jsonschema: bad.json --strict
cmp stderr expect-stderr
Expand Down
19 changes: 17 additions & 2 deletions internal/filetypes/filetypes_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -181,7 +181,7 @@ func TestFromFile(t *testing.T) {
Form: build.Schema,
BoolTags: map[string]bool{
"strict": false,
"strictFeatures": false,
"strictFeatures": true,
"strictKeywords": false,
},
},
Expand Down Expand Up @@ -419,7 +419,7 @@ func TestParseArgs(t *testing.T) {
Interpretation: "jsonschema",
BoolTags: map[string]bool{
"strict": false,
"strictFeatures": false,
"strictFeatures": true,
"strictKeywords": false,
},
},
Expand All @@ -439,6 +439,21 @@ func TestParseArgs(t *testing.T) {
},
},
},
}, {
in: "jsonschema+strictFeatures=0: bar.schema",
out: []*build.File{
{
Filename: "bar.schema",
Encoding: "json",
Interpretation: "jsonschema",
Form: build.Schema,
BoolTags: map[string]bool{
"strict": false,
"strictFeatures": false,
"strictKeywords": false,
},
},
},
}, {
in: `json: c:\foo.json c:\path\to\file.dat`,
out: []*build.File{
Expand Down
2 changes: 1 addition & 1 deletion internal/filetypes/types.cue
Original file line number Diff line number Diff line change
Expand Up @@ -297,7 +297,7 @@ interpretations: jsonschema: {
boolTags: {
strict: *false | bool
strictKeywords: *strict | bool
strictFeatures: *strict | bool
strictFeatures: *true | bool
}
}

Expand Down

0 comments on commit 15fbf7f

Please sign in to comment.