this repo has no description
0
fork

Configure Feed

Select the types of activity you want to include in your feed.

encoding/jsonschema: verify result is concrete in external tests

The result of unifying a JSON Schema with a concrete instance should
itself be concrete, but that's not necessarily the case.

Verify this by checking for concreteness in the test.

The test statistics before were:

```
v2:
schema extract (pass / total): 971 / 1637 = 59.3%
tests (pass / total): 3032 / 7175 = 42.3%
tests on extracted schemas (pass / total): 3032 / 3542 = 85.6%

v3:
schema extract (pass / total): 971 / 1637 = 59.3%
tests (pass / total): 3014 / 7175 = 42.0%
tests on extracted schemas (pass / total): 3014 / 3542 = 85.1%
```

With this change applied they are:

```
v2:
schema extract (pass / total): 971 / 1637 = 59.3%
tests (pass / total): 3081 / 7175 = 42.9%
tests on extracted schemas (pass / total): 3081 / 3542 = 87.0%

v3:
schema extract (pass / total): 971 / 1637 = 59.3%
tests (pass / total): 3063 / 7175 = 42.7%
tests on extracted schemas (pass / total): 3063 / 3542 = 86.5%
```

That is, overall, 49 more tests pass on both v2 and v3. This is
(almost?) entirely down to the fact that with out concreteness checking
enabled, we won't fail a test that is checking for a required field that
isn't present.

Signed-off-by: Roger Peppe <rogpeppe@gmail.com>
Change-Id: I6c2a8cceb454826aa02c32525070d093160fec9e
Reviewed-on: https://review.gerrithub.io/c/cue-lang/cue/+/1200522
Reviewed-by: Daniel Martí <mvdan@mvdan.cc>
TryBot-Result: CUEcueckoo <cueckoo@cuelang.org>
Unity-Result: CUE porcuepine <cue.porcuepine@gmail.com>

+294 -490
+1 -1
encoding/jsonschema/external_test.go
··· 137 137 138 138 instValue := ctx.BuildExpr(instAST) 139 139 qt.Assert(t, qt.IsNil(instValue.Err())) 140 - err = instValue.Unify(schemaValue).Err() 140 + err = instValue.Unify(schemaValue).Validate(cue.Concrete(true)) 141 141 if test.Valid { 142 142 if err != nil { 143 143 testFailed(t, m, &test.Skip, test, errors.Details(err, nil))
+6 -30
encoding/jsonschema/testdata/external/tests/draft2019-09/allOf.json
··· 40 40 "data": { 41 41 "foo": "baz" 42 42 }, 43 - "valid": false, 44 - "skip": { 45 - "v2": "unexpected success", 46 - "v3": "unexpected success" 47 - } 43 + "valid": false 48 44 }, 49 45 { 50 46 "description": "mismatch first", 51 47 "data": { 52 48 "bar": 2 53 49 }, 54 - "valid": false, 55 - "skip": { 56 - "v2": "unexpected success", 57 - "v3": "unexpected success" 58 - } 50 + "valid": false 59 51 }, 60 52 { 61 53 "description": "wrong type", ··· 118 110 "foo": "quux", 119 111 "baz": null 120 112 }, 121 - "valid": false, 122 - "skip": { 123 - "v2": "unexpected success", 124 - "v3": "unexpected success" 125 - } 113 + "valid": false 126 114 }, 127 115 { 128 116 "description": "mismatch first allOf", ··· 130 118 "bar": 2, 131 119 "baz": null 132 120 }, 133 - "valid": false, 134 - "skip": { 135 - "v2": "unexpected success", 136 - "v3": "unexpected success" 137 - } 121 + "valid": false 138 122 }, 139 123 { 140 124 "description": "mismatch second allOf", ··· 142 126 "foo": "quux", 143 127 "bar": 2 144 128 }, 145 - "valid": false, 146 - "skip": { 147 - "v2": "unexpected success", 148 - "v3": "unexpected success" 149 - } 129 + "valid": false 150 130 }, 151 131 { 152 132 "description": "mismatch both", 153 133 "data": { 154 134 "bar": 2 155 135 }, 156 - "valid": false, 157 - "skip": { 158 - "v2": "unexpected success", 159 - "v3": "unexpected success" 160 - } 136 + "valid": false 161 137 } 162 138 ] 163 139 },
+10 -2
encoding/jsonschema/testdata/external/tests/draft2019-09/anyOf.json
··· 159 159 "data": { 160 160 "bar": 2 161 161 }, 162 - "valid": true 162 + "valid": true, 163 + "skip": { 164 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 165 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 166 + } 163 167 }, 164 168 { 165 169 "description": "second anyOf valid (complex)", 166 170 "data": { 167 171 "foo": "baz" 168 172 }, 169 - "valid": true 173 + "valid": true, 174 + "skip": { 175 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 176 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 177 + } 170 178 }, 171 179 { 172 180 "description": "both anyOf valid (complex)",
+2 -10
encoding/jsonschema/testdata/external/tests/draft2019-09/enum.json
··· 160 160 "data": { 161 161 "foo": "foo" 162 162 }, 163 - "valid": false, 164 - "skip": { 165 - "v2": "unexpected success", 166 - "v3": "unexpected success" 167 - } 163 + "valid": false 168 164 }, 169 165 { 170 166 "description": "missing all properties is invalid", 171 167 "data": {}, 172 - "valid": false, 173 - "skip": { 174 - "v2": "unexpected success", 175 - "v3": "unexpected success" 176 - } 168 + "valid": false 177 169 } 178 170 ] 179 171 },
+2 -6
encoding/jsonschema/testdata/external/tests/draft2019-09/items.json
··· 417 417 } 418 418 ] 419 419 ], 420 - "valid": false, 421 - "skip": { 422 - "v2": "unexpected success", 423 - "v3": "unexpected success" 424 - } 420 + "valid": false 425 421 }, 426 422 { 427 423 "description": "fewer items is valid", ··· 439 435 ], 440 436 "valid": true, 441 437 "skip": { 442 - "v2": "incompatible list lengths (2 and 3)\n", 438 + "v2": "incompatible list lengths (2 and 3)\n0: incompatible list lengths (1 and 2)\n1: incompatible list lengths (1 and 2)\n", 443 439 "v3": "incompatible list lengths (2 and 3):\n generated.cue:2:1\n" 444 440 } 445 441 }
+33 -21
encoding/jsonschema/testdata/external/tests/draft2019-09/oneOf.json
··· 192 192 "data": { 193 193 "bar": 2 194 194 }, 195 - "valid": true 195 + "valid": true, 196 + "skip": { 197 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 198 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 199 + } 196 200 }, 197 201 { 198 202 "description": "second oneOf valid (complex)", 199 203 "data": { 200 204 "foo": "baz" 201 205 }, 202 - "valid": true 206 + "valid": true, 207 + "skip": { 208 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 209 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 210 + } 203 211 }, 204 212 { 205 213 "description": "both oneOf valid (complex)", ··· 277 285 "data": { 278 286 "bar": 2 279 287 }, 280 - "valid": false, 281 - "skip": { 282 - "v2": "unexpected success", 283 - "v3": "unexpected success" 284 - } 288 + "valid": false 285 289 }, 286 290 { 287 291 "description": "first valid - valid", ··· 289 293 "foo": 1, 290 294 "bar": 2 291 295 }, 292 - "valid": true 296 + "valid": true, 297 + "skip": { 298 + "v2": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n", 299 + "v3": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n" 300 + } 293 301 }, 294 302 { 295 303 "description": "second valid - valid", ··· 297 305 "foo": 1, 298 306 "baz": 3 299 307 }, 300 - "valid": true 308 + "valid": true, 309 + "skip": { 310 + "v2": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n", 311 + "v3": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n" 312 + } 301 313 }, 302 314 { 303 315 "description": "both valid - invalid", ··· 344 356 "data": { 345 357 "bar": 8 346 358 }, 347 - "valid": true 359 + "valid": true, 360 + "skip": { 361 + "v2": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n", 362 + "v3": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n" 363 + } 348 364 }, 349 365 { 350 366 "description": "second oneOf valid", 351 367 "data": { 352 368 "foo": "foo" 353 369 }, 354 - "valid": true 370 + "valid": true, 371 + "skip": { 372 + "v2": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n", 373 + "v3": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n" 374 + } 355 375 }, 356 376 { 357 377 "description": "both oneOf valid", ··· 359 379 "foo": "foo", 360 380 "bar": 8 361 381 }, 362 - "valid": false, 363 - "skip": { 364 - "v2": "unexpected success", 365 - "v3": "unexpected success" 366 - } 382 + "valid": false 367 383 }, 368 384 { 369 385 "description": "neither oneOf valid", 370 386 "data": { 371 387 "baz": "quux" 372 388 }, 373 - "valid": false, 374 - "skip": { 375 - "v2": "unexpected success", 376 - "v3": "unexpected success" 377 - } 389 + "valid": false 378 390 } 379 391 ] 380 392 },
+6 -30
encoding/jsonschema/testdata/external/tests/draft2019-09/required.json
··· 24 24 "data": { 25 25 "bar": 1 26 26 }, 27 - "valid": false, 28 - "skip": { 29 - "v2": "unexpected success", 30 - "v3": "unexpected success" 31 - } 27 + "valid": false 32 28 }, 33 29 { 34 30 "description": "ignores arrays", ··· 112 108 "foo\nbar": "1", 113 109 "foo\"bar": "1" 114 110 }, 115 - "valid": false, 116 - "skip": { 117 - "v2": "unexpected success", 118 - "v3": "unexpected success" 119 - } 111 + "valid": false 120 112 } 121 113 ] 122 114 }, ··· 145 137 { 146 138 "description": "none of the properties mentioned", 147 139 "data": {}, 148 - "valid": false, 149 - "skip": { 150 - "v2": "unexpected success", 151 - "v3": "unexpected success" 152 - } 140 + "valid": false 153 141 }, 154 142 { 155 143 "description": "__proto__ present", 156 144 "data": { 157 145 "__proto__": "foo" 158 146 }, 159 - "valid": false, 160 - "skip": { 161 - "v2": "unexpected success", 162 - "v3": "unexpected success" 163 - } 147 + "valid": false 164 148 }, 165 149 { 166 150 "description": "toString present", ··· 169 153 "length": 37 170 154 } 171 155 }, 172 - "valid": false, 173 - "skip": { 174 - "v2": "unexpected success", 175 - "v3": "unexpected success" 176 - } 156 + "valid": false 177 157 }, 178 158 { 179 159 "description": "constructor present", ··· 182 162 "length": 37 183 163 } 184 164 }, 185 - "valid": false, 186 - "skip": { 187 - "v2": "unexpected success", 188 - "v3": "unexpected success" 189 - } 165 + "valid": false 190 166 }, 191 167 { 192 168 "description": "all present",
+6 -30
encoding/jsonschema/testdata/external/tests/draft2020-12/allOf.json
··· 40 40 "data": { 41 41 "foo": "baz" 42 42 }, 43 - "valid": false, 44 - "skip": { 45 - "v2": "unexpected success", 46 - "v3": "unexpected success" 47 - } 43 + "valid": false 48 44 }, 49 45 { 50 46 "description": "mismatch first", 51 47 "data": { 52 48 "bar": 2 53 49 }, 54 - "valid": false, 55 - "skip": { 56 - "v2": "unexpected success", 57 - "v3": "unexpected success" 58 - } 50 + "valid": false 59 51 }, 60 52 { 61 53 "description": "wrong type", ··· 118 110 "foo": "quux", 119 111 "baz": null 120 112 }, 121 - "valid": false, 122 - "skip": { 123 - "v2": "unexpected success", 124 - "v3": "unexpected success" 125 - } 113 + "valid": false 126 114 }, 127 115 { 128 116 "description": "mismatch first allOf", ··· 130 118 "bar": 2, 131 119 "baz": null 132 120 }, 133 - "valid": false, 134 - "skip": { 135 - "v2": "unexpected success", 136 - "v3": "unexpected success" 137 - } 121 + "valid": false 138 122 }, 139 123 { 140 124 "description": "mismatch second allOf", ··· 142 126 "foo": "quux", 143 127 "bar": 2 144 128 }, 145 - "valid": false, 146 - "skip": { 147 - "v2": "unexpected success", 148 - "v3": "unexpected success" 149 - } 129 + "valid": false 150 130 }, 151 131 { 152 132 "description": "mismatch both", 153 133 "data": { 154 134 "bar": 2 155 135 }, 156 - "valid": false, 157 - "skip": { 158 - "v2": "unexpected success", 159 - "v3": "unexpected success" 160 - } 136 + "valid": false 161 137 } 162 138 ] 163 139 },
+10 -2
encoding/jsonschema/testdata/external/tests/draft2020-12/anyOf.json
··· 159 159 "data": { 160 160 "bar": 2 161 161 }, 162 - "valid": true 162 + "valid": true, 163 + "skip": { 164 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 165 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 166 + } 163 167 }, 164 168 { 165 169 "description": "second anyOf valid (complex)", 166 170 "data": { 167 171 "foo": "baz" 168 172 }, 169 - "valid": true 173 + "valid": true, 174 + "skip": { 175 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 176 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 177 + } 170 178 }, 171 179 { 172 180 "description": "both anyOf valid (complex)",
+2 -10
encoding/jsonschema/testdata/external/tests/draft2020-12/enum.json
··· 160 160 "data": { 161 161 "foo": "foo" 162 162 }, 163 - "valid": false, 164 - "skip": { 165 - "v2": "unexpected success", 166 - "v3": "unexpected success" 167 - } 163 + "valid": false 168 164 }, 169 165 { 170 166 "description": "missing all properties is invalid", 171 167 "data": {}, 172 - "valid": false, 173 - "skip": { 174 - "v2": "unexpected success", 175 - "v3": "unexpected success" 176 - } 168 + "valid": false 177 169 } 178 170 ] 179 171 },
+33 -21
encoding/jsonschema/testdata/external/tests/draft2020-12/oneOf.json
··· 192 192 "data": { 193 193 "bar": 2 194 194 }, 195 - "valid": true 195 + "valid": true, 196 + "skip": { 197 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 198 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 199 + } 196 200 }, 197 201 { 198 202 "description": "second oneOf valid (complex)", 199 203 "data": { 200 204 "foo": "baz" 201 205 }, 202 - "valid": true 206 + "valid": true, 207 + "skip": { 208 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 209 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 210 + } 203 211 }, 204 212 { 205 213 "description": "both oneOf valid (complex)", ··· 277 285 "data": { 278 286 "bar": 2 279 287 }, 280 - "valid": false, 281 - "skip": { 282 - "v2": "unexpected success", 283 - "v3": "unexpected success" 284 - } 288 + "valid": false 285 289 }, 286 290 { 287 291 "description": "first valid - valid", ··· 289 293 "foo": 1, 290 294 "bar": 2 291 295 }, 292 - "valid": true 296 + "valid": true, 297 + "skip": { 298 + "v2": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n", 299 + "v3": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n" 300 + } 293 301 }, 294 302 { 295 303 "description": "second valid - valid", ··· 297 305 "foo": 1, 298 306 "baz": 3 299 307 }, 300 - "valid": true 308 + "valid": true, 309 + "skip": { 310 + "v2": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n", 311 + "v3": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n" 312 + } 301 313 }, 302 314 { 303 315 "description": "both valid - invalid", ··· 344 356 "data": { 345 357 "bar": 8 346 358 }, 347 - "valid": true 359 + "valid": true, 360 + "skip": { 361 + "v2": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n", 362 + "v3": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n" 363 + } 348 364 }, 349 365 { 350 366 "description": "second oneOf valid", 351 367 "data": { 352 368 "foo": "foo" 353 369 }, 354 - "valid": true 370 + "valid": true, 371 + "skip": { 372 + "v2": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n", 373 + "v3": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n" 374 + } 355 375 }, 356 376 { 357 377 "description": "both oneOf valid", ··· 359 379 "foo": "foo", 360 380 "bar": 8 361 381 }, 362 - "valid": false, 363 - "skip": { 364 - "v2": "unexpected success", 365 - "v3": "unexpected success" 366 - } 382 + "valid": false 367 383 }, 368 384 { 369 385 "description": "neither oneOf valid", 370 386 "data": { 371 387 "baz": "quux" 372 388 }, 373 - "valid": false, 374 - "skip": { 375 - "v2": "unexpected success", 376 - "v3": "unexpected success" 377 - } 389 + "valid": false 378 390 } 379 391 ] 380 392 },
+6 -30
encoding/jsonschema/testdata/external/tests/draft2020-12/required.json
··· 24 24 "data": { 25 25 "bar": 1 26 26 }, 27 - "valid": false, 28 - "skip": { 29 - "v2": "unexpected success", 30 - "v3": "unexpected success" 31 - } 27 + "valid": false 32 28 }, 33 29 { 34 30 "description": "ignores arrays", ··· 112 108 "foo\nbar": "1", 113 109 "foo\"bar": "1" 114 110 }, 115 - "valid": false, 116 - "skip": { 117 - "v2": "unexpected success", 118 - "v3": "unexpected success" 119 - } 111 + "valid": false 120 112 } 121 113 ] 122 114 }, ··· 145 137 { 146 138 "description": "none of the properties mentioned", 147 139 "data": {}, 148 - "valid": false, 149 - "skip": { 150 - "v2": "unexpected success", 151 - "v3": "unexpected success" 152 - } 140 + "valid": false 153 141 }, 154 142 { 155 143 "description": "__proto__ present", 156 144 "data": { 157 145 "__proto__": "foo" 158 146 }, 159 - "valid": false, 160 - "skip": { 161 - "v2": "unexpected success", 162 - "v3": "unexpected success" 163 - } 147 + "valid": false 164 148 }, 165 149 { 166 150 "description": "toString present", ··· 169 153 "length": 37 170 154 } 171 155 }, 172 - "valid": false, 173 - "skip": { 174 - "v2": "unexpected success", 175 - "v3": "unexpected success" 176 - } 156 + "valid": false 177 157 }, 178 158 { 179 159 "description": "constructor present", ··· 182 162 "length": 37 183 163 } 184 164 }, 185 - "valid": false, 186 - "skip": { 187 - "v2": "unexpected success", 188 - "v3": "unexpected success" 189 - } 165 + "valid": false 190 166 }, 191 167 { 192 168 "description": "all present",
+6 -30
encoding/jsonschema/testdata/external/tests/draft4/allOf.json
··· 39 39 "data": { 40 40 "foo": "baz" 41 41 }, 42 - "valid": false, 43 - "skip": { 44 - "v2": "unexpected success", 45 - "v3": "unexpected success" 46 - } 42 + "valid": false 47 43 }, 48 44 { 49 45 "description": "mismatch first", 50 46 "data": { 51 47 "bar": 2 52 48 }, 53 - "valid": false, 54 - "skip": { 55 - "v2": "unexpected success", 56 - "v3": "unexpected success" 57 - } 49 + "valid": false 58 50 }, 59 51 { 60 52 "description": "wrong type", ··· 116 108 "foo": "quux", 117 109 "baz": null 118 110 }, 119 - "valid": false, 120 - "skip": { 121 - "v2": "unexpected success", 122 - "v3": "unexpected success" 123 - } 111 + "valid": false 124 112 }, 125 113 { 126 114 "description": "mismatch first allOf", ··· 128 116 "bar": 2, 129 117 "baz": null 130 118 }, 131 - "valid": false, 132 - "skip": { 133 - "v2": "unexpected success", 134 - "v3": "unexpected success" 135 - } 119 + "valid": false 136 120 }, 137 121 { 138 122 "description": "mismatch second allOf", ··· 140 124 "foo": "quux", 141 125 "bar": 2 142 126 }, 143 - "valid": false, 144 - "skip": { 145 - "v2": "unexpected success", 146 - "v3": "unexpected success" 147 - } 127 + "valid": false 148 128 }, 149 129 { 150 130 "description": "mismatch both", 151 131 "data": { 152 132 "bar": 2 153 133 }, 154 - "valid": false, 155 - "skip": { 156 - "v2": "unexpected success", 157 - "v3": "unexpected success" 158 - } 134 + "valid": false 159 135 } 160 136 ] 161 137 },
+10 -2
encoding/jsonschema/testdata/external/tests/draft4/anyOf.json
··· 97 97 "data": { 98 98 "bar": 2 99 99 }, 100 - "valid": true 100 + "valid": true, 101 + "skip": { 102 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 103 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 104 + } 101 105 }, 102 106 { 103 107 "description": "second anyOf valid (complex)", 104 108 "data": { 105 109 "foo": "baz" 106 110 }, 107 - "valid": true 111 + "valid": true, 112 + "skip": { 113 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 114 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 115 + } 108 116 }, 109 117 { 110 118 "description": "both anyOf valid (complex)",
+2 -10
encoding/jsonschema/testdata/external/tests/draft4/enum.json
··· 156 156 "data": { 157 157 "foo": "foo" 158 158 }, 159 - "valid": false, 160 - "skip": { 161 - "v2": "unexpected success", 162 - "v3": "unexpected success" 163 - } 159 + "valid": false 164 160 }, 165 161 { 166 162 "description": "missing all properties is invalid", 167 163 "data": {}, 168 - "valid": false, 169 - "skip": { 170 - "v2": "unexpected success", 171 - "v3": "unexpected success" 172 - } 164 + "valid": false 173 165 } 174 166 ] 175 167 },
+2 -6
encoding/jsonschema/testdata/external/tests/draft4/items.json
··· 304 304 } 305 305 ] 306 306 ], 307 - "valid": false, 308 - "skip": { 309 - "v2": "unexpected success", 310 - "v3": "unexpected success" 311 - } 307 + "valid": false 312 308 }, 313 309 { 314 310 "description": "fewer items is valid", ··· 326 322 ], 327 323 "valid": true, 328 324 "skip": { 329 - "v2": "incompatible list lengths (2 and 3)\n", 325 + "v2": "incompatible list lengths (2 and 3)\n0: incompatible list lengths (1 and 2)\n1: incompatible list lengths (1 and 2)\n", 330 326 "v3": "incompatible list lengths (2 and 3):\n generated.cue:2:1\n" 331 327 } 332 328 }
+33 -21
encoding/jsonschema/testdata/external/tests/draft4/oneOf.json
··· 105 105 "data": { 106 106 "bar": 2 107 107 }, 108 - "valid": true 108 + "valid": true, 109 + "skip": { 110 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 111 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 112 + } 109 113 }, 110 114 { 111 115 "description": "second oneOf valid (complex)", 112 116 "data": { 113 117 "foo": "baz" 114 118 }, 115 - "valid": true 119 + "valid": true, 120 + "skip": { 121 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 122 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 123 + } 116 124 }, 117 125 { 118 126 "description": "both oneOf valid (complex)", ··· 188 196 "data": { 189 197 "bar": 2 190 198 }, 191 - "valid": false, 192 - "skip": { 193 - "v2": "unexpected success", 194 - "v3": "unexpected success" 195 - } 199 + "valid": false 196 200 }, 197 201 { 198 202 "description": "first valid - valid", ··· 200 204 "foo": 1, 201 205 "bar": 2 202 206 }, 203 - "valid": true 207 + "valid": true, 208 + "skip": { 209 + "v2": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n", 210 + "v3": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n" 211 + } 204 212 }, 205 213 { 206 214 "description": "second valid - valid", ··· 208 216 "foo": 1, 209 217 "baz": 3 210 218 }, 211 - "valid": true 219 + "valid": true, 220 + "skip": { 221 + "v2": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n", 222 + "v3": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n" 223 + } 212 224 }, 213 225 { 214 226 "description": "both valid - invalid", ··· 254 266 "data": { 255 267 "bar": 8 256 268 }, 257 - "valid": true 269 + "valid": true, 270 + "skip": { 271 + "v2": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n", 272 + "v3": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n" 273 + } 258 274 }, 259 275 { 260 276 "description": "second oneOf valid", 261 277 "data": { 262 278 "foo": "foo" 263 279 }, 264 - "valid": true 280 + "valid": true, 281 + "skip": { 282 + "v2": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n", 283 + "v3": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n" 284 + } 265 285 }, 266 286 { 267 287 "description": "both oneOf valid", ··· 269 289 "foo": "foo", 270 290 "bar": 8 271 291 }, 272 - "valid": false, 273 - "skip": { 274 - "v2": "unexpected success", 275 - "v3": "unexpected success" 276 - } 292 + "valid": false 277 293 }, 278 294 { 279 295 "description": "neither oneOf valid", 280 296 "data": { 281 297 "baz": "quux" 282 298 }, 283 - "valid": false, 284 - "skip": { 285 - "v2": "unexpected success", 286 - "v3": "unexpected success" 287 - } 299 + "valid": false 288 300 } 289 301 ] 290 302 },
+6 -30
encoding/jsonschema/testdata/external/tests/draft4/required.json
··· 23 23 "data": { 24 24 "bar": 1 25 25 }, 26 - "valid": false, 27 - "skip": { 28 - "v2": "unexpected success", 29 - "v3": "unexpected success" 30 - } 26 + "valid": false 31 27 }, 32 28 { 33 29 "description": "ignores arrays", ··· 92 88 "foo\nbar": "1", 93 89 "foo\"bar": "1" 94 90 }, 95 - "valid": false, 96 - "skip": { 97 - "v2": "unexpected success", 98 - "v3": "unexpected success" 99 - } 91 + "valid": false 100 92 } 101 93 ] 102 94 }, ··· 124 116 { 125 117 "description": "none of the properties mentioned", 126 118 "data": {}, 127 - "valid": false, 128 - "skip": { 129 - "v2": "unexpected success", 130 - "v3": "unexpected success" 131 - } 119 + "valid": false 132 120 }, 133 121 { 134 122 "description": "__proto__ present", 135 123 "data": { 136 124 "__proto__": "foo" 137 125 }, 138 - "valid": false, 139 - "skip": { 140 - "v2": "unexpected success", 141 - "v3": "unexpected success" 142 - } 126 + "valid": false 143 127 }, 144 128 { 145 129 "description": "toString present", ··· 148 132 "length": 37 149 133 } 150 134 }, 151 - "valid": false, 152 - "skip": { 153 - "v2": "unexpected success", 154 - "v3": "unexpected success" 155 - } 135 + "valid": false 156 136 }, 157 137 { 158 138 "description": "constructor present", ··· 161 141 "length": 37 162 142 } 163 143 }, 164 - "valid": false, 165 - "skip": { 166 - "v2": "unexpected success", 167 - "v3": "unexpected success" 168 - } 144 + "valid": false 169 145 }, 170 146 { 171 147 "description": "all present",
+6 -30
encoding/jsonschema/testdata/external/tests/draft6/allOf.json
··· 39 39 "data": { 40 40 "foo": "baz" 41 41 }, 42 - "valid": false, 43 - "skip": { 44 - "v2": "unexpected success", 45 - "v3": "unexpected success" 46 - } 42 + "valid": false 47 43 }, 48 44 { 49 45 "description": "mismatch first", 50 46 "data": { 51 47 "bar": 2 52 48 }, 53 - "valid": false, 54 - "skip": { 55 - "v2": "unexpected success", 56 - "v3": "unexpected success" 57 - } 49 + "valid": false 58 50 }, 59 51 { 60 52 "description": "wrong type", ··· 116 108 "foo": "quux", 117 109 "baz": null 118 110 }, 119 - "valid": false, 120 - "skip": { 121 - "v2": "unexpected success", 122 - "v3": "unexpected success" 123 - } 111 + "valid": false 124 112 }, 125 113 { 126 114 "description": "mismatch first allOf", ··· 128 116 "bar": 2, 129 117 "baz": null 130 118 }, 131 - "valid": false, 132 - "skip": { 133 - "v2": "unexpected success", 134 - "v3": "unexpected success" 135 - } 119 + "valid": false 136 120 }, 137 121 { 138 122 "description": "mismatch second allOf", ··· 140 124 "foo": "quux", 141 125 "bar": 2 142 126 }, 143 - "valid": false, 144 - "skip": { 145 - "v2": "unexpected success", 146 - "v3": "unexpected success" 147 - } 127 + "valid": false 148 128 }, 149 129 { 150 130 "description": "mismatch both", 151 131 "data": { 152 132 "bar": 2 153 133 }, 154 - "valid": false, 155 - "skip": { 156 - "v2": "unexpected success", 157 - "v3": "unexpected success" 158 - } 134 + "valid": false 159 135 } 160 136 ] 161 137 },
+10 -2
encoding/jsonschema/testdata/external/tests/draft6/anyOf.json
··· 153 153 "data": { 154 154 "bar": 2 155 155 }, 156 - "valid": true 156 + "valid": true, 157 + "skip": { 158 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 159 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 160 + } 157 161 }, 158 162 { 159 163 "description": "second anyOf valid (complex)", 160 164 "data": { 161 165 "foo": "baz" 162 166 }, 163 - "valid": true 167 + "valid": true, 168 + "skip": { 169 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 170 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 171 + } 164 172 }, 165 173 { 166 174 "description": "both anyOf valid (complex)",
+2 -10
encoding/jsonschema/testdata/external/tests/draft6/enum.json
··· 156 156 "data": { 157 157 "foo": "foo" 158 158 }, 159 - "valid": false, 160 - "skip": { 161 - "v2": "unexpected success", 162 - "v3": "unexpected success" 163 - } 159 + "valid": false 164 160 }, 165 161 { 166 162 "description": "missing all properties is invalid", 167 163 "data": {}, 168 - "valid": false, 169 - "skip": { 170 - "v2": "unexpected success", 171 - "v3": "unexpected success" 172 - } 164 + "valid": false 173 165 } 174 166 ] 175 167 },
+2 -6
encoding/jsonschema/testdata/external/tests/draft6/items.json
··· 411 411 } 412 412 ] 413 413 ], 414 - "valid": false, 415 - "skip": { 416 - "v2": "unexpected success", 417 - "v3": "unexpected success" 418 - } 414 + "valid": false 419 415 }, 420 416 { 421 417 "description": "fewer items is valid", ··· 433 429 ], 434 430 "valid": true, 435 431 "skip": { 436 - "v2": "incompatible list lengths (2 and 3)\n", 432 + "v2": "incompatible list lengths (2 and 3)\n0: incompatible list lengths (1 and 2)\n1: incompatible list lengths (1 and 2)\n", 437 433 "v3": "incompatible list lengths (2 and 3):\n generated.cue:2:1\n" 438 434 } 439 435 }
+33 -21
encoding/jsonschema/testdata/external/tests/draft6/oneOf.json
··· 185 185 "data": { 186 186 "bar": 2 187 187 }, 188 - "valid": true 188 + "valid": true, 189 + "skip": { 190 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 191 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 192 + } 189 193 }, 190 194 { 191 195 "description": "second oneOf valid (complex)", 192 196 "data": { 193 197 "foo": "baz" 194 198 }, 195 - "valid": true 199 + "valid": true, 200 + "skip": { 201 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 202 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 203 + } 196 204 }, 197 205 { 198 206 "description": "both oneOf valid (complex)", ··· 268 276 "data": { 269 277 "bar": 2 270 278 }, 271 - "valid": false, 272 - "skip": { 273 - "v2": "unexpected success", 274 - "v3": "unexpected success" 275 - } 279 + "valid": false 276 280 }, 277 281 { 278 282 "description": "first valid - valid", ··· 280 284 "foo": 1, 281 285 "bar": 2 282 286 }, 283 - "valid": true 287 + "valid": true, 288 + "skip": { 289 + "v2": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n", 290 + "v3": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n" 291 + } 284 292 }, 285 293 { 286 294 "description": "second valid - valid", ··· 288 296 "foo": 1, 289 297 "baz": 3 290 298 }, 291 - "valid": true 299 + "valid": true, 300 + "skip": { 301 + "v2": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n", 302 + "v3": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n" 303 + } 292 304 }, 293 305 { 294 306 "description": "both valid - invalid", ··· 334 346 "data": { 335 347 "bar": 8 336 348 }, 337 - "valid": true 349 + "valid": true, 350 + "skip": { 351 + "v2": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n", 352 + "v3": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n" 353 + } 338 354 }, 339 355 { 340 356 "description": "second oneOf valid", 341 357 "data": { 342 358 "foo": "foo" 343 359 }, 344 - "valid": true 360 + "valid": true, 361 + "skip": { 362 + "v2": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n", 363 + "v3": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n" 364 + } 345 365 }, 346 366 { 347 367 "description": "both oneOf valid", ··· 349 369 "foo": "foo", 350 370 "bar": 8 351 371 }, 352 - "valid": false, 353 - "skip": { 354 - "v2": "unexpected success", 355 - "v3": "unexpected success" 356 - } 372 + "valid": false 357 373 }, 358 374 { 359 375 "description": "neither oneOf valid", 360 376 "data": { 361 377 "baz": "quux" 362 378 }, 363 - "valid": false, 364 - "skip": { 365 - "v2": "unexpected success", 366 - "v3": "unexpected success" 367 - } 379 + "valid": false 368 380 } 369 381 ] 370 382 },
+6 -30
encoding/jsonschema/testdata/external/tests/draft6/required.json
··· 23 23 "data": { 24 24 "bar": 1 25 25 }, 26 - "valid": false, 27 - "skip": { 28 - "v2": "unexpected success", 29 - "v3": "unexpected success" 30 - } 26 + "valid": false 31 27 }, 32 28 { 33 29 "description": "ignores arrays", ··· 108 104 "foo\nbar": "1", 109 105 "foo\"bar": "1" 110 106 }, 111 - "valid": false, 112 - "skip": { 113 - "v2": "unexpected success", 114 - "v3": "unexpected success" 115 - } 107 + "valid": false 116 108 } 117 109 ] 118 110 }, ··· 140 132 { 141 133 "description": "none of the properties mentioned", 142 134 "data": {}, 143 - "valid": false, 144 - "skip": { 145 - "v2": "unexpected success", 146 - "v3": "unexpected success" 147 - } 135 + "valid": false 148 136 }, 149 137 { 150 138 "description": "__proto__ present", 151 139 "data": { 152 140 "__proto__": "foo" 153 141 }, 154 - "valid": false, 155 - "skip": { 156 - "v2": "unexpected success", 157 - "v3": "unexpected success" 158 - } 142 + "valid": false 159 143 }, 160 144 { 161 145 "description": "toString present", ··· 164 148 "length": 37 165 149 } 166 150 }, 167 - "valid": false, 168 - "skip": { 169 - "v2": "unexpected success", 170 - "v3": "unexpected success" 171 - } 151 + "valid": false 172 152 }, 173 153 { 174 154 "description": "constructor present", ··· 177 157 "length": 37 178 158 } 179 159 }, 180 - "valid": false, 181 - "skip": { 182 - "v2": "unexpected success", 183 - "v3": "unexpected success" 184 - } 160 + "valid": false 185 161 }, 186 162 { 187 163 "description": "all present",
+6 -30
encoding/jsonschema/testdata/external/tests/draft7/allOf.json
··· 39 39 "data": { 40 40 "foo": "baz" 41 41 }, 42 - "valid": false, 43 - "skip": { 44 - "v2": "unexpected success", 45 - "v3": "unexpected success" 46 - } 42 + "valid": false 47 43 }, 48 44 { 49 45 "description": "mismatch first", 50 46 "data": { 51 47 "bar": 2 52 48 }, 53 - "valid": false, 54 - "skip": { 55 - "v2": "unexpected success", 56 - "v3": "unexpected success" 57 - } 49 + "valid": false 58 50 }, 59 51 { 60 52 "description": "wrong type", ··· 116 108 "foo": "quux", 117 109 "baz": null 118 110 }, 119 - "valid": false, 120 - "skip": { 121 - "v2": "unexpected success", 122 - "v3": "unexpected success" 123 - } 111 + "valid": false 124 112 }, 125 113 { 126 114 "description": "mismatch first allOf", ··· 128 116 "bar": 2, 129 117 "baz": null 130 118 }, 131 - "valid": false, 132 - "skip": { 133 - "v2": "unexpected success", 134 - "v3": "unexpected success" 135 - } 119 + "valid": false 136 120 }, 137 121 { 138 122 "description": "mismatch second allOf", ··· 140 124 "foo": "quux", 141 125 "bar": 2 142 126 }, 143 - "valid": false, 144 - "skip": { 145 - "v2": "unexpected success", 146 - "v3": "unexpected success" 147 - } 127 + "valid": false 148 128 }, 149 129 { 150 130 "description": "mismatch both", 151 131 "data": { 152 132 "bar": 2 153 133 }, 154 - "valid": false, 155 - "skip": { 156 - "v2": "unexpected success", 157 - "v3": "unexpected success" 158 - } 134 + "valid": false 159 135 } 160 136 ] 161 137 },
+10 -2
encoding/jsonschema/testdata/external/tests/draft7/anyOf.json
··· 153 153 "data": { 154 154 "bar": 2 155 155 }, 156 - "valid": true 156 + "valid": true, 157 + "skip": { 158 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 159 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 160 + } 157 161 }, 158 162 { 159 163 "description": "second anyOf valid (complex)", 160 164 "data": { 161 165 "foo": "baz" 162 166 }, 163 - "valid": true 167 + "valid": true, 168 + "skip": { 169 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 170 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 171 + } 164 172 }, 165 173 { 166 174 "description": "both anyOf valid (complex)",
+2 -10
encoding/jsonschema/testdata/external/tests/draft7/enum.json
··· 156 156 "data": { 157 157 "foo": "foo" 158 158 }, 159 - "valid": false, 160 - "skip": { 161 - "v2": "unexpected success", 162 - "v3": "unexpected success" 163 - } 159 + "valid": false 164 160 }, 165 161 { 166 162 "description": "missing all properties is invalid", 167 163 "data": {}, 168 - "valid": false, 169 - "skip": { 170 - "v2": "unexpected success", 171 - "v3": "unexpected success" 172 - } 164 + "valid": false 173 165 } 174 166 ] 175 167 },
+2 -6
encoding/jsonschema/testdata/external/tests/draft7/items.json
··· 411 411 } 412 412 ] 413 413 ], 414 - "valid": false, 415 - "skip": { 416 - "v2": "unexpected success", 417 - "v3": "unexpected success" 418 - } 414 + "valid": false 419 415 }, 420 416 { 421 417 "description": "fewer items is valid", ··· 433 429 ], 434 430 "valid": true, 435 431 "skip": { 436 - "v2": "incompatible list lengths (2 and 3)\n", 432 + "v2": "incompatible list lengths (2 and 3)\n0: incompatible list lengths (1 and 2)\n1: incompatible list lengths (1 and 2)\n", 437 433 "v3": "incompatible list lengths (2 and 3):\n generated.cue:2:1\n" 438 434 } 439 435 }
+33 -21
encoding/jsonschema/testdata/external/tests/draft7/oneOf.json
··· 185 185 "data": { 186 186 "bar": 2 187 187 }, 188 - "valid": true 188 + "valid": true, 189 + "skip": { 190 + "v2": "incomplete value {bar:2} | {bar:2,foo!:string}\n", 191 + "v3": "incomplete value {bar:2} | {bar:2,foo!:string}\n" 192 + } 189 193 }, 190 194 { 191 195 "description": "second oneOf valid (complex)", 192 196 "data": { 193 197 "foo": "baz" 194 198 }, 195 - "valid": true 199 + "valid": true, 200 + "skip": { 201 + "v2": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n", 202 + "v3": "incomplete value {foo:\"baz\",bar!:int} | {foo:\"baz\"}\n" 203 + } 196 204 }, 197 205 { 198 206 "description": "both oneOf valid (complex)", ··· 268 276 "data": { 269 277 "bar": 2 270 278 }, 271 - "valid": false, 272 - "skip": { 273 - "v2": "unexpected success", 274 - "v3": "unexpected success" 275 - } 279 + "valid": false 276 280 }, 277 281 { 278 282 "description": "first valid - valid", ··· 280 284 "foo": 1, 281 285 "bar": 2 282 286 }, 283 - "valid": true 287 + "valid": true, 288 + "skip": { 289 + "v2": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n", 290 + "v3": "incomplete value {foo:1,bar:2} | {foo:1,bar:2,baz!:_}\n" 291 + } 284 292 }, 285 293 { 286 294 "description": "second valid - valid", ··· 288 296 "foo": 1, 289 297 "baz": 3 290 298 }, 291 - "valid": true 299 + "valid": true, 300 + "skip": { 301 + "v2": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n", 302 + "v3": "incomplete value {foo:1,baz:3,bar!:_} | {foo:1,baz:3}\n" 303 + } 292 304 }, 293 305 { 294 306 "description": "both valid - invalid", ··· 334 346 "data": { 335 347 "bar": 8 336 348 }, 337 - "valid": true 349 + "valid": true, 350 + "skip": { 351 + "v2": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n", 352 + "v3": "incomplete value {bar:8,baz?:_} | {bar:8,foo!:_}\n" 353 + } 338 354 }, 339 355 { 340 356 "description": "second oneOf valid", 341 357 "data": { 342 358 "foo": "foo" 343 359 }, 344 - "valid": true 360 + "valid": true, 361 + "skip": { 362 + "v2": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n", 363 + "v3": "incomplete value {foo:\"foo\",bar!:_,baz?:_} | {foo:\"foo\"}\n" 364 + } 345 365 }, 346 366 { 347 367 "description": "both oneOf valid", ··· 349 369 "foo": "foo", 350 370 "bar": 8 351 371 }, 352 - "valid": false, 353 - "skip": { 354 - "v2": "unexpected success", 355 - "v3": "unexpected success" 356 - } 372 + "valid": false 357 373 }, 358 374 { 359 375 "description": "neither oneOf valid", 360 376 "data": { 361 377 "baz": "quux" 362 378 }, 363 - "valid": false, 364 - "skip": { 365 - "v2": "unexpected success", 366 - "v3": "unexpected success" 367 - } 379 + "valid": false 368 380 } 369 381 ] 370 382 },
+6 -30
encoding/jsonschema/testdata/external/tests/draft7/required.json
··· 23 23 "data": { 24 24 "bar": 1 25 25 }, 26 - "valid": false, 27 - "skip": { 28 - "v2": "unexpected success", 29 - "v3": "unexpected success" 30 - } 26 + "valid": false 31 27 }, 32 28 { 33 29 "description": "ignores arrays", ··· 108 104 "foo\nbar": "1", 109 105 "foo\"bar": "1" 110 106 }, 111 - "valid": false, 112 - "skip": { 113 - "v2": "unexpected success", 114 - "v3": "unexpected success" 115 - } 107 + "valid": false 116 108 } 117 109 ] 118 110 }, ··· 140 132 { 141 133 "description": "none of the properties mentioned", 142 134 "data": {}, 143 - "valid": false, 144 - "skip": { 145 - "v2": "unexpected success", 146 - "v3": "unexpected success" 147 - } 135 + "valid": false 148 136 }, 149 137 { 150 138 "description": "__proto__ present", 151 139 "data": { 152 140 "__proto__": "foo" 153 141 }, 154 - "valid": false, 155 - "skip": { 156 - "v2": "unexpected success", 157 - "v3": "unexpected success" 158 - } 142 + "valid": false 159 143 }, 160 144 { 161 145 "description": "toString present", ··· 164 148 "length": 37 165 149 } 166 150 }, 167 - "valid": false, 168 - "skip": { 169 - "v2": "unexpected success", 170 - "v3": "unexpected success" 171 - } 151 + "valid": false 172 152 }, 173 153 { 174 154 "description": "constructor present", ··· 177 157 "length": 37 178 158 } 179 159 }, 180 - "valid": false, 181 - "skip": { 182 - "v2": "unexpected success", 183 - "v3": "unexpected success" 184 - } 160 + "valid": false 185 161 }, 186 162 { 187 163 "description": "all present",