diff options
Diffstat (limited to 'actionpack')
-rw-r--r-- | actionpack/lib/action_controller/test_process.rb | 3 | ||||
-rw-r--r-- | actionpack/test/controller/test_test.rb | 24 |
2 files changed, 26 insertions, 1 deletions
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 @@ module ActionController #:nodoc: 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 @@ class TestTest < Test::Unit::TestCase </html> HTML end + + def test_xml_output + response.content_type = "application/xml" + render :text => <<XML +<?xml version="1.0" encoding="UTF-8"?> +<root> + <area>area is an empty tag in HTML, raising an error if not in xml mode</area> +</root> +XML + end def test_only_one_param render :text => (params[:left] && params[:right]) ? "EEP, Both here!" : "OK" @@ -301,6 +311,20 @@ HTML :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 = '<input type="text" name="my_name">' |