Specs for XML parser errors.
This commit is contained in:
parent
915d3ee505
commit
cb74c7edf9
|
@ -206,7 +206,7 @@ end
|
||||||
end
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
raise Racc::ParseError, <<-EOF
|
raise Racc::ParseError, <<-EOF.strip
|
||||||
Unexpected #{name} with value #{value.inspect} on line #{@line}:
|
Unexpected #{name} with value #{value.inspect} on line #{@line}:
|
||||||
|
|
||||||
#{lines}
|
#{lines}
|
||||||
|
|
|
@ -0,0 +1,33 @@
|
||||||
|
require 'spec_helper'
|
||||||
|
|
||||||
|
describe Oga::XML::Parser do
|
||||||
|
context 'raising syntax errors' do
|
||||||
|
before do
|
||||||
|
@invalid_xml = <<-EOF.strip
|
||||||
|
<person>
|
||||||
|
<name>Alice</name>
|
||||||
|
<age>25
|
||||||
|
<nationality>Dutch</nationality>
|
||||||
|
</person>
|
||||||
|
EOF
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'raise a Racc::ParseError' do
|
||||||
|
expect { parse(@invalid_xml) }.to raise_error(Racc::ParseError)
|
||||||
|
end
|
||||||
|
|
||||||
|
example 'display a more meaningful error message' do
|
||||||
|
# Racc basically reports errors at the last moment instead of where they
|
||||||
|
# *actually* occur.
|
||||||
|
partial = <<-EOF.strip
|
||||||
|
1. <person>
|
||||||
|
2. <name>Alice</name>
|
||||||
|
3. <age>25
|
||||||
|
4. <nationality>Dutch</nationality>
|
||||||
|
=> 5. </person>
|
||||||
|
EOF
|
||||||
|
|
||||||
|
parse_error(@invalid_xml).should =~ /#{partial}/
|
||||||
|
end
|
||||||
|
end
|
||||||
|
end
|
|
@ -41,5 +41,17 @@ module Oga
|
||||||
def parse_html(input, options = {})
|
def parse_html(input, options = {})
|
||||||
return Oga::HTML::Parser.new(options).parse(input)
|
return Oga::HTML::Parser.new(options).parse(input)
|
||||||
end
|
end
|
||||||
|
|
||||||
|
##
|
||||||
|
# Parses the given invalid XML and returns the error message.
|
||||||
|
#
|
||||||
|
# @param [String] xml
|
||||||
|
# @return [String]
|
||||||
|
#
|
||||||
|
def parse_error(xml)
|
||||||
|
parse(xml)
|
||||||
|
rescue Racc::ParseError => error
|
||||||
|
return error.message
|
||||||
|
end
|
||||||
end # ParsingHelpers
|
end # ParsingHelpers
|
||||||
end # Oga
|
end # Oga
|
||||||
|
|
Loading…
Reference in New Issue