1
0
Fork 0
mirror of https://github.com/ruby/ruby.git synced 2022-11-09 12:17:21 -05:00
ruby--ruby/test/rexml/parse/test_element.rb
ujihisa f85caf40a6 [ruby/rexml] Message less confusing error to human (#16)
* Message less confusing error to human

* Problem: Following error message is not helpful, because you have to reason
  that '' actually means it's in the top-level, and the 'div' (not '</div>') is
  an end tag

        require "rexml/parsers/lightparser"
        REXML::Parsers::LightParser.new('</div>').parse
        #=> Missing end tag for '' (got 'div')

* Solution: add a special case in error handling just to change the error message

        require "rexml/parsers/lightparser"
        REXML::Parsers::LightParser.new('</div>').parse
        #=> Unexpected top-level end tag (got 'div')

* Refactor by removing unnecessary `md` check

* Thanks @a_matsuda to review this at asakusa.rb!

https://github.com/ruby/rexml/commit/f6528d4477
2019-08-04 11:55:03 +09:00

51 lines
1.1 KiB
Ruby

require "test/unit"
require "rexml/document"
module REXMLTests
class TestParseElement < Test::Unit::TestCase
def parse(xml)
REXML::Document.new(xml)
end
class TestInvalid < self
def test_top_level_end_tag
exception = assert_raise(REXML::ParseException) do
parse("</a>")
end
assert_equal(<<-DETAIL.chomp, exception.to_s)
Unexpected top-level end tag (got 'a')
Line: 1
Position: 4
Last 80 unconsumed characters:
DETAIL
end
def test_no_end_tag
exception = assert_raise(REXML::ParseException) do
parse("<a></")
end
assert_equal(<<-DETAIL.chomp, exception.to_s)
Missing end tag for 'a'
Line: 1
Position: 5
Last 80 unconsumed characters:
</
DETAIL
end
def test_empty_namespace_attribute_name
exception = assert_raise(REXML::ParseException) do
parse("<x :a=\"\"></x>")
end
assert_equal(<<-DETAIL.chomp, exception.to_s)
Invalid attribute name: <:a="">
Line: 1
Position: 9
Last 80 unconsumed characters:
DETAIL
end
end
end
end