diff options
-rw-r--r-- | ChangeLog | 8 | ||||
-rw-r--r-- | lib/rexml/parsers/treeparser.rb | 2 | ||||
-rw-r--r-- | test/rexml/parser/test_tree.rb | 27 |
3 files changed, 36 insertions, 1 deletions
@@ -1,3 +1,11 @@ +Tue Sep 3 22:54:46 2013 Kouhei Sutou <kou@cozmixng.org> + + * lib/rexml/parsers/treeparser.rb (REXML::Parsers::TreeParser#parse): + Remove needless nested parse exception information. + [Bug #8844] [ruby-dev:47672] + Reported by Ippei Obayashi. Thanks!!! + * test/rexml/parser/test_tree.rb: Add a test for the above case. + Tue Sep 3 22:03:49 2013 Nobuyoshi Nakada <nobu@ruby-lang.org> * string.c (rb_enc_str_new_cstr): new function to create a string from diff --git a/lib/rexml/parsers/treeparser.rb b/lib/rexml/parsers/treeparser.rb index 7f618cb319..4dd1b90590 100644 --- a/lib/rexml/parsers/treeparser.rb +++ b/lib/rexml/parsers/treeparser.rb @@ -89,7 +89,7 @@ module REXML end rescue REXML::Validation::ValidationException raise - rescue REXML::UndefinedNamespaceException + rescue REXML::ParseException raise rescue raise ParseException.new( $!.message, @parser.source, @parser, $! ) diff --git a/test/rexml/parser/test_tree.rb b/test/rexml/parser/test_tree.rb new file mode 100644 index 0000000000..62b161d180 --- /dev/null +++ b/test/rexml/parser/test_tree.rb @@ -0,0 +1,27 @@ +require "test/unit" +require "rexml/document" +require "rexml/parsers/treeparser" + +class TestTreeParser < Test::Unit::TestCase + class TestInvalid < self + def test_parse_exception + xml = "<root></not-root>" + exception = assert_raise(REXML::ParseException) do + parse(xml) + end + assert_equal(<<-MESSAGE, exception.to_s) +Missing end tag for 'root' (got "not-root") +Line: 1 +Position: 17 +Last 80 unconsumed characters: + MESSAGE + end + + private + def parse(xml) + document = REXML::Document.new + parser = REXML::Parsers::TreeParser.new(xml, document) + parser.parse + end + end +end |