Permalink
Browse files

Merge pull request #3816 from lest/exception-page-utf-8

fix exception page when template contains utf-8 and parameters contain utf-8
  • Loading branch information...
2 parents 0092f06 + 13cab6e commit a604983f8b8b873558fe7838d0bfcf0e0594daa6 @wycats wycats committed Nov 30, 2011
@@ -89,10 +89,14 @@ def source_extract(indentation = 0)
line_counter = start_on_line
return unless source_code = source_code[start_on_line..end_on_line]
- source_code.sum do |line|
+ extract = source_code.sum do |line|
line_counter += 1
"#{indent}#{line_counter}: #{line}\n"
end
+
+ extract.encode! if extract.respond_to?(:encode!)
+
+ extract
end
def sub_template_of(template_path)
@@ -1,41 +1,60 @@
+# encoding: utf-8
require 'isolation/abstract_unit'
+require 'rack/test'
module ApplicationTests
class ShowExceptionsTest < Test::Unit::TestCase
include ActiveSupport::Testing::Isolation
+ include Rack::Test::Methods
def setup
build_app
boot_rails
- FileUtils.rm_rf "#{app_path}/config/environments"
end
def teardown
teardown_app
end
- def app
- @app ||= Rails.application
- end
-
test "unspecified route when set action_dispatch.show_exceptions to false" do
- make_basic_app do |app|
- app.config.action_dispatch.show_exceptions = false
- end
+ app.config.action_dispatch.show_exceptions = false
assert_raise(ActionController::RoutingError) do
get '/foo'
end
end
test "unspecified route when set action_dispatch.show_exceptions to true" do
- make_basic_app do |app|
- app.config.action_dispatch.show_exceptions = true
- end
+ app.config.action_dispatch.show_exceptions = true
assert_nothing_raised(ActionController::RoutingError) do
get '/foo'
end
end
+
+ test "displays diagnostics message when exception raised in template that contains UTF-8" do
+ app.config.action_dispatch.show_exceptions = true
+
+ controller :foo, <<-RUBY
+ class FooController < ActionController::Base
+ def index
+ end
+ end
+ RUBY
+
+ app_file 'app/views/foo/index.html.erb', <<-ERB
+ <% raise 'boooom' %>
+
+ ERB
+
+ app_file 'config/routes.rb', <<-RUBY
+ AppTemplate::Application.routes.draw do
+ match ':controller(/:action)'
+ end
+ RUBY
+
+ post '/foo', :utf8 => ''
+ assert_match(/boooom/, last_response.body)
+ end
end
end

0 comments on commit a604983

Please sign in to comment.