ddao-kwalify 0.7.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (208) hide show
  1. data/CHANGES.txt +243 -0
  2. data/MIT-LICENSE +20 -0
  3. data/README.txt +61 -0
  4. data/bin/kwalify +13 -0
  5. data/contrib/inline-require +153 -0
  6. data/contrib/kwalify +4159 -0
  7. data/doc-api/classes/CommandOptionError.html +184 -0
  8. data/doc-api/classes/CommandOptionParser.html +325 -0
  9. data/doc-api/classes/Kwalify.html +292 -0
  10. data/doc-api/classes/Kwalify/AssertionError.html +148 -0
  11. data/doc-api/classes/Kwalify/BaseError.html +297 -0
  12. data/doc-api/classes/Kwalify/BaseParser.html +461 -0
  13. data/doc-api/classes/Kwalify/CommandOptionError.html +168 -0
  14. data/doc-api/classes/Kwalify/ErrorHelper.html +223 -0
  15. data/doc-api/classes/Kwalify/HashInterface.html +118 -0
  16. data/doc-api/classes/Kwalify/Json.html +105 -0
  17. data/doc-api/classes/Kwalify/KwalifyError.html +111 -0
  18. data/doc-api/classes/Kwalify/Main.html +339 -0
  19. data/doc-api/classes/Kwalify/MetaValidator.html +448 -0
  20. data/doc-api/classes/Kwalify/Parser.html +155 -0
  21. data/doc-api/classes/Kwalify/PlainYamlParser.html +523 -0
  22. data/doc-api/classes/Kwalify/PlainYamlParser/Alias.html +165 -0
  23. data/doc-api/classes/Kwalify/Rule.html +433 -0
  24. data/doc-api/classes/Kwalify/SchemaError.html +148 -0
  25. data/doc-api/classes/Kwalify/SyntaxError.html +185 -0
  26. data/doc-api/classes/Kwalify/Types.html +302 -0
  27. data/doc-api/classes/Kwalify/Util.html +389 -0
  28. data/doc-api/classes/Kwalify/Util/HashLike.html +246 -0
  29. data/doc-api/classes/Kwalify/Util/OrderedHash.html +330 -0
  30. data/doc-api/classes/Kwalify/ValidationError.html +148 -0
  31. data/doc-api/classes/Kwalify/Validator.html +381 -0
  32. data/doc-api/classes/Kwalify/Yaml.html +194 -0
  33. data/doc-api/classes/Kwalify/Yaml/Parser.html +1538 -0
  34. data/doc-api/classes/Kwalify/YamlParser.html +542 -0
  35. data/doc-api/classes/Kwalify/YamlSyntaxError.html +119 -0
  36. data/doc-api/classes/Test.html +107 -0
  37. data/doc-api/classes/Test/Unit.html +101 -0
  38. data/doc-api/created.rid +1 -0
  39. data/doc-api/files/__/README_txt.html +172 -0
  40. data/doc-api/files/kwalify/errors_rb.html +114 -0
  41. data/doc-api/files/kwalify/main_rb.html +118 -0
  42. data/doc-api/files/kwalify/messages_rb.html +107 -0
  43. data/doc-api/files/kwalify/meta-validator_rb.html +117 -0
  44. data/doc-api/files/kwalify/parser/base_rb.html +116 -0
  45. data/doc-api/files/kwalify/parser/yaml_rb.html +117 -0
  46. data/doc-api/files/kwalify/rule_rb.html +116 -0
  47. data/doc-api/files/kwalify/types_rb.html +114 -0
  48. data/doc-api/files/kwalify/util/assert-text-equal_rb.html +115 -0
  49. data/doc-api/files/kwalify/util/hash-interface_rb.html +114 -0
  50. data/doc-api/files/kwalify/util/hashlike_rb.html +107 -0
  51. data/doc-api/files/kwalify/util/option-parser_rb.html +107 -0
  52. data/doc-api/files/kwalify/util/ordered-hash_rb.html +107 -0
  53. data/doc-api/files/kwalify/util/testcase-helper_rb.html +115 -0
  54. data/doc-api/files/kwalify/util_rb.html +107 -0
  55. data/doc-api/files/kwalify/validator_rb.html +117 -0
  56. data/doc-api/files/kwalify/yaml-parser_rb.html +117 -0
  57. data/doc-api/files/kwalify_rb.html +121 -0
  58. data/doc-api/fr_class_index.html +57 -0
  59. data/doc-api/fr_file_index.html +45 -0
  60. data/doc-api/fr_method_index.html +168 -0
  61. data/doc-api/index.html +24 -0
  62. data/doc-api/rdoc-style.css +208 -0
  63. data/doc/docstyle.css +188 -0
  64. data/doc/img/fig01.png +0 -0
  65. data/doc/users-guide.html +2050 -0
  66. data/examples/address-book/Makefile +10 -0
  67. data/examples/address-book/address-book.schema.yaml +45 -0
  68. data/examples/address-book/address-book.yaml +36 -0
  69. data/examples/data-binding/BABEL.data.yaml +63 -0
  70. data/examples/data-binding/BABEL.schema.yaml +31 -0
  71. data/examples/data-binding/Makefile +8 -0
  72. data/examples/data-binding/Rakefile +13 -0
  73. data/examples/data-binding/main.rb +27 -0
  74. data/examples/invoice/Makefile +9 -0
  75. data/examples/invoice/invoice.schema.yaml +43 -0
  76. data/examples/invoice/invoice.yaml +32 -0
  77. data/examples/tapkit/Makefile +10 -0
  78. data/examples/tapkit/main.rb +7 -0
  79. data/examples/tapkit/tapkit.schema.yaml +146 -0
  80. data/examples/tapkit/tapkit.yaml +85 -0
  81. data/lib/kwalify.rb +67 -0
  82. data/lib/kwalify/errors.rb +128 -0
  83. data/lib/kwalify/kwalify.schema.yaml +58 -0
  84. data/lib/kwalify/main.rb +442 -0
  85. data/lib/kwalify/messages.rb +173 -0
  86. data/lib/kwalify/meta-validator.rb +276 -0
  87. data/lib/kwalify/parser/base.rb +127 -0
  88. data/lib/kwalify/parser/yaml.rb +841 -0
  89. data/lib/kwalify/rule.rb +560 -0
  90. data/lib/kwalify/templates/genclass-java.eruby +222 -0
  91. data/lib/kwalify/templates/genclass-php.eruby +104 -0
  92. data/lib/kwalify/templates/genclass-ruby.eruby +113 -0
  93. data/lib/kwalify/types.rb +156 -0
  94. data/lib/kwalify/util.rb +157 -0
  95. data/lib/kwalify/util/assert-text-equal.rb +46 -0
  96. data/lib/kwalify/util/hash-interface.rb +18 -0
  97. data/lib/kwalify/util/hashlike.rb +51 -0
  98. data/lib/kwalify/util/option-parser.rb +220 -0
  99. data/lib/kwalify/util/ordered-hash.rb +57 -0
  100. data/lib/kwalify/util/testcase-helper.rb +112 -0
  101. data/lib/kwalify/validator.rb +282 -0
  102. data/lib/kwalify/yaml-parser.rb +870 -0
  103. data/setup.rb +1585 -0
  104. data/test/Rookbook.yaml +10 -0
  105. data/test/data/users-guide/AddressBook.java.expected +40 -0
  106. data/test/data/users-guide/BABEL.data.yaml +24 -0
  107. data/test/data/users-guide/BABEL.schema.yaml +30 -0
  108. data/test/data/users-guide/ExampleAddressBook.java +47 -0
  109. data/test/data/users-guide/Group.java.expected +24 -0
  110. data/test/data/users-guide/Person.java.expected +44 -0
  111. data/test/data/users-guide/address_book.rb +52 -0
  112. data/test/data/users-guide/address_book.schema.yaml +28 -0
  113. data/test/data/users-guide/address_book.yaml +27 -0
  114. data/test/data/users-guide/answers-schema.yaml +12 -0
  115. data/test/data/users-guide/answers-validator.rb +52 -0
  116. data/test/data/users-guide/babel_genclass.result +26 -0
  117. data/test/data/users-guide/config.schema.yaml +7 -0
  118. data/test/data/users-guide/config.yaml +4 -0
  119. data/test/data/users-guide/document01a.yaml +3 -0
  120. data/test/data/users-guide/document01b.yaml +3 -0
  121. data/test/data/users-guide/document02a.yaml +4 -0
  122. data/test/data/users-guide/document02b.yaml +4 -0
  123. data/test/data/users-guide/document03a.yaml +6 -0
  124. data/test/data/users-guide/document03b.yaml +6 -0
  125. data/test/data/users-guide/document04a.yaml +9 -0
  126. data/test/data/users-guide/document04b.yaml +9 -0
  127. data/test/data/users-guide/document05a.yaml +11 -0
  128. data/test/data/users-guide/document05b.yaml +12 -0
  129. data/test/data/users-guide/document06a.yaml +15 -0
  130. data/test/data/users-guide/document06b.yaml +16 -0
  131. data/test/data/users-guide/document07a.yaml +9 -0
  132. data/test/data/users-guide/document07b.yaml +7 -0
  133. data/test/data/users-guide/document12a.json +10 -0
  134. data/test/data/users-guide/document12b.json +6 -0
  135. data/test/data/users-guide/document13a.yaml +17 -0
  136. data/test/data/users-guide/document14a.yaml +3 -0
  137. data/test/data/users-guide/document14b.yaml +3 -0
  138. data/test/data/users-guide/document15a.yaml +6 -0
  139. data/test/data/users-guide/document15b.yaml +5 -0
  140. data/test/data/users-guide/example_address_book.rb +10 -0
  141. data/test/data/users-guide/example_address_book_java.result +32 -0
  142. data/test/data/users-guide/example_address_book_ruby.result +31 -0
  143. data/test/data/users-guide/genclass_java.result +4 -0
  144. data/test/data/users-guide/howto-validation-with-parsing.rb +28 -0
  145. data/test/data/users-guide/howto-validation.rb +25 -0
  146. data/test/data/users-guide/howto3.rb +6 -0
  147. data/test/data/users-guide/howto3.result +5 -0
  148. data/test/data/users-guide/howto3.yaml +8 -0
  149. data/test/data/users-guide/howto5_databinding.result +111 -0
  150. data/test/data/users-guide/invalid01.result +3 -0
  151. data/test/data/users-guide/invalid02.result +5 -0
  152. data/test/data/users-guide/invalid03.result +5 -0
  153. data/test/data/users-guide/invalid04.result +4 -0
  154. data/test/data/users-guide/invalid05.result +11 -0
  155. data/test/data/users-guide/invalid06.result +4 -0
  156. data/test/data/users-guide/invalid07.result +3 -0
  157. data/test/data/users-guide/invalid08.result +3 -0
  158. data/test/data/users-guide/invalid12.json +8 -0
  159. data/test/data/users-guide/invalid14.result +4 -0
  160. data/test/data/users-guide/invalid15.result +4 -0
  161. data/test/data/users-guide/loadbabel.rb +27 -0
  162. data/test/data/users-guide/loadconfig.rb +16 -0
  163. data/test/data/users-guide/loadconfig.result +6 -0
  164. data/test/data/users-guide/models.rb +22 -0
  165. data/test/data/users-guide/option_ha.result +6 -0
  166. data/test/data/users-guide/option_ha_genclass_java.result +7 -0
  167. data/test/data/users-guide/schema01.yaml +3 -0
  168. data/test/data/users-guide/schema02.yaml +12 -0
  169. data/test/data/users-guide/schema03.yaml +9 -0
  170. data/test/data/users-guide/schema04.yaml +20 -0
  171. data/test/data/users-guide/schema05.yaml +29 -0
  172. data/test/data/users-guide/schema06.yaml +11 -0
  173. data/test/data/users-guide/schema12.json +12 -0
  174. data/test/data/users-guide/schema13.yaml +13 -0
  175. data/test/data/users-guide/schema14.yaml +5 -0
  176. data/test/data/users-guide/schema15.yaml +21 -0
  177. data/test/data/users-guide/valid01.result +2 -0
  178. data/test/data/users-guide/valid02.result +2 -0
  179. data/test/data/users-guide/valid03.result +2 -0
  180. data/test/data/users-guide/valid04.result +2 -0
  181. data/test/data/users-guide/valid05.result +2 -0
  182. data/test/data/users-guide/valid06.result +2 -0
  183. data/test/data/users-guide/valid07.result +2 -0
  184. data/test/data/users-guide/valid08.result +2 -0
  185. data/test/data/users-guide/valid12.result +2 -0
  186. data/test/data/users-guide/valid13.result +2 -0
  187. data/test/data/users-guide/valid14.result +2 -0
  188. data/test/data/users-guide/valid15.result +2 -0
  189. data/test/data/users-guide/validate08.rb +37 -0
  190. data/test/test-action.rb +78 -0
  191. data/test/test-action.yaml +738 -0
  192. data/test/test-databinding.rb +83 -0
  193. data/test/test-databinding.yaml +339 -0
  194. data/test/test-main.rb +157 -0
  195. data/test/test-main.yaml +384 -0
  196. data/test/test-metavalidator.rb +80 -0
  197. data/test/test-metavalidator.yaml +1179 -0
  198. data/test/test-parser-yaml.rb +57 -0
  199. data/test/test-parser-yaml.yaml +1749 -0
  200. data/test/test-rule.rb +26 -0
  201. data/test/test-rule.yaml +317 -0
  202. data/test/test-users-guide.rb +75 -0
  203. data/test/test-validator.rb +95 -0
  204. data/test/test-validator.yaml +986 -0
  205. data/test/test-yaml-parser.rb +47 -0
  206. data/test/test-yaml-parser.yaml +1226 -0
  207. data/test/test.rb +60 -0
  208. metadata +261 -0
@@ -0,0 +1,384 @@
1
+ ##
2
+ ## $Rev: 93 $
3
+ ## $Release: 0.7.1 $
4
+ ## copyright(c) 2005-2008 kuwata-lab all rights reserved.
5
+ ##
6
+ ---
7
+ - name: parseOptions1
8
+ desc: test Main#parseOptions()
9
+ method: parseOptions
10
+ args: [ -hvsmtlEDf, schema.yaml, -a, gemclass-ruby, -Ipath/to/dir, document.yaml, document2.yaml ]
11
+ expected: |
12
+ command: kwalify
13
+ options:
14
+ - action: gemclass-ruby
15
+ - debug: true
16
+ - emacs: true
17
+ - help: true
18
+ - linenum: true
19
+ - meta: true
20
+ - quiet: true
21
+ - schema: schema.yaml
22
+ - tpath: path/to/dir
23
+ - untabify: true
24
+ - version: true
25
+ properties:
26
+ filenames:
27
+ - document.yaml
28
+ - document2.yaml
29
+ ##
30
+ - name: parseOptions2
31
+ desc: -ffilename
32
+ method: parseOptions
33
+ args: [ -lfschema.yaml, -hagenclass-ruby, -I/path/to/dir]
34
+ expected: |
35
+ command: kwalify
36
+ options:
37
+ - action: genclass-ruby
38
+ - help: true
39
+ - linenum: true
40
+ - schema: schema.yaml
41
+ - tpath: /path/to/dir
42
+ properties:
43
+ filenames:
44
+ ##
45
+ - name: parseOptions3
46
+ desc: "'--help' is equal to '-h'"
47
+ method: parseOptions
48
+ args: [ --help, document.yaml ]
49
+ expected: |
50
+ command: kwalify
51
+ options:
52
+ - help: true
53
+ properties:
54
+ - help: true
55
+ filenames:
56
+ - document.yaml
57
+ ##
58
+ - name: parseOptions4
59
+ desc: "'-E' turns on '-l'"
60
+ method: parseOptions
61
+ args: [ -E, document.yaml ]
62
+ expected: |
63
+ command: kwalify
64
+ options:
65
+ - emacs: true
66
+ - linenum: true
67
+ properties:
68
+ filenames:
69
+ - document.yaml
70
+ ##
71
+ ---
72
+ - name: optionError1
73
+ desc: invalid command-line option
74
+ method: parseOptions
75
+ args: [ -hvi ]
76
+ inspect: '*'
77
+ exception*:
78
+ ruby: CommandOptionError
79
+ java: CommandOptionException
80
+ message: "-i: invalid command option."
81
+ error_symbol*:
82
+ ruby: !ruby/sym :command_option_invalid
83
+ java: command.option.invalid
84
+ ##
85
+ - name: optionError2
86
+ desc: no argument of '-f'
87
+ method: parseOptions
88
+ args: [ -f ]
89
+ inspect: '*'
90
+ exception*:
91
+ ruby: CommandOptionError
92
+ java: CommandOptionException
93
+ message: "-f: schema filename is required."
94
+ error_symbol*:
95
+ ruby: !ruby/sym :command_option_schema_required
96
+ java: command.option.noschema
97
+ ####
98
+ ##name: optionError3
99
+ ##desc: invalid property
100
+ ##method: parseOptions
101
+ ##args: [ --foo@var ]
102
+ ##inspect: '*'
103
+ ##exception*:
104
+ ## ruby: CommandOptionError
105
+ ## #java: CommandOptionException
106
+ ##message: "'--foo@var': invalid property."
107
+ ##error_symbol*:
108
+ ## ruby: !ruby/sym :command_property_invalid
109
+ ## #java: command.property.invalid
110
+ #
111
+
112
+ ##
113
+ - name: optionError4
114
+ desc: action required
115
+ method: execute
116
+ args: [ document.yaml ]
117
+ inspect: '*'
118
+ expected: |
119
+ exception*:
120
+ ruby: CommandOptionError
121
+ java: CommandOptionException
122
+ message: "command-line option '-f' or '-m' required."
123
+ error_symbol*:
124
+ ruby: !ruby/sym :command_option_noschema
125
+ java: command.option.noaction
126
+ ##
127
+ ---
128
+ - name: version # -v
129
+ desc: option '-v'
130
+ method: execute
131
+ args: [ -vt, document.yaml ]
132
+ expected: |
133
+ 0.0.0
134
+ ##
135
+ - name: help # -h
136
+ desc: option '-h'
137
+ method: execute
138
+ args: [ -hD, document.yaml ]
139
+ expected: |
140
+ kwalify - schema validator and data binding tool for YAML and JSON
141
+ ## Usage1: validate yaml document
142
+ kwalify [..options..] -f schema.yaml doc.yaml [doc2.yaml ...]
143
+ ## Usage2: validate schema definition
144
+ kwalify [..options..] -m schema.yaml [schema2.yaml ...]
145
+ ## Usage3: do action
146
+ kwalify [..options..] -a action -f schema.yaml [schema2.yaml ...]
147
+ -h, --help : help
148
+ -v : version
149
+ -q : quiet
150
+ -s : silent (obsolete, use '-q' instead)
151
+ -f schema.yaml : schema definition file
152
+ -m : meta-validation mode
153
+ -t : expand tab characters
154
+ -l : show linenumber when errored (experimental)
155
+ -E : show errors in emacs-style (experimental, implies '-l')
156
+ -a action : action ('genclass-ruby', 'genclass-php', 'genclass-java')
157
+ (try '-ha genclass-ruby' for details)
158
+ -I path : template path (for '-a')
159
+ -P : allow preceding alias
160
+ ##
161
+ - name: quiet1 # -q
162
+ desc: option '-q' (valid)
163
+ method: execute
164
+ args: [ -qf, quiet1.schema, quiet1.document ]
165
+ expected: |
166
+ schema: &quiet1_schema |
167
+ type: seq
168
+ sequence:
169
+ - type: str
170
+ document: &quiet1_document |
171
+ - foo
172
+ - bar
173
+ - baz
174
+ ##
175
+ - name: quiet2 # -s
176
+ desc: option '-s' (invalid)
177
+ method: execute
178
+ args: [ -sf, quiet2.schema, quiet2.document ]
179
+ expected: |
180
+ quiet2.document#1: INVALID
181
+ - [/1] '123': not a string.
182
+ - [/2] 'true': not a string.
183
+ schema: &quiet2_schema |
184
+ type: seq
185
+ sequence:
186
+ - type: str
187
+ document: &quiet2_document |
188
+ - foo
189
+ - bar
190
+ - baz
191
+ ---
192
+ - foo
193
+ - 123
194
+ - true
195
+ ##
196
+ - name: silent1 # -s
197
+ desc: option '-s' (valid)
198
+ method: execute
199
+ args: [ -sf, silent1.schema, silent1.document ]
200
+ expected: |
201
+ schema: *quiet1_schema
202
+ document: *quiet1_document
203
+ ##
204
+ - name: silent2 # -s
205
+ desc: option '-s' (invalid)
206
+ method: execute
207
+ args: [ -sf, silent2.schema, silent2.document ]
208
+ expected: |
209
+ silent2.document#1: INVALID
210
+ - [/1] '123': not a string.
211
+ - [/2] 'true': not a string.
212
+ schema: *quiet2_schema
213
+ document: *quiet2_document
214
+ ##
215
+ - name: untabify # -t
216
+ desc: option '-t'
217
+ method: execute
218
+ args: [ -tf, untabify.schema, untabify.document ]
219
+ expected: |
220
+ untabify.document#0: valid.
221
+ schema: |
222
+ type: seq
223
+ sequence:
224
+ - type: map
225
+ mapping:
226
+ "key":
227
+ type: text
228
+ required: yes
229
+ "value":
230
+ type: any
231
+ required: yes
232
+ document: |
233
+ #
234
+ - key: foo
235
+ value: 123
236
+ - key: bar
237
+ value: [a, b, c]
238
+ ##
239
+ - name: stream
240
+ desc: stream document
241
+ method: validation
242
+ schema: |
243
+ type: seq
244
+ sequence:
245
+ - type: str
246
+ valid: |
247
+ ---
248
+ - foo
249
+ - bar
250
+ - baz
251
+ ---
252
+ - aaa
253
+ - bbb
254
+ - ccc
255
+ valid_out: |
256
+ stream.valid#0: valid.
257
+ stream.valid#1: valid.
258
+ invalid: |
259
+ ---
260
+ - foo
261
+ - 123
262
+ - baz
263
+ ---
264
+ - aaa
265
+ - bbb
266
+ - true
267
+ invalid_out: |
268
+ stream.invalid#0: INVALID
269
+ - (line 3) [/1] '123': not a string.
270
+ stream.invalid#1: INVALID
271
+ - (line 8) [/2] 'true': not a string.
272
+ ##
273
+ - name: meta1 # -m
274
+ desc: meta validation (valid)
275
+ method: execute
276
+ args: [ -m, meta1.schema ]
277
+ schema: &meta1_schema |
278
+ type: seq
279
+ sequence:
280
+ - type: str
281
+ document: |
282
+ expected: &meta1_expected |
283
+ meta1.schema#0: valid.
284
+ ##
285
+ - name: meta2 # -m
286
+ desc: meta validation (invalid)
287
+ method: execute
288
+ args: [ -m, meta2.schema ]
289
+ schema: |
290
+ type: map
291
+ sequence:
292
+ - type: str
293
+ document: |
294
+ expected: |
295
+ meta2.schema#0: INVALID
296
+ - [/] type 'map' requires 'mapping:'.
297
+ - [/] 'sequence:': not available with mapping.
298
+ ##
299
+ - name: emacs # -E
300
+ desc: show errors in emacs style
301
+ method: execute
302
+ args: [ -Ef, emacs.schema, emacs.document ]
303
+ schema: |
304
+ type: seq
305
+ sequence:
306
+ - type: map
307
+ mapping:
308
+ "key": { type: str, required: yes }
309
+ "value": { type: any }
310
+ document: |
311
+ - key: one
312
+ value: 1
313
+ - key: 2
314
+ val: two
315
+ - kye: three
316
+ value:
317
+ expected: |
318
+ emacs.document#0: INVALID
319
+ emacs.document:3:3 [/1/key] '2': not a string.
320
+ emacs.document:4:3 [/1/val] key 'val:' is undefined.
321
+ emacs.document:5:3 [/2] key 'key:' is required.
322
+ emacs.document:5:3 [/2/kye] key 'kye:' is undefined.
323
+ ##
324
+ - name: preceding1 # -P
325
+ desc: preceding anchor
326
+ method: execute
327
+ args: [ -Pf, preceding1.schema, preceding1.document ]
328
+ schema: &preceding1_schema |
329
+ type: map
330
+ mapping:
331
+ "groups":
332
+ type: seq
333
+ sequence:
334
+ - &GROUP
335
+ type: map
336
+ mapping:
337
+ "name": { type: str, required: yes }
338
+ "owner": *USER
339
+ "users":
340
+ type: seq
341
+ sequence:
342
+ - &USER
343
+ type: map
344
+ mapping:
345
+ "name": { type: str, required: yes }
346
+ "mail": { type: str }
347
+ "group": *GROUP
348
+ document: &preceding1_document |
349
+ groups:
350
+ - &WHEEL
351
+ name: wheel
352
+ owner: *root
353
+ - &GUEST
354
+ name: guest
355
+ owner: *root
356
+ - &USERS
357
+ name: users
358
+ owner: *user1
359
+ users:
360
+ - &root
361
+ name: root
362
+ mail: root@localhost
363
+ group: *WHEEL
364
+ - &user1
365
+ name: user1
366
+ mail: user1@localhost
367
+ group: *USERS
368
+ expected: |
369
+ preceding1.document#0: valid.
370
+ ##
371
+ - name: preceding2 # -P
372
+ desc: preceding anchor
373
+ method: execute
374
+ args: [ -lf, preceding2.schema, preceding2.document ]
375
+ schema: *preceding1_schema
376
+ document: *preceding1_document
377
+ exception*:
378
+ ruby: Kwalify::SyntaxError
379
+ #java: kwalify.YamlSyntaxException
380
+ errormsg*:
381
+ ruby: "file: preceding2.schema, line 10: *USER: anchor not found."
382
+ #java: "*USER: anchor not found."
383
+ expected: |
384
+ ##
@@ -0,0 +1,80 @@
1
+ ###
2
+ ### $Rev: 83 $
3
+ ### $Release: 0.7.1 $
4
+ ### copyright(c) 2005-2008 kuwata-lab all rights reserved.
5
+ ###
6
+
7
+ require File.dirname(__FILE__) + '/test.rb'
8
+
9
+
10
+ class MetaValidatorTest < Test::Unit::TestCase
11
+
12
+ ## define test methods
13
+ filename = __FILE__.sub(/\.rb$/, '.yaml')
14
+ load_yaml_documents(filename) do |ydoc|
15
+ name = ydoc['name']
16
+ ydoc.each do |key, val|
17
+ ydoc[$1] = val['ruby'] if key =~ /(.*)\*$/
18
+ end
19
+ s = <<-END
20
+ def test_meta_#{name}
21
+ @name = #{ydoc['name'].inspect}
22
+ @desc = #{ydoc['desc'].inspect}
23
+ @schema = #{ydoc['schema'].inspect}
24
+ @meta_msg = #{ydoc['meta-msg'].inspect}
25
+ # @rule_msg = #{ydoc['rule-msg'].inspect}
26
+ @test_type = :meta
27
+ _test
28
+ end
29
+ END
30
+ module_eval s if ydoc['meta-msg']
31
+ s = <<-END
32
+ def test_rule_#{name}
33
+ @name = #{ydoc['name'].inspect}
34
+ @desc = #{ydoc['desc'].inspect}
35
+ @schema = #{ydoc['schema'].inspect}
36
+ # @meta_msg = #{ydoc['meta-msg'].inspect}
37
+ @rule_msg = #{ydoc['rule-msg'].inspect}
38
+ @test_type = :rule
39
+ _test
40
+ end
41
+ END
42
+ module_eval s if ydoc['rule-msg']
43
+ end
44
+
45
+
46
+ ## execute test
47
+ def _test()
48
+ return if $target && $target != @name
49
+ #schema = YAML.load(@schema)
50
+ parser = Kwalify::YamlParser.new(@schema)
51
+ schema = parser.parse()
52
+ case @test_type
53
+ when :meta
54
+ meta_validator = Kwalify::MetaValidator.instance()
55
+ errors = meta_validator.validate(schema)
56
+ parser.set_errors_linenum(errors)
57
+ errors.sort!
58
+ expected = @meta_msg
59
+ when :rule
60
+ errors = []
61
+ begin
62
+ rule = Kwalify::Validator.new(schema)
63
+ rescue Kwalify::KwalifyError => error
64
+ errors << error
65
+ end
66
+ expected = @rule_msg
67
+ end
68
+ actual = ''
69
+ errors.each do |error|
70
+ raise error if error.is_a?(Kwalify::AssertionError)
71
+ actual << "%-20s: [%s] %s\n" % [error.error_symbol.inspect, error.path, error.message]
72
+ end
73
+ if $print
74
+ print actual
75
+ else
76
+ assert_text_equal(expected, actual)
77
+ end
78
+ end
79
+
80
+ end