summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--ChangeLog8
-rw-r--r--lib/rexml/parsers/treeparser.rb2
-rw-r--r--test/rexml/parser/test_tree.rb27
3 files changed, 36 insertions, 1 deletions
diff --git a/ChangeLog b/ChangeLog
index cd49e10372..e9915f826f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -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