json_schemer 0.2.7 → 0.2.8

Sign up to get free protection for your applications and to get access to all the features.
Files changed (84) hide show
  1. checksums.yaml +4 -4
  2. data/Gemfile.lock +1 -1
  3. data/JSON-Schema-Test-Suite/bin/jsonschema_suite +8 -5
  4. data/JSON-Schema-Test-Suite/remotes/folder/folderInteger.json +1 -1
  5. data/JSON-Schema-Test-Suite/remotes/integer.json +1 -1
  6. data/JSON-Schema-Test-Suite/remotes/name-defs.json +6 -2
  7. data/JSON-Schema-Test-Suite/remotes/name.json +6 -2
  8. data/JSON-Schema-Test-Suite/remotes/subSchemas.json +2 -2
  9. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/additionalItems.json +0 -0
  10. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/additionalProperties.json +0 -0
  11. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/allOf.json +0 -0
  12. data/JSON-Schema-Test-Suite/tests/draft2019-09/anchor.json +87 -0
  13. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/anyOf.json +0 -0
  14. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/boolean_schema.json +0 -0
  15. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/const.json +0 -0
  16. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/contains.json +0 -0
  17. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/default.json +0 -0
  18. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/defs.json +2 -2
  19. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/dependencies.json +0 -0
  20. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/enum.json +0 -0
  21. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/exclusiveMaximum.json +0 -0
  22. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/exclusiveMinimum.json +0 -0
  23. data/JSON-Schema-Test-Suite/tests/draft2019-09/format.json +614 -0
  24. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/if-then-else.json +0 -0
  25. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/items.json +0 -0
  26. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxItems.json +0 -0
  27. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxLength.json +0 -0
  28. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maxProperties.json +0 -0
  29. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/maximum.json +0 -0
  30. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minItems.json +0 -0
  31. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minLength.json +0 -0
  32. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minProperties.json +0 -0
  33. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/minimum.json +0 -0
  34. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/multipleOf.json +0 -0
  35. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/not.json +0 -0
  36. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/oneOf.json +0 -0
  37. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/bignum.json +0 -0
  38. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/content.json +0 -0
  39. data/JSON-Schema-Test-Suite/tests/draft2019-09/optional/ecmascript-regex.json +213 -0
  40. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/date-time.json +0 -0
  41. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/date.json +0 -0
  42. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/email.json +0 -0
  43. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/hostname.json +0 -0
  44. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/idn-email.json +0 -0
  45. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/idn-hostname.json +0 -0
  46. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/ipv4.json +0 -0
  47. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/ipv6.json +0 -0
  48. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/iri-reference.json +0 -0
  49. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/iri.json +0 -0
  50. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/json-pointer.json +0 -0
  51. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/regex.json +0 -0
  52. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/relative-json-pointer.json +0 -0
  53. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/time.json +0 -0
  54. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri-reference.json +0 -0
  55. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri-template.json +0 -0
  56. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/format/uri.json +0 -0
  57. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/optional/zeroTerminatedFloats.json +0 -0
  58. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/pattern.json +0 -0
  59. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/patternProperties.json +0 -0
  60. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/properties.json +0 -0
  61. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/propertyNames.json +0 -0
  62. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/ref.json +1 -85
  63. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/refRemote.json +0 -0
  64. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/required.json +0 -0
  65. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/type.json +0 -0
  66. data/JSON-Schema-Test-Suite/tests/{draft2019-08 → draft2019-09}/uniqueItems.json +84 -0
  67. data/JSON-Schema-Test-Suite/tests/draft3/format.json +362 -0
  68. data/JSON-Schema-Test-Suite/tests/draft3/optional/{jsregex.json → ecmascript-regex.json} +0 -0
  69. data/JSON-Schema-Test-Suite/tests/draft3/uniqueItems.json +84 -0
  70. data/JSON-Schema-Test-Suite/tests/draft4/format.json +218 -0
  71. data/JSON-Schema-Test-Suite/tests/draft4/optional/ecmascript-regex.json +200 -0
  72. data/JSON-Schema-Test-Suite/tests/draft4/uniqueItems.json +84 -0
  73. data/JSON-Schema-Test-Suite/tests/draft6/format.json +326 -0
  74. data/JSON-Schema-Test-Suite/tests/draft6/optional/ecmascript-regex.json +200 -0
  75. data/JSON-Schema-Test-Suite/tests/draft6/uniqueItems.json +84 -0
  76. data/JSON-Schema-Test-Suite/tests/draft7/format.json +614 -0
  77. data/JSON-Schema-Test-Suite/tests/draft7/optional/ecmascript-regex.json +200 -0
  78. data/JSON-Schema-Test-Suite/tests/draft7/uniqueItems.json +84 -0
  79. data/JSON-Schema-Test-Suite/tests/latest +1 -0
  80. data/JSON-Schema-Test-Suite/tox.ini +3 -2
  81. data/lib/json_schemer/format.rb +25 -58
  82. data/lib/json_schemer/version.rb +1 -1
  83. metadata +66 -59
  84. data/JSON-Schema-Test-Suite/tests/draft2019-08/optional/ecmascript-regex.json +0 -13
@@ -0,0 +1,213 @@
1
+ [
2
+ {
3
+ "description": "ECMA 262 regex non-compliance",
4
+ "schema": { "format": "regex" },
5
+ "tests": [
6
+ {
7
+ "description": "ECMA 262 has no support for \\Z anchor from .NET",
8
+ "data": "^\\S(|(.|\\n)*\\S)\\Z",
9
+ "valid": false
10
+ }
11
+ ]
12
+ },
13
+ {
14
+ "description": "ECMA 262 regex $ does not match trailing newline",
15
+ "schema": {
16
+ "type": "string",
17
+ "pattern": "^abc$"
18
+ },
19
+ "tests": [
20
+ {
21
+ "description": "matches in Python, but should not in jsonschema",
22
+ "data": "abc\n",
23
+ "valid": false
24
+ },
25
+ {
26
+ "description": "should match",
27
+ "data": "abc",
28
+ "valid": true
29
+ }
30
+ ]
31
+ },
32
+ {
33
+ "description": "ECMA 262 regex converts \\a to ascii BEL",
34
+ "schema": {
35
+ "type": "string",
36
+ "pattern": "^\\a$"
37
+ },
38
+ "tests": [
39
+ {
40
+ "description": "does not match",
41
+ "data": "\\a",
42
+ "valid": false
43
+ },
44
+ {
45
+ "description": "matches",
46
+ "data": "\u0007",
47
+ "valid": true
48
+ }
49
+ ]
50
+ },
51
+ {
52
+ "description": "ECMA 262 regex escapes control codes with \\c and upper letter",
53
+ "schema": {
54
+ "type": "string",
55
+ "pattern": "^\\cC$"
56
+ },
57
+ "tests": [
58
+ {
59
+ "description": "does not match",
60
+ "data": "\\cC",
61
+ "valid": false
62
+ },
63
+ {
64
+ "description": "matches",
65
+ "data": "\u0003",
66
+ "valid": true
67
+ }
68
+ ]
69
+ },
70
+ {
71
+ "description": "ECMA 262 regex escapes control codes with \\c and lower letter",
72
+ "schema": {
73
+ "type": "string",
74
+ "pattern": "^\\cc$"
75
+ },
76
+ "tests": [
77
+ {
78
+ "description": "does not match",
79
+ "data": "\\cc",
80
+ "valid": false
81
+ },
82
+ {
83
+ "description": "matches",
84
+ "data": "\u0003",
85
+ "valid": true
86
+ }
87
+ ]
88
+ },
89
+ {
90
+ "description": "ECMA 262 \\d matches ascii digits only",
91
+ "schema": {
92
+ "type": "string",
93
+ "pattern": "^\\d$"
94
+ },
95
+ "tests": [
96
+ {
97
+ "description": "ASCII zero matches",
98
+ "data": "0",
99
+ "valid": true
100
+ },
101
+ {
102
+ "description": "NKO DIGIT ZERO does not match (unlike e.g. Python)",
103
+ "data": "߀",
104
+ "valid": false
105
+ },
106
+ {
107
+ "description": "NKO DIGIT ZERO (as \\u escape) does not match",
108
+ "data": "\u07c0",
109
+ "valid": false
110
+ }
111
+ ]
112
+ },
113
+ {
114
+ "description": "ECMA 262 \\D matches everything but ascii digits",
115
+ "schema": {
116
+ "type": "string",
117
+ "pattern": "^\\D$"
118
+ },
119
+ "tests": [
120
+ {
121
+ "description": "ASCII zero does not match",
122
+ "data": "0",
123
+ "valid": false
124
+ },
125
+ {
126
+ "description": "NKO DIGIT ZERO matches (unlike e.g. Python)",
127
+ "data": "߀",
128
+ "valid": true
129
+ },
130
+ {
131
+ "description": "NKO DIGIT ZERO (as \\u escape) matches",
132
+ "data": "\u07c0",
133
+ "valid": true
134
+ }
135
+ ]
136
+ },
137
+ {
138
+ "description": "ECMA 262 \\w matches ascii letters only",
139
+ "schema": {
140
+ "type": "string",
141
+ "pattern": "^\\w$"
142
+ },
143
+ "tests": [
144
+ {
145
+ "description": "ASCII 'a' matches",
146
+ "data": "a",
147
+ "valid": true
148
+ },
149
+ {
150
+ "description": "latin-1 e-acute does not match (unlike e.g. Python)",
151
+ "data": "é",
152
+ "valid": false
153
+ }
154
+ ]
155
+ },
156
+ {
157
+ "description": "ECMA 262 \\w matches everything but ascii letters",
158
+ "schema": {
159
+ "type": "string",
160
+ "pattern": "^\\W$"
161
+ },
162
+ "tests": [
163
+ {
164
+ "description": "ASCII 'a' does not match",
165
+ "data": "a",
166
+ "valid": false
167
+ },
168
+ {
169
+ "description": "latin-1 e-acute matches (unlike e.g. Python)",
170
+ "data": "é",
171
+ "valid": true
172
+ }
173
+ ]
174
+ },
175
+ {
176
+ "description": "ECMA 262 \\s matches ascii whitespace only",
177
+ "schema": {
178
+ "type": "string",
179
+ "pattern": "^\\s$"
180
+ },
181
+ "tests": [
182
+ {
183
+ "description": "ASCII space matches",
184
+ "data": " ",
185
+ "valid": true
186
+ },
187
+ {
188
+ "description": "latin-1 non-breaking-space does not match (unlike e.g. Python)",
189
+ "data": "\u00a0",
190
+ "valid": false
191
+ }
192
+ ]
193
+ },
194
+ {
195
+ "description": "ECMA 262 \\S matches everything but ascii whitespace",
196
+ "schema": {
197
+ "type": "string",
198
+ "pattern": "^\\S$"
199
+ },
200
+ "tests": [
201
+ {
202
+ "description": "ASCII space does not match",
203
+ "data": " ",
204
+ "valid": false
205
+ },
206
+ {
207
+ "description": "latin-1 non-breaking-space matches (unlike e.g. Python)",
208
+ "data": "\u00a0",
209
+ "valid": true
210
+ }
211
+ ]
212
+ }
213
+ ]
@@ -175,7 +175,7 @@
175
175
  },
176
176
  {
177
177
  "description": "remote ref, containing refs itself",
178
- "schema": {"$ref": "http://json-schema.org/draft/2019-06/schema#"},
178
+ "schema": {"$ref": "https://json-schema.org/draft/2019-09/schema"},
179
179
  "tests": [
180
180
  {
181
181
  "description": "remote ref valid",
@@ -355,89 +355,5 @@
355
355
  "valid": false
356
356
  }
357
357
  ]
358
- },
359
- {
360
- "description": "Location-independent identifier",
361
- "schema": {
362
- "allOf": [{
363
- "$ref": "#foo"
364
- }],
365
- "$defs": {
366
- "A": {
367
- "$id": "#foo",
368
- "type": "integer"
369
- }
370
- }
371
- },
372
- "tests": [
373
- {
374
- "data": 1,
375
- "description": "match",
376
- "valid": true
377
- },
378
- {
379
- "data": "a",
380
- "description": "mismatch",
381
- "valid": false
382
- }
383
- ]
384
- },
385
- {
386
- "description": "Location-independent identifier with absolute URI",
387
- "schema": {
388
- "allOf": [{
389
- "$ref": "http://localhost:1234/bar#foo"
390
- }],
391
- "$defs": {
392
- "A": {
393
- "$id": "http://localhost:1234/bar#foo",
394
- "type": "integer"
395
- }
396
- }
397
- },
398
- "tests": [
399
- {
400
- "data": 1,
401
- "description": "match",
402
- "valid": true
403
- },
404
- {
405
- "data": "a",
406
- "description": "mismatch",
407
- "valid": false
408
- }
409
- ]
410
- },
411
- {
412
- "description": "Location-independent identifier with base URI change in subschema",
413
- "schema": {
414
- "$id": "http://localhost:1234/root",
415
- "allOf": [{
416
- "$ref": "http://localhost:1234/nested.json#foo"
417
- }],
418
- "$defs": {
419
- "A": {
420
- "$id": "nested.json",
421
- "$defs": {
422
- "B": {
423
- "$id": "#foo",
424
- "type": "integer"
425
- }
426
- }
427
- }
428
- }
429
- },
430
- "tests": [
431
- {
432
- "data": 1,
433
- "description": "match",
434
- "valid": true
435
- },
436
- {
437
- "data": "a",
438
- "description": "mismatch",
439
- "valid": false
440
- }
441
- ]
442
358
  }
443
359
  ]
@@ -85,5 +85,89 @@
85
85
  "valid": false
86
86
  }
87
87
  ]
88
+ },
89
+ {
90
+ "description": "uniqueItems with an array of items",
91
+ "schema": {
92
+ "items": [{"type": "boolean"}, {"type": "boolean"}],
93
+ "uniqueItems": true
94
+ },
95
+ "tests": [
96
+ {
97
+ "description": "[false, true] from items array is valid",
98
+ "data": [false, true],
99
+ "valid": true
100
+ },
101
+ {
102
+ "description": "[true, false] from items array is valid",
103
+ "data": [true, false],
104
+ "valid": true
105
+ },
106
+ {
107
+ "description": "[false, false] from items array is not valid",
108
+ "data": [false, false],
109
+ "valid": false
110
+ },
111
+ {
112
+ "description": "[true, true] from items array is not valid",
113
+ "data": [true, true],
114
+ "valid": false
115
+ },
116
+ {
117
+ "description": "unique array extended from [false, true] is valid",
118
+ "data": [false, true, "foo", "bar"],
119
+ "valid": true
120
+ },
121
+ {
122
+ "description": "unique array extended from [true, false] is valid",
123
+ "data": [true, false, "foo", "bar"],
124
+ "valid": true
125
+ },
126
+ {
127
+ "description": "non-unique array extended from [false, true] is not valid",
128
+ "data": [false, true, "foo", "foo"],
129
+ "valid": false
130
+ },
131
+ {
132
+ "description": "non-unique array extended from [true, false] is not valid",
133
+ "data": [true, false, "foo", "foo"],
134
+ "valid": false
135
+ }
136
+ ]
137
+ },
138
+ {
139
+ "description": "uniqueItems with an array of items and additionalItems=false",
140
+ "schema": {
141
+ "items": [{"type": "boolean"}, {"type": "boolean"}],
142
+ "uniqueItems": true,
143
+ "additionalItems": false
144
+ },
145
+ "tests": [
146
+ {
147
+ "description": "[false, true] from items array is valid",
148
+ "data": [false, true],
149
+ "valid": true
150
+ },
151
+ {
152
+ "description": "[true, false] from items array is valid",
153
+ "data": [true, false],
154
+ "valid": true
155
+ },
156
+ {
157
+ "description": "[false, false] from items array is not valid",
158
+ "data": [false, false],
159
+ "valid": false
160
+ },
161
+ {
162
+ "description": "[true, true] from items array is not valid",
163
+ "data": [true, true],
164
+ "valid": false
165
+ },
166
+ {
167
+ "description": "extra items are invalid even if unique",
168
+ "data": [false, true, null],
169
+ "valid": false
170
+ }
171
+ ]
88
172
  }
89
173
  ]