summaryrefslogtreecommitdiff
path: root/test/spec_response.rb
diff options
context:
space:
mode:
Diffstat (limited to 'test/spec_response.rb')
-rw-r--r--test/spec_response.rb20
1 files changed, 20 insertions, 0 deletions
diff --git a/test/spec_response.rb b/test/spec_response.rb
index 68227fa6..6a6957e5 100644
--- a/test/spec_response.rb
+++ b/test/spec_response.rb
@@ -604,6 +604,26 @@ describe Rack::Response do
res.finish.last.must_equal ["Foo", "Bar"]
end
+ it "handles string reuse in existing body when calling #write" do
+ body_class = Class.new do
+ def initialize(file)
+ @file = file
+ end
+
+ def each
+ buffer = String.new
+
+ while @file.read(5, buffer)
+ yield(buffer)
+ end
+ end
+ end
+ body = body_class.new(StringIO.new('Large large file content'))
+ res = Rack::Response.new(body)
+ res.write(" written")
+ res.finish.last.must_equal ["Large", " larg", "e fil", "e con", "tent", " written"]
+ end
+
it "calls close on #body" do
res = Rack::Response.new
res.body = StringIO.new