Skip to content

HTTPS clone URL

Subversion checkout URL

You can clone with
or
.
Download ZIP
Browse files

Expect an incompatible encoding exception when a template doesn't hav…

…e a magic comment and its source encoding doesn't match the default external encoding
  • Loading branch information...
commit bd2bf5390d892a1c11bcaa2143f557b82611015e 1 parent fd7202a
@jeremy jeremy authored
View
2  actionpack/test/fixtures/test/utf8.html.erb
@@ -1,4 +1,4 @@
-Русский текст
+Русский <%= "текст" %>
<%= "".encoding %>
<%= @output_buffer.encoding %>
<%= __ENCODING__ %>
View
2  actionpack/test/fixtures/test/utf8_magic.html.erb
@@ -1,5 +1,5 @@
<%# encoding: utf-8 -%>
-Русский текст
+Русский <%= "текст" %>
<%= "".encoding %>
<%= @output_buffer.encoding %>
<%= __ENCODING__ %>
View
61 actionpack/test/template/render_test.rb
@@ -245,31 +245,6 @@ def test_render_with_file_in_layout
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 @@ def setup
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
Please sign in to comment.
Something went wrong with that request. Please try again.