diff options
author | Jeremy Kemper <jeremy@bitsweat.net> | 2010-04-08 19:27:22 -0700 |
---|---|---|
committer | Jeremy Kemper <jeremy@bitsweat.net> | 2010-04-08 19:27:39 -0700 |
commit | bd2bf5390d892a1c11bcaa2143f557b82611015e (patch) | |
tree | 4300e2b76a33e0d35b2d1784829127e39be5a4c8 /actionpack/test/template | |
parent | fd7202a75653570693c6fe423faad96019fe0ea1 (diff) | |
download | rails-bd2bf5390d892a1c11bcaa2143f557b82611015e.tar.gz rails-bd2bf5390d892a1c11bcaa2143f557b82611015e.tar.bz2 rails-bd2bf5390d892a1c11bcaa2143f557b82611015e.zip |
Expect an incompatible encoding exception when a template doesn't have a magic comment and its source encoding doesn't match the default external encoding
Diffstat (limited to 'actionpack/test/template')
-rw-r--r-- | actionpack/test/template/render_test.rb | 61 |
1 files changed, 36 insertions, 25 deletions
diff --git a/actionpack/test/template/render_test.rb b/actionpack/test/template/render_test.rb index 5f33c933db..647c673902 100644 --- a/actionpack/test/template/render_test.rb +++ b/actionpack/test/template/render_test.rb @@ -245,31 +245,6 @@ module RenderTestCases assert_equal %(\n<title>title</title>\n\n), @view.render(:file => "test/layout_render_file.erb") end - - if '1.9'.respond_to?(:force_encoding) - def test_render_utf8_template_with_magic_comment - with_external_encoding Encoding::ASCII_8BIT do - result = @view.render(:file => "test/utf8_magic.html.erb", :layouts => "layouts/yield") - assert_equal "Русский текст\nUTF-8\nUTF-8\nUTF-8\n", result - assert_equal Encoding::UTF_8, result.encoding - end - end - - def test_render_utf8_template_with_default_external_encoding - with_external_encoding Encoding::UTF_8 do - result = @view.render(:file => "test/utf8.html.erb", :layouts => "layouts/yield") - assert_equal "Русский текст\nUTF-8\nUTF-8\nUTF-8\n", result - assert_equal Encoding::UTF_8, result.encoding - end - end - - def with_external_encoding(encoding) - old, Encoding.default_external = Encoding.default_external, encoding - yield - ensure - Encoding.default_external = old - end - end end class CachedViewRenderTest < ActiveSupport::TestCase @@ -302,4 +277,40 @@ class LazyViewRenderTest < ActiveSupport::TestCase def teardown GC.start end + + if '1.9'.respond_to?(:force_encoding) + def test_render_utf8_template_with_magic_comment + with_external_encoding Encoding::ASCII_8BIT do + result = @view.render(:file => "test/utf8_magic.html.erb", :layouts => "layouts/yield") + assert_equal Encoding::UTF_8, result.encoding + assert_equal "Русский текст\nUTF-8\nUTF-8\nUTF-8\n", result + end + end + + def test_render_utf8_template_with_default_external_encoding + with_external_encoding Encoding::UTF_8 do + result = @view.render(:file => "test/utf8.html.erb", :layouts => "layouts/yield") + assert_equal Encoding::UTF_8, result.encoding + assert_equal "Русский текст\nUTF-8\nUTF-8\nUTF-8\n", result + end + end + + def test_render_utf8_template_with_incompatible_external_encoding + with_external_encoding Encoding::SJIS do + begin + result = @view.render(:file => "test/utf8.html.erb", :layouts => "layouts/yield") + flunk 'Should have raised incompatible encoding error' + rescue ActionView::Template::Error => error + assert_match 'invalid byte sequence in Shift_JIS', error.original_exception.message + end + end + end + + def with_external_encoding(encoding) + old, Encoding.default_external = Encoding.default_external, encoding + yield + ensure + Encoding.default_external = old + end + end end |