Running kwalify in Ruby with duplicate keys crashes, while running the commandline catches it correctly:
kwalify -lf schema.yml duplicate.yml
ERROR: duplicate.yml:4:10 [/foo/bar] mapping key is duplicated.
k.rb schema.yml duplicate.yml
/Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:341:in `_parse_map_value\': undefined method `mapping\' for nil:NilClass (NoMethodError)
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:440:in `parse_block_map\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:269:in `parse_block_value\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:398:in `_parse_map_value\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:440:in `parse_block_map\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:269:in `parse_block_value\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:152:in `parse_next\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify/parser/yaml.rb:129:in `parse\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify.rb:51:in `load\'
from /Users/martin/.rvm/gems/ruby-1.8.7-p302/gems/kwalify-0.7.2/lib/kwalify.rb:59:in `load_file\'
from k.rb:6
===== k.rb
#!/usr/bin/env ruby
#
require \'rubygems\'
require \'kwalify\'
schema = Kwalify::Yaml.load_file(ARGV[1])
validator = Kwalify::Validator.new(schema)
document = Kwalify::Yaml.load_file(\'document.yaml\')
errors = validator.validate(document)
if errors && !errors.empty?
for e in errors
puts \"[#{e.path}] #{e.message}\"
end
end
===== duplicate.yml
---
foo:
bar: 1
bar: 2
===== schema.yml
---
type: map
mapping:
\"foo\":
type: map
mapping:
\"bar\":
type: int
required: yes