kwalify 0.4.1 → 0.5.0
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.
- data/ChangeLog +14 -3
- data/README.txt +3 -3
- data/bin/kwalify +4 -15
- data/doc/users-guide.html +237 -61
- data/examples/address-book/address-book.schema.yaml +1 -1
- data/examples/invoice/invoice.schema.yaml +2 -2
- data/examples/tapkit/tapkit.schema.yaml +39 -39
- data/lib/kwalify.rb +4 -4
- data/lib/kwalify/errors.rb +21 -14
- data/lib/kwalify/main.rb +357 -0
- data/lib/kwalify/messages.rb +38 -9
- data/lib/kwalify/meta-validator.rb +96 -64
- data/lib/kwalify/rule.rb +356 -269
- data/lib/kwalify/types.rb +53 -35
- data/lib/kwalify/util/assert-diff.rb +2 -2
- data/lib/kwalify/util/option-parser.rb +2 -2
- data/lib/kwalify/util/yaml-helper.rb +2 -2
- data/lib/kwalify/validator.rb +8 -17
- data/lib/kwalify/{parser.rb → yaml-parser.rb} +70 -41
- data/test/test-main.rb +179 -0
- data/test/test-main.yaml +756 -0
- data/test/test-metavalidator.rb +38 -721
- data/test/test-metavalidator.yaml +1104 -0
- data/test/test-rule.rb +60 -0
- data/test/test-rule.yaml +314 -0
- data/test/test-validator.rb +5 -5
- data/test/test-validator.yaml +816 -0
- data/test/{test-parser.rb → test-yamlparser.rb} +17 -17
- data/test/test-yamlparser.yaml +1080 -0
- data/test/test.rb +5 -3
- data/todo.txt +1 -0
- metadata +16 -11
- data/lib/kwalify/main-program.rb +0 -258
data/test/test-metavalidator.rb
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
###
|
2
|
-
### $Rev:
|
3
|
-
### $Release: 0.
|
2
|
+
### $Rev: 42 $
|
3
|
+
### $Release: 0.5.0 $
|
4
4
|
### copyright(c) 2005 kuwata-lab all rights reserved.
|
5
5
|
###
|
6
6
|
|
@@ -20,43 +20,57 @@ require 'yaml'
|
|
20
20
|
class MetaValidatorTest < Test::Unit::TestCase
|
21
21
|
|
22
22
|
## define test methods
|
23
|
-
|
24
|
-
str = File.read(
|
25
|
-
|
26
|
-
name_table = {}
|
23
|
+
filename = __FILE__.sub(/\.rb$/, '.yaml')
|
24
|
+
str = File.read(filename)
|
25
|
+
@@docs = {}
|
27
26
|
YAML.load_documents(str) do |doc|
|
28
|
-
doc.default = ''
|
29
|
-
|
30
|
-
|
27
|
+
#doc.default = ''
|
28
|
+
name = doc['name']
|
29
|
+
!@@docs.key?(name) or raise "*** test name '#{name}' is duplicated."
|
30
|
+
doc.each do |key, val|
|
31
|
+
if key =~ /(.*)\*$/
|
32
|
+
doc[$1] = val['ruby']
|
33
|
+
end
|
34
|
+
end
|
35
|
+
@@docs[name] = doc
|
31
36
|
s = <<-END
|
32
|
-
def test_meta_#{
|
33
|
-
|
34
|
-
@
|
35
|
-
@
|
36
|
-
@
|
37
|
-
|
37
|
+
def test_meta_#{name}
|
38
|
+
doc = @@docs['#{name}']
|
39
|
+
@name = doc['name']
|
40
|
+
@desc = doc['desc']
|
41
|
+
@schema = doc['schema']
|
42
|
+
@meta_msg = doc['meta-msg']
|
43
|
+
# @rule_msg = doc['rule-msg']
|
38
44
|
_test(:meta)
|
39
45
|
end
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
@
|
46
|
+
END
|
47
|
+
eval s if doc['meta-msg']
|
48
|
+
s = <<-END
|
49
|
+
def test_rule_#{name}
|
50
|
+
doc = @@docs['#{name}']
|
51
|
+
@name = doc['name']
|
52
|
+
@desc = doc['desc']
|
53
|
+
@schema = doc['schema']
|
54
|
+
# @meta_msg = doc['meta-msg']
|
55
|
+
@rule_msg = doc['rule-msg']
|
46
56
|
_test(:rule)
|
47
57
|
end
|
48
58
|
END
|
49
|
-
eval s
|
59
|
+
eval s if doc['rule-msg']
|
50
60
|
end
|
51
61
|
|
52
62
|
## execute test
|
53
63
|
def _test(test_type)
|
54
64
|
return if $target && $target != @name
|
55
|
-
schema = YAML.load(@schema)
|
65
|
+
#schema = YAML.load(@schema)
|
66
|
+
parser = Kwalify::YamlParser.new(@schema)
|
67
|
+
schema = parser.parse()
|
56
68
|
case test_type
|
57
69
|
when :meta
|
58
|
-
meta_validator = Kwalify.
|
70
|
+
meta_validator = Kwalify::MetaValidator.instance()
|
59
71
|
errors = meta_validator.validate(schema)
|
72
|
+
parser.set_errors_linenum(errors)
|
73
|
+
errors.sort!
|
60
74
|
expected = @meta_msg
|
61
75
|
when :rule
|
62
76
|
errors = []
|
@@ -84,700 +98,3 @@ end
|
|
84
98
|
#if $0 == __FILE__
|
85
99
|
# Test::Unit::UI::Console::TestRunner.run(MetaValidatorTest)
|
86
100
|
#end
|
87
|
-
|
88
|
-
__END__
|
89
|
-
---
|
90
|
-
name: schema_notmap
|
91
|
-
desc: schema_notmap
|
92
|
-
#
|
93
|
-
schema: |
|
94
|
-
- type: str
|
95
|
-
- type: int
|
96
|
-
#
|
97
|
-
meta-msg: |
|
98
|
-
:type_unmatch : [/] not a mapping.
|
99
|
-
#
|
100
|
-
rule-msg: |
|
101
|
-
:schema_notmap : [/] schema definition is not a mapping.
|
102
|
-
# :invalid_schema : [/] schema definition is invalid.
|
103
|
-
#
|
104
|
-
---
|
105
|
-
name: type_unknown
|
106
|
-
desc: type_unknown
|
107
|
-
#
|
108
|
-
schema: |
|
109
|
-
type: map
|
110
|
-
mapping:
|
111
|
-
"name1":
|
112
|
-
type: str
|
113
|
-
"name2":
|
114
|
-
type: string
|
115
|
-
"age1":
|
116
|
-
type: int
|
117
|
-
"age2":
|
118
|
-
type: integer
|
119
|
-
"desc1":
|
120
|
-
type: text
|
121
|
-
"amount1":
|
122
|
-
type: float
|
123
|
-
"amount2":
|
124
|
-
type: number
|
125
|
-
"birth1":
|
126
|
-
type: date
|
127
|
-
"birth2":
|
128
|
-
type: time
|
129
|
-
"birth3":
|
130
|
-
type: timestamp
|
131
|
-
"data1":
|
132
|
-
type: scalar
|
133
|
-
"data2":
|
134
|
-
type: schalar
|
135
|
-
#
|
136
|
-
meta-msg: |
|
137
|
-
:enum_notexist : [/mapping/age2/type] 'integer': invalid type value.
|
138
|
-
:enum_notexist : [/mapping/name2/type] 'string': invalid type value.
|
139
|
-
:enum_notexist : [/mapping/data2/type] 'schalar': invalid type value.
|
140
|
-
#
|
141
|
-
rule-msg: |
|
142
|
-
:type_unknown : [/mapping/age2/type] 'integer': unknown type.
|
143
|
-
# :type_unknown : [/mapping/data2/type] 'schalar': unknown type.
|
144
|
-
# :type_unknown : [/mapping/data2] type 'schalar' is not found.
|
145
|
-
#
|
146
|
-
---
|
147
|
-
name: required_notbool
|
148
|
-
desc: required_notbool
|
149
|
-
#
|
150
|
-
schema: |
|
151
|
-
type: map
|
152
|
-
mapping:
|
153
|
-
"name":
|
154
|
-
type: str
|
155
|
-
required: 1
|
156
|
-
#
|
157
|
-
meta-msg: |
|
158
|
-
:type_unmatch : [/mapping/name/required] '1': not a boolean.
|
159
|
-
#
|
160
|
-
rule-msg: |
|
161
|
-
:required_notbool : [/mapping/name/required] '1': not a boolean.
|
162
|
-
# :required_notbool : [/mapping/name] 'required:' is not boolean.
|
163
|
-
#
|
164
|
-
---
|
165
|
-
name: pattern_syntaxerr
|
166
|
-
desc: pattern_syntaxerr
|
167
|
-
#
|
168
|
-
schema: |
|
169
|
-
type: str
|
170
|
-
pattern: /[A-/
|
171
|
-
#
|
172
|
-
meta-msg: |
|
173
|
-
:pattern_syntaxerr : [/pattern] '/[A-/': has regexp error.
|
174
|
-
#
|
175
|
-
rule-msg: |
|
176
|
-
:pattern_syntaxerr : [/pattern] '/[A-/': has regexp error.
|
177
|
-
# :pattern_syntaxerr : [/] 'pattern:' has regexp error (= /[A-/).
|
178
|
-
#
|
179
|
-
---
|
180
|
-
name: enum_notseq
|
181
|
-
desc: enum_notseq
|
182
|
-
#
|
183
|
-
schema: |
|
184
|
-
type: str
|
185
|
-
enum: A, B, C
|
186
|
-
#
|
187
|
-
meta-msg: |
|
188
|
-
:type_unmatch : [/enum] 'A, B, C': not a sequence.
|
189
|
-
#
|
190
|
-
rule-msg: |
|
191
|
-
:enum_notseq : [/enum] 'A, B, C': not a sequence.
|
192
|
-
# :enum_notseq : [/] 'enum:' is not a sequence.
|
193
|
-
#
|
194
|
-
---
|
195
|
-
name: enum_notscalar
|
196
|
-
desc: enum_notscalar
|
197
|
-
#
|
198
|
-
schema: |
|
199
|
-
type: seq
|
200
|
-
enum:
|
201
|
-
- A
|
202
|
-
- B
|
203
|
-
sequence:
|
204
|
-
- type: str
|
205
|
-
#
|
206
|
-
meta-msg: |
|
207
|
-
:enum_notscalar : [/] 'enum:': not available with seq or map.
|
208
|
-
#
|
209
|
-
rule-msg: |
|
210
|
-
:enum_notscalar : [/] 'enum:': not available with seq or map.
|
211
|
-
#
|
212
|
-
---
|
213
|
-
name: enum_duplicate
|
214
|
-
desc: enum_duplicate
|
215
|
-
#
|
216
|
-
schema: |
|
217
|
-
enum:
|
218
|
-
- A
|
219
|
-
- B
|
220
|
-
- A
|
221
|
-
#
|
222
|
-
meta-msg: |
|
223
|
-
:enum_duplicate : [/enum] 'A': duplicated enum value.
|
224
|
-
#
|
225
|
-
rule-msg: |
|
226
|
-
:enum_duplicate : [/enum] 'A': duplicated enum value.
|
227
|
-
#
|
228
|
-
---
|
229
|
-
name: enum_type_unmatch
|
230
|
-
desc: enum_type_unmatch
|
231
|
-
#
|
232
|
-
schema: |
|
233
|
-
enum:
|
234
|
-
- 100
|
235
|
-
- 200
|
236
|
-
#
|
237
|
-
meta-msg: |
|
238
|
-
:enum_type_unmatch : [/enum] '100': string type expected.
|
239
|
-
:enum_type_unmatch : [/enum] '200': string type expected.
|
240
|
-
#
|
241
|
-
rule-msg: |
|
242
|
-
:enum_type_unmatch : [/enum] '100': string type expected.
|
243
|
-
#
|
244
|
-
---
|
245
|
-
name: assert_notstr
|
246
|
-
desc: assert_notstr
|
247
|
-
#
|
248
|
-
schema: |
|
249
|
-
type: number
|
250
|
-
assert: 100
|
251
|
-
#
|
252
|
-
meta-msg: |
|
253
|
-
:type_unmatch : [/assert] '100': not a string.
|
254
|
-
#
|
255
|
-
rule-msg: |
|
256
|
-
:assert_notstr : [/assert] '100': not a string.
|
257
|
-
# :assert_notstr : [/] 'assert:' is not a string.
|
258
|
-
#
|
259
|
-
---
|
260
|
-
name: assert_noval
|
261
|
-
desc: assert_noval
|
262
|
-
#
|
263
|
-
schema: |
|
264
|
-
type: int
|
265
|
-
assert: value > 100
|
266
|
-
#
|
267
|
-
meta-msg: |
|
268
|
-
:pattern_unmatch : [/assert] 'value > 100': not matched to pattern /\bval\b/.
|
269
|
-
#
|
270
|
-
rule-msg: |
|
271
|
-
:assert_noval : [/assert] 'value > 100': 'val' is not used.
|
272
|
-
---
|
273
|
-
name: assert_syntaxerr
|
274
|
-
desc: assert_syntaxerr
|
275
|
-
#
|
276
|
-
schema: |
|
277
|
-
type: int
|
278
|
-
assert: 0 < val &&
|
279
|
-
#
|
280
|
-
meta-msg: |
|
281
|
-
:assert_syntaxerr : [/assert] '0 < val &&': expression syntax error.
|
282
|
-
#
|
283
|
-
rule-msg: |
|
284
|
-
:assert_syntaxerr : [/assert] '0 < val &&': expression syntax error.
|
285
|
-
#
|
286
|
-
---
|
287
|
-
name: range_notmap
|
288
|
-
desc: range_notmap
|
289
|
-
#
|
290
|
-
schema: |
|
291
|
-
type: int
|
292
|
-
range: 0 < val && val < 100
|
293
|
-
#
|
294
|
-
meta-msg: |
|
295
|
-
:type_unmatch : [/range] '0 < val && val < 100': not a mapping.
|
296
|
-
#
|
297
|
-
rule-msg: |
|
298
|
-
:range_notmap : [/range] '0 < val && val < 100': not a mapping.
|
299
|
-
#
|
300
|
-
---
|
301
|
-
name: range_notscalar
|
302
|
-
desc: range_notscalar
|
303
|
-
#
|
304
|
-
schema: |
|
305
|
-
type: seq
|
306
|
-
sequence:
|
307
|
-
- type: str
|
308
|
-
range: { max: 10, min: 10 }
|
309
|
-
#
|
310
|
-
meta-msg: |
|
311
|
-
:range_notscalar : [/] 'range:': is available only with scalar type.
|
312
|
-
#
|
313
|
-
rule-msg: |
|
314
|
-
:range_notscalar : [/] 'range:': is available only with scalar type.
|
315
|
-
#
|
316
|
-
---
|
317
|
-
name: range_type_unmatch
|
318
|
-
desc: range_type_unmatch
|
319
|
-
#
|
320
|
-
schema: |
|
321
|
-
type: int
|
322
|
-
range: { max: 10, min: 1.0 }
|
323
|
-
#
|
324
|
-
meta-msg: |
|
325
|
-
:range_type_unmatch : [/range/min] '1.0': not a integer.
|
326
|
-
#
|
327
|
-
rule-msg: |
|
328
|
-
:range_type_unmatch : [/range/min] '1.0': not a integer.
|
329
|
-
---
|
330
|
-
name: range_undefined
|
331
|
-
desc: range_undefined
|
332
|
-
#
|
333
|
-
schema: |
|
334
|
-
type: int
|
335
|
-
range: { max: 10, mim: 1 }
|
336
|
-
#
|
337
|
-
meta-msg: |
|
338
|
-
:key_undefined : [/range/mim] key 'mim:' is undefined.
|
339
|
-
# :key_undefined : [/range/mim] 'mim:': undefined key.
|
340
|
-
#
|
341
|
-
rule-msg: |
|
342
|
-
:range_undefined : [/range/mim] 'mim:': undefined key.
|
343
|
-
# :range_undefined : [/range/mim] key 'mim:' undefined key.
|
344
|
-
#
|
345
|
-
---
|
346
|
-
name: range_twomax
|
347
|
-
desc: range_twomax
|
348
|
-
#
|
349
|
-
schema: |
|
350
|
-
type: float
|
351
|
-
range: { max: 10.0, max-ex: 1.0 }
|
352
|
-
#
|
353
|
-
meta-msg: |
|
354
|
-
:range_twomax : [/range] both 'max' and 'max-ex' are not available at once.
|
355
|
-
#
|
356
|
-
rule-msg: |
|
357
|
-
:range_twomax : [/range] both 'max' and 'max-ex' are not available at once.
|
358
|
-
#
|
359
|
-
---
|
360
|
-
name: length_notmap
|
361
|
-
desc: length_notmap
|
362
|
-
#
|
363
|
-
schema: |
|
364
|
-
type: text
|
365
|
-
length: [ max:10, min:4 ]
|
366
|
-
#
|
367
|
-
meta-msg: |
|
368
|
-
:type_unmatch : [/length] not a mapping.
|
369
|
-
#
|
370
|
-
rule-msg: |
|
371
|
-
:length_notmap : [/length] not a mapping.
|
372
|
-
#
|
373
|
-
---
|
374
|
-
name: length_nottext
|
375
|
-
desc: length_nottext
|
376
|
-
#
|
377
|
-
schema: |
|
378
|
-
type: number
|
379
|
-
length: { max: 10, min: 0 }
|
380
|
-
#
|
381
|
-
meta-msg: |
|
382
|
-
:length_nottext : [/] 'length:': is available only with string or text.
|
383
|
-
#
|
384
|
-
rule-msg: |
|
385
|
-
:length_nottext : [/] 'length:': is available only with string or text.
|
386
|
-
#
|
387
|
-
---
|
388
|
-
name: length_notint
|
389
|
-
desc: length_notint
|
390
|
-
#
|
391
|
-
schema: |
|
392
|
-
type: text
|
393
|
-
length: { max: 10.1 }
|
394
|
-
#
|
395
|
-
meta-msg: |
|
396
|
-
:type_unmatch : [/length/max] '10.1': not a integer.
|
397
|
-
#
|
398
|
-
rule-msg: |
|
399
|
-
:length_notint : [/length/max] '10.1': not an integer.
|
400
|
-
#
|
401
|
-
---
|
402
|
-
name: length_undefined
|
403
|
-
desc: length_undefined
|
404
|
-
#
|
405
|
-
schema: |
|
406
|
-
type: text
|
407
|
-
length: { maximum: 10 }
|
408
|
-
#
|
409
|
-
meta-msg: |
|
410
|
-
:key_undefined : [/length/maximum] key 'maximum:' is undefined.
|
411
|
-
# :key_undefined : [/length/maximum] 'maximum:': undefined key.
|
412
|
-
#
|
413
|
-
rule-msg: |
|
414
|
-
:length_undefined : [/length/maximum] 'maximum:': undefined key.
|
415
|
-
# :length_undefined : [/length/maximum] key 'maximum:' is undefined.
|
416
|
-
#
|
417
|
-
---
|
418
|
-
name: length_twomax
|
419
|
-
desc: length_twomax
|
420
|
-
#
|
421
|
-
schema: |
|
422
|
-
type: str
|
423
|
-
length: { max: 10, max-ex: 1 }
|
424
|
-
#
|
425
|
-
meta-msg: |
|
426
|
-
:length_twomax : [/length] both 'max' and 'max-ex' are not available at once.
|
427
|
-
#
|
428
|
-
rule-msg: |
|
429
|
-
:length_twomax : [/length] both 'max' and 'max-ex' are not available at once.
|
430
|
-
#
|
431
|
-
---
|
432
|
-
name: sequence_notseq
|
433
|
-
desc: sequence_notseq
|
434
|
-
#
|
435
|
-
schema: |
|
436
|
-
type: seq
|
437
|
-
sequence: |
|
438
|
-
- type: str
|
439
|
-
#
|
440
|
-
meta-msg: |
|
441
|
-
:type_unmatch : [/sequence] '- type: str\n': not a sequence.
|
442
|
-
#
|
443
|
-
rule-msg: |
|
444
|
-
:sequence_notseq : [/sequence] '- type: str\n': not a sequence.
|
445
|
-
#
|
446
|
-
---
|
447
|
-
name: sequence_noelem
|
448
|
-
desc: sequence_noelem
|
449
|
-
#
|
450
|
-
schema: |
|
451
|
-
type: seq
|
452
|
-
sequence:
|
453
|
-
#
|
454
|
-
meta-msg: |
|
455
|
-
:sequence_noelem : [/sequence] required one element.
|
456
|
-
# :type_unmatch : [/sequence] not a sequence.
|
457
|
-
#
|
458
|
-
rule-msg: |
|
459
|
-
:sequence_noelem : [/sequence] required one element.
|
460
|
-
#
|
461
|
-
---
|
462
|
-
name: sequence_toomany
|
463
|
-
desc: sequence_toomany
|
464
|
-
#
|
465
|
-
schema: |
|
466
|
-
type: seq
|
467
|
-
sequence:
|
468
|
-
- type: text
|
469
|
-
- type: text
|
470
|
-
#
|
471
|
-
meta-msg: |
|
472
|
-
:sequence_toomany : [/sequence] required just one element.
|
473
|
-
#
|
474
|
-
rule-msg: |
|
475
|
-
:sequence_toomany : [/sequence] required just one element.
|
476
|
-
#
|
477
|
-
---
|
478
|
-
name: mapping_notmap
|
479
|
-
desc: mapping_notmap
|
480
|
-
#
|
481
|
-
schema: |
|
482
|
-
type: map
|
483
|
-
mapping: |
|
484
|
-
"name":
|
485
|
-
type: str
|
486
|
-
#
|
487
|
-
meta-msg: |
|
488
|
-
:type_unmatch : [/mapping] '"name":\n type: str\n': not a mapping.
|
489
|
-
#
|
490
|
-
rule-msg: |
|
491
|
-
:mapping_notmap : [/mapping] '"name":\n type: str\n': not a mapping.
|
492
|
-
#
|
493
|
-
---
|
494
|
-
name: mapping_noelem
|
495
|
-
desc: mapping_noelem
|
496
|
-
#
|
497
|
-
schema: |
|
498
|
-
type: map
|
499
|
-
mapping:
|
500
|
-
#
|
501
|
-
meta-msg: |
|
502
|
-
:mapping_noelem : [/mapping] required at least one element.
|
503
|
-
#
|
504
|
-
rule-msg: |
|
505
|
-
:mapping_noelem : [/mapping] required at least one element.
|
506
|
-
#
|
507
|
-
---
|
508
|
-
name: key_unknown
|
509
|
-
desc: key_unknown
|
510
|
-
#
|
511
|
-
schema: |
|
512
|
-
type: str
|
513
|
-
values:
|
514
|
-
- one
|
515
|
-
- two
|
516
|
-
#
|
517
|
-
meta-msg: |
|
518
|
-
:key_undefined : [/values] key 'values:' is undefined.
|
519
|
-
# :key_undefined : [/values] 'values:': undefined key.
|
520
|
-
#
|
521
|
-
rule-msg: |
|
522
|
-
:key_unknown : [/values] 'values:': unknown key.
|
523
|
-
# :key_unknown : [/values] key 'values:' is unknown.
|
524
|
-
#
|
525
|
-
---
|
526
|
-
name: seq_nosequence
|
527
|
-
desc: seq_nosequence
|
528
|
-
#
|
529
|
-
schema: |
|
530
|
-
type: seq
|
531
|
-
#
|
532
|
-
meta-msg: |
|
533
|
-
:seq_nosequence : [/] type 'seq' requires 'sequence:'.
|
534
|
-
#
|
535
|
-
rule-msg: |
|
536
|
-
:seq_nosequence : [/] type 'seq' requires 'sequence:'.
|
537
|
-
#
|
538
|
-
---
|
539
|
-
name: seq_conflict
|
540
|
-
desc: seq_conflict
|
541
|
-
#
|
542
|
-
schema: |
|
543
|
-
type: seq
|
544
|
-
mapping: { name: {type: str} }
|
545
|
-
sequence:
|
546
|
-
- type: str
|
547
|
-
# pattern: /abc/
|
548
|
-
# range: { max: 10 }
|
549
|
-
# length: { max: 10 }
|
550
|
-
# enum: [ A, B, C ]
|
551
|
-
#
|
552
|
-
meta-msg: |
|
553
|
-
:seq_conflict : [/] 'mapping:': not available with sequence.
|
554
|
-
# :seq_conflict : [/] 'enum:': not available with sequence.
|
555
|
-
# :seq_conflict : [/] 'pattern:': not available with sequence.
|
556
|
-
# :seq_conflict : [/] 'range:': not available with sequence.
|
557
|
-
# :seq_conflict : [/] 'length:': not available with sequence.
|
558
|
-
#
|
559
|
-
rule-msg: |
|
560
|
-
:seq_conflict : [/] 'mapping:': not available with sequence.
|
561
|
-
# :enum_notscalar : [/] 'enum:': not available with seq or map.
|
562
|
-
# :seq_conflict : [/] 'enum:': not available with sequence.
|
563
|
-
# :seq_conflict : [/] 'pattern:': not available with sequence.
|
564
|
-
# :seq_conflict : [/] 'range:': not available with sequence.
|
565
|
-
# :seq_conflict : [/] 'length:': not available with sequence.
|
566
|
-
#
|
567
|
-
---
|
568
|
-
name: map_nomapping
|
569
|
-
desc: map_nomapping
|
570
|
-
#
|
571
|
-
schema: |
|
572
|
-
type: map
|
573
|
-
#
|
574
|
-
meta-msg: |
|
575
|
-
:map_nomapping : [/] type 'map' requires 'mapping:'.
|
576
|
-
#
|
577
|
-
rule-msg: |
|
578
|
-
:map_nomapping : [/] type 'map' requires 'mapping:'.
|
579
|
-
#
|
580
|
-
---
|
581
|
-
name: map_conflict
|
582
|
-
desc: map_conflict
|
583
|
-
#
|
584
|
-
schema: |
|
585
|
-
type: map
|
586
|
-
mapping:
|
587
|
-
"name":
|
588
|
-
type: str
|
589
|
-
sequence:
|
590
|
-
- type: str
|
591
|
-
#
|
592
|
-
meta-msg: |
|
593
|
-
:map_conflict : [/] 'sequence:': not available with mapping.
|
594
|
-
#
|
595
|
-
rule-msg: |
|
596
|
-
:map_conflict : [/] 'sequence:': not available with mapping.
|
597
|
-
#
|
598
|
-
---
|
599
|
-
name: scalar_confict
|
600
|
-
desc: scalar_confict
|
601
|
-
#
|
602
|
-
schema: |
|
603
|
-
type: int
|
604
|
-
sequence:
|
605
|
-
- type: str
|
606
|
-
mapping:
|
607
|
-
"name":
|
608
|
-
type: str
|
609
|
-
#
|
610
|
-
meta-msg: |
|
611
|
-
:scalar_conflict : [/] 'sequence:': not available with scalar type.
|
612
|
-
:scalar_conflict : [/] 'mapping:': not available with scalar type.
|
613
|
-
#
|
614
|
-
rule-msg: |
|
615
|
-
:scalar_conflict : [/] 'sequence:': not available with scalar type.
|
616
|
-
# :scalar_conflict : [/] 'mapping:': not available with scalar type.
|
617
|
-
#
|
618
|
-
---
|
619
|
-
name: enum_conflict
|
620
|
-
desc: enum_conflict
|
621
|
-
#
|
622
|
-
schema: |
|
623
|
-
type: str
|
624
|
-
required: yes
|
625
|
-
enum:
|
626
|
-
- aa
|
627
|
-
- bb
|
628
|
-
range: { max: aa, min: xx }
|
629
|
-
length: { max: 3 }
|
630
|
-
pattern: /0/
|
631
|
-
#
|
632
|
-
meta-msg: |
|
633
|
-
:enum_conflict : [/] 'range:': not available with 'enum:'.
|
634
|
-
:enum_conflict : [/] 'length:': not available with 'enum:'.
|
635
|
-
:enum_conflict : [/] 'pattern:': not available with 'enum:'.
|
636
|
-
#
|
637
|
-
rule-msg: |
|
638
|
-
:enum_conflict : [/] 'range:': not available with 'enum:'.
|
639
|
-
# :enum_conflict : [/] 'length:': not available with 'enum:'.
|
640
|
-
# :enum_conflict : [/] 'pattern:': not available with 'enum:'.
|
641
|
-
#
|
642
|
-
---
|
643
|
-
name: unique_notbool
|
644
|
-
desc: unique_notbool
|
645
|
-
#
|
646
|
-
schema: |
|
647
|
-
type: seq
|
648
|
-
sequence:
|
649
|
-
- type: map
|
650
|
-
mapping:
|
651
|
-
"id":
|
652
|
-
type: int
|
653
|
-
unique: 'yes'
|
654
|
-
"name":
|
655
|
-
type: str
|
656
|
-
#
|
657
|
-
meta-msg: |
|
658
|
-
:type_unmatch : [/sequence/0/mapping/id/unique] 'yes': not a boolean.
|
659
|
-
#
|
660
|
-
rule-msg: |
|
661
|
-
:unique_notbool : [/sequence/0/mapping/id/unique] 'yes': not a boolean.
|
662
|
-
#
|
663
|
-
---
|
664
|
-
name: unique_notscalar
|
665
|
-
desc: unique_notscalar
|
666
|
-
#
|
667
|
-
schema: |
|
668
|
-
type: seq
|
669
|
-
sequence:
|
670
|
-
- type: map
|
671
|
-
mapping:
|
672
|
-
"id":
|
673
|
-
type: int
|
674
|
-
unique: yes
|
675
|
-
"values":
|
676
|
-
type: seq
|
677
|
-
unique: yes
|
678
|
-
sequence:
|
679
|
-
- type: str
|
680
|
-
#
|
681
|
-
meta-msg: |
|
682
|
-
:unique_notscalar : [/sequence/0/mapping/values] 'unique:': is available only with a scalar type.
|
683
|
-
#
|
684
|
-
rule-msg: |
|
685
|
-
:unique_notscalar : [/sequence/0/mapping/values] 'unique:': is available only with a scalar type.
|
686
|
-
#
|
687
|
-
---
|
688
|
-
name: unique_root
|
689
|
-
desc: unique_root
|
690
|
-
#
|
691
|
-
schema: |
|
692
|
-
type: str
|
693
|
-
unique: yes
|
694
|
-
#
|
695
|
-
meta-msg: |
|
696
|
-
:unique_onroot : [/] 'unique:': is not available on root element.
|
697
|
-
#
|
698
|
-
rule-msg: |
|
699
|
-
:unique_onroot : [/] 'unique:': is not available on root element.
|
700
|
-
#
|
701
|
-
---
|
702
|
-
name: ident_notbool
|
703
|
-
desc: ident_notbool
|
704
|
-
#
|
705
|
-
schema: |
|
706
|
-
type: seq
|
707
|
-
sequence:
|
708
|
-
- type: map
|
709
|
-
mapping:
|
710
|
-
"id":
|
711
|
-
type: int
|
712
|
-
ident: 'yes'
|
713
|
-
"name":
|
714
|
-
type: str
|
715
|
-
#
|
716
|
-
meta-msg: |
|
717
|
-
:type_unmatch : [/sequence/0/mapping/id/ident] 'yes': not a boolean.
|
718
|
-
#
|
719
|
-
rule-msg: |
|
720
|
-
:ident_notbool : [/sequence/0/mapping/id/ident] 'yes': not a boolean.
|
721
|
-
#
|
722
|
-
---
|
723
|
-
name: ident_notscalar
|
724
|
-
desc: ident_notscalar
|
725
|
-
#
|
726
|
-
schema: |
|
727
|
-
type: seq
|
728
|
-
sequence:
|
729
|
-
- type: map
|
730
|
-
mapping:
|
731
|
-
"id":
|
732
|
-
type: int
|
733
|
-
ident: yes
|
734
|
-
"values":
|
735
|
-
type: seq
|
736
|
-
ident: yes
|
737
|
-
sequence:
|
738
|
-
- type: str
|
739
|
-
#
|
740
|
-
meta-msg: |
|
741
|
-
:ident_notscalar : [/sequence/0/mapping/values] 'ident:': is available only with a scalar type.
|
742
|
-
#
|
743
|
-
rule-msg: |
|
744
|
-
:ident_notscalar : [/sequence/0/mapping/values] 'ident:': is available only with a scalar type.
|
745
|
-
#
|
746
|
-
---
|
747
|
-
name: ident_root
|
748
|
-
desc: ident_root
|
749
|
-
#
|
750
|
-
schema: |
|
751
|
-
type: str
|
752
|
-
ident: yes
|
753
|
-
#
|
754
|
-
meta-msg: |
|
755
|
-
:ident_onroot : [/] 'ident:': is not available on root element.
|
756
|
-
#
|
757
|
-
rule-msg: |
|
758
|
-
:ident_onroot : [/] 'ident:': is not available on root element.
|
759
|
-
#
|
760
|
-
---
|
761
|
-
name: ident_notmap
|
762
|
-
desc: ident_notmap
|
763
|
-
#
|
764
|
-
schema: |
|
765
|
-
type: seq
|
766
|
-
sequence:
|
767
|
-
- type: map
|
768
|
-
mapping:
|
769
|
-
"id":
|
770
|
-
type: int
|
771
|
-
ident: yes
|
772
|
-
"values":
|
773
|
-
type: seq
|
774
|
-
sequence:
|
775
|
-
- type: str
|
776
|
-
ident: yes
|
777
|
-
#
|
778
|
-
meta-msg: |
|
779
|
-
:ident_notmap : [/sequence/0/mapping/values/sequence/0] 'ident:': is available only with an element of mapping.
|
780
|
-
#
|
781
|
-
rule-msg: |
|
782
|
-
:ident_notmap : [/sequence/0/mapping/values/sequence/0] 'ident:': is available only with an element of mapping.
|
783
|
-
#
|