From f85caf40a69d322bde80a547e4b17568604746ff Mon Sep 17 00:00:00 2001 From: ujihisa Date: Thu, 21 Feb 2019 17:42:08 +0900 Subject: [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 '') is an end tag require "rexml/parsers/lightparser" REXML::Parsers::LightParser.new('').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('').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 --- test/rexml/parse/test_element.rb | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'test') diff --git a/test/rexml/parse/test_element.rb b/test/rexml/parse/test_element.rb index aad915fe7b..7322e0eb4e 100644 --- a/test/rexml/parse/test_element.rb +++ b/test/rexml/parse/test_element.rb @@ -8,6 +8,19 @@ module REXMLTests end class TestInvalid < self + def test_top_level_end_tag + exception = assert_raise(REXML::ParseException) do + parse("") + 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("