From 3362dc51934c15fd944748e55ba4a470cc60d27d Mon Sep 17 00:00:00 2001 From: Eric Wong Date: Thu, 18 Nov 2010 07:36:27 +0800 Subject: stream_input: read with zero length returns '' Any calls to read with an explicit zero length now returns an empty string. While not explicitly specified by Rack::Lint, this is for compatibility with StringIO and IO methods which are common in other web servers. --- test/unit/test_stream_input.rb | 17 +++++++++++++++++ 1 file changed, 17 insertions(+) (limited to 'test') diff --git a/test/unit/test_stream_input.rb b/test/unit/test_stream_input.rb index 20e048d..adf4571 100644 --- a/test/unit/test_stream_input.rb +++ b/test/unit/test_stream_input.rb @@ -129,6 +129,23 @@ class TestStreamInput < Test::Unit::TestCase assert_equal '', buf end + def test_read_zero + r = init_request('hello') + si = Unicorn::StreamInput.new(@rd, r) + assert_equal '', si.read(0) + buf = 'asdf' + rv = si.read(0, buf) + assert_equal rv.object_id, buf.object_id + assert_equal '', buf + assert_equal 'hello', si.read + assert_nil si.read(5) + assert_equal '', si.read(0) + buf = 'hello' + rv = si.read(0, buf) + assert_equal rv.object_id, buf.object_id + assert_equal '', rv + end + def init_request(body, size = nil) @parser = Unicorn::HttpParser.new body = body.to_s.freeze -- cgit v1.2.3-24-ge0c7