json_schemer 0.2.7 → 0.2.8

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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
  ]