From 32553a2d76f4520e1456d5463c691310c22ebd2b Mon Sep 17 00:00:00 2001 From: Michael Koziarski Date: Sat, 8 Sep 2007 01:32:16 +0000 Subject: [PATCH] Fix assert_select for XML documents. Closes #8173. [dasil003] git-svn-id: http://svn-commit.rubyonrails.org/rails/trunk@7417 5ecf4fe2-1ee6-0310-87b1-e25e094e27de --- .../lib/action_controller/test_process.rb | 3 ++- actionpack/test/controller/test_test.rb | 24 +++++++++++++++++++ 2 files changed, 26 insertions(+), 1 deletion(-) diff --git a/actionpack/lib/action_controller/test_process.rb b/actionpack/lib/action_controller/test_process.rb index 4c6c875129..80abe2fecd 100644 --- a/actionpack/lib/action_controller/test_process.rb +++ b/actionpack/lib/action_controller/test_process.rb @@ -449,7 +449,8 @@ def build_request_uri(action, parameters) end def html_document - @html_document ||= HTML::Document.new(@response.body) + xml = @response.content_type =~ /xml$/ + @html_document ||= HTML::Document.new(@response.body, false, xml) end def find_tag(conditions) diff --git a/actionpack/test/controller/test_test.rb b/actionpack/test/controller/test_test.rb index 937f9e5a91..10818fe1c9 100644 --- a/actionpack/test/controller/test_test.rb +++ b/actionpack/test/controller/test_test.rb @@ -45,6 +45,16 @@ def test_html_output HTML end + + def test_xml_output + response.content_type = "application/xml" + render :text => < + + area is an empty tag in HTML, raising an error if not in xml mode + +XML + end def test_only_one_param render :text => (params[:left] && params[:right]) ? "EEP, Both here!" : "OK" @@ -301,6 +311,20 @@ def test_assert_tag_children_without_content :children => { :count => 1, :only => { :tag => "img" } } } } end + + def test_should_not_impose_childless_html_tags_in_xml + process :test_xml_output + + begin + $stderr = StringIO.new + assert_select 'area' #This will cause a warning if content is processed as HTML + $stderr.rewind && err = $stderr.read + ensure + $stderr = STDERR + end + + assert err.empty? + end def test_assert_tag_attribute_matching @response.body = '' -- GitLab