aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/lib/action_controller
diff options
context:
space:
mode:
authormisfo <tedwardo2@gmail.com>2011-02-08 12:08:35 +0800
committerDavid Heinemeier Hansson <david@loudthinking.com>2011-04-28 04:07:57 +0800
commit9f6cafd5fd43b551f30b28d276713791c5098b3c (patch)
tree2ff4d3805d4ff234201aebd645281c5e69db6142 /actionpack/lib/action_controller
parent1cd5a084c1bb92d8acf618368d2450a084b69345 (diff)
downloadrails-9f6cafd5fd43b551f30b28d276713791c5098b3c.tar.gz
rails-9f6cafd5fd43b551f30b28d276713791c5098b3c.tar.bz2
rails-9f6cafd5fd43b551f30b28d276713791c5098b3c.zip
prevent errors when passing a frozen string as a param to ActionController::TestCase#process
since ActionDispatch::Http::Parameters#encode_params will force encoding on all params strings (when using an encoding aware Ruby), dup all strings passed into process. This prevents modification of params passed in and, more importantly, doesn't barf when a frozen string is passed thanks and high fives to kinsteronline
Diffstat (limited to 'actionpack/lib/action_controller')
-rw-r--r--actionpack/lib/action_controller/test_case.rb4
1 files changed, 3 insertions, 1 deletions
diff --git a/actionpack/lib/action_controller/test_case.rb b/actionpack/lib/action_controller/test_case.rb
index bc4f8bb9ce..0085f542aa 100644
--- a/actionpack/lib/action_controller/test_case.rb
+++ b/actionpack/lib/action_controller/test_case.rb
@@ -147,7 +147,9 @@ module ActionController
if value.is_a? Fixnum
value = value.to_s
elsif value.is_a? Array
- value = Result.new(value)
+ value = Result.new(value.map { |v| v.is_a?(String) ? v.dup : v })
+ elsif value.is_a? String
+ value = value.dup
end
if extra_keys.include?(key.to_sym)