From 9090241e614d3c5b302b713041164e27929f8898 Mon Sep 17 00:00:00 2001 From: kou Date: Thu, 19 Apr 2018 21:34:40 +0000 Subject: rexml: Fix a XPath bug that white spaces aren't ignored lib/rexml/parsers/xpathparser.rb: Ignore white spaces in relative location path. test/rexml/xpath/test_base.rb: Add more test patterns and use more debug friendly assertion style. git-svn-id: svn+ssh://ci.ruby-lang.org/ruby/trunk@63204 b2dd03c8-39d4-4d8f-98ff-823fe69b080e --- test/rexml/xpath/test_base.rb | 51 ++++++++++++++++++++++++------------------- 1 file changed, 29 insertions(+), 22 deletions(-) (limited to 'test/rexml/xpath') diff --git a/test/rexml/xpath/test_base.rb b/test/rexml/xpath/test_base.rb index f71be51e2f..935c8d54e4 100644 --- a/test/rexml/xpath/test_base.rb +++ b/test/rexml/xpath/test_base.rb @@ -632,29 +632,36 @@ module REXMLTests + + ") - assert_equal( 1, REXML::XPath.match(doc, - "//*[local-name()='c' and @id='b']").size ) - assert_equal( 1, REXML::XPath.match(doc, - "//*[ local-name()='c' and @id='b' ]").size ) - assert_equal( 1, REXML::XPath.match(doc, - "//*[ local-name() = 'c' and @id = 'b' ]").size ) - assert_equal( 1, - REXML::XPath.match(doc, '/a/c[@id]').size ) - assert_equal( 1, - REXML::XPath.match(doc, '/a/c[(@id)]').size ) - assert_equal( 1, - REXML::XPath.match(doc, '/a/c[ @id ]').size ) - assert_equal( 1, - REXML::XPath.match(doc, '/a/c[ (@id) ]').size ) - assert_equal( 1, - REXML::XPath.match(doc, '/a/c[( @id )]').size ) - assert_equal( 1, REXML::XPath.match(doc.root, - '/a/c[ ( @id ) ]').size ) - assert_equal( 1, REXML::XPath.match(doc, - '/a/c [ ( @id ) ] ').size ) - assert_equal( 1, REXML::XPath.match(doc, - ' / a / c [ ( @id ) ] ').size ) + match = lambda do |xpath| + REXML::XPath.match(doc, xpath).collect(&:to_s) + end + assert_equal([""], + match.call("//*[local-name()='c' and @id='b']")) + assert_equal([""], + match.call("//*[ local-name()='c' and @id='b' ]")) + assert_equal([""], + match.call("//*[ local-name() = 'c' and @id = 'b' ]")) + assert_equal(["", ""], + match.call('/a/c[@id]')) + assert_equal(["", ""], + match.call('/a/c[(@id)]')) + assert_equal(["", ""], + match.call('/a/c[ @id ]')) + assert_equal(["", ""], + match.call('/a/c[ (@id) ]')) + assert_equal(["", ""], + match.call('/a/c[( @id )]')) + assert_equal(["", ""], + match.call('/a/c[ ( @id ) ]')) + assert_equal(["", ""], + match.call('/a/c [ ( @id ) ] ')) + assert_equal(["", ""], + match.call(' / a / c [ ( @id ) ] ')) + assert_equal(["", ""], + match.call('/ a / child:: c [( @id )] /')) end def test_text_nodes -- cgit v1.2.3