aboutsummaryrefslogtreecommitdiffstats
path: root/actionpack/test/dispatch
diff options
context:
space:
mode:
authorDan Kang <dan@dskang.com>2014-02-08 17:40:08 -0800
committerDan Kang <dan@dskang.com>2014-02-08 23:22:04 -0800
commit069bc273853c90194606b1725113d77ae39e2edd (patch)
treeed9e6c7b1f52adc19db3a657f9ed69a21a82b720 /actionpack/test/dispatch
parentcbd10e27d1fa6e07d39dbb6fb42ce3420c5959db (diff)
downloadrails-069bc273853c90194606b1725113d77ae39e2edd.tar.gz
rails-069bc273853c90194606b1725113d77ae39e2edd.tar.bz2
rails-069bc273853c90194606b1725113d77ae39e2edd.zip
Prevent [response].flatten from recursing infinitely.
Returning `self` from within the array returned by `to_ary` caused this. Instead, we can just substitute another object. It provides the `each` behavior required by the rack spec.
Diffstat (limited to 'actionpack/test/dispatch')
-rw-r--r--actionpack/test/dispatch/response_test.rb9
1 files changed, 9 insertions, 0 deletions
diff --git a/actionpack/test/dispatch/response_test.rb b/actionpack/test/dispatch/response_test.rb
index 82d29867fe..959a3bc5cd 100644
--- a/actionpack/test/dispatch/response_test.rb
+++ b/actionpack/test/dispatch/response_test.rb
@@ -226,6 +226,15 @@ class ResponseTest < ActiveSupport::TestCase
assert_equal({ 'Content-Type' => 'text/plain' }, headers)
assert_equal ['Not Found'], body.each.to_a
end
+
+ test "[response].flatten does not recurse infinitely" do
+ Timeout.timeout(1) do # use a timeout to prevent it stalling indefinitely
+ status, headers, body = [@response].flatten
+ assert_equal @response.status, status
+ assert_equal @response.headers, headers
+ assert_equal @response.body, body.each.to_a.join
+ end
+ end
end
class ResponseIntegrationTest < ActionDispatch::IntegrationTest