From 36d06f5402acd3334d814d27952d0787533b1258 Mon Sep 17 00:00:00 2001 From: Eric Hodel Date: Mon, 7 May 2012 17:39:01 -0700 Subject: [PATCH] Removed content-type check from Mechanize::Page to allow parsing of incorrect or missing content-types. Fixes #221 --- lib/mechanize/page.rb | 2 -- test/test_mechanize_page.rb | 8 +++----- test/test_mechanize_page_link.rb | 32 -------------------------------- 3 files changed, 3 insertions(+), 39 deletions(-) diff --git a/lib/mechanize/page.rb b/lib/mechanize/page.rb index 5b3bdc45..25e5ed27 100644 --- a/lib/mechanize/page.rb +++ b/lib/mechanize/page.rb @@ -26,8 +26,6 @@ class Mechanize::Page < Mechanize::File def initialize(uri=nil, response=nil, body=nil, code=nil, mech=nil) response ||= DEFAULT_RESPONSE - raise Mechanize::ContentTypeError, response['content-type'] unless - response['content-type'] =~ %r{\A(?:text/html|application/xhtml\+xml)(?:$|\s*[\s;,])}i @meta_content_type = nil @encoding = nil diff --git a/test/test_mechanize_page.rb b/test/test_mechanize_page.rb index ababaaf1..b073189b 100644 --- a/test/test_mechanize_page.rb +++ b/test/test_mechanize_page.rb @@ -38,12 +38,10 @@ def test_initialize_bad_content_type 'application/xhtml+xmlfu', 'fooapplication/xhtml+xml', ].each { |content_type| - e = assert_raises(Mechanize::ContentTypeError, content_type) do - Mechanize::Page.new(URI('http://example/'), - { 'content-type' => content_type }, 'hello', '200') - end + page = Mechanize::Page.new(URI('http://example/'), + { 'content-type' => content_type }, 'hello', '200') - assert_equal(content_type, e.content_type, content_type) + assert_equal(content_type, page.content_type, content_type) } end diff --git a/test/test_mechanize_page_link.rb b/test/test_mechanize_page_link.rb index 1d98c763..0c5d09cb 100644 --- a/test/test_mechanize_page_link.rb +++ b/test/test_mechanize_page_link.rb @@ -52,38 +52,6 @@ def util_page body = @body, res = @res Mechanize::Page.new @uri, res, body, 200, @mech end - def test_initialize_supported_content_type - page = Mechanize::Page.new nil, 'content-type' => 'application/xhtml+xml' - assert page - assert_equal 'application/xhtml+xml', page.content_type - - page = Mechanize::Page.new nil, 'content-type' => 'text/html' - assert page - assert_equal 'text/html', page.content_type - - page = Mechanize::Page.new nil, 'content-type' => 'application/xhtml+xml;charset=utf-8' - assert page - assert_equal 'application/xhtml+xml;charset=utf-8', page.content_type - - page = Mechanize::Page.new nil, 'content-type' => 'text/html;charset=utf-8' - assert page - assert_equal 'text/html;charset=utf-8', page.content_type - end - - def test_initialize_unsupported_content_type - e = assert_raises Mechanize::ContentTypeError do - Mechanize::Page.new nil, 'content-type' => 'text/plain' - end - - assert_equal 'text/plain', e.content_type - - e = assert_raises Mechanize::ContentTypeError do - Mechanize::Page.new nil, 'content-type' => 'text/plain;charset=utf-8' - end - - assert_equal 'text/plain;charset=utf-8', e.content_type - end - def test_override_content_type page = Mechanize::Page.new nil, {'content-type' => 'text/html'}, WINDOWS_1255 assert page