Permalink
Browse files

Merge pull request #90 from dstrelau/nullio-read-fixes

Make NullIO#read mimic IO#read
  • Loading branch information...
2 parents f6b4363 + a1eee5a commit 5c2bd100ac02209d160a5d08f9800fa232850047 @evanphx evanphx committed Apr 30, 2012
Showing with 34 additions and 4 deletions.
  1. +3 −4 lib/puma/null_io.rb
  2. +31 −0 test/test_null_io.rb
View
@@ -4,7 +4,6 @@ module Puma
# Used as the value for rack.input when the request has no body.
#
class NullIO
-
# Always returns nil
#
def gets
@@ -16,10 +15,10 @@ def gets
def each
end
- # Always returns nil
+ # Mimics IO#read with no data
#
- def read(count)
- nil
+ def read(count=nil,buffer=nil)
+ (count && count > 0) ? nil : ""
end
# Does nothing
View
@@ -0,0 +1,31 @@
+require 'puma/null_io'
+require 'test/unit'
+
+class TestNullIO < Test::Unit::TestCase
+ attr_accessor :nio
+ def setup
+ self.nio = Puma::NullIO.new
+ end
+
+ def test_read_with_no_arguments
+ assert_equal "", nio.read
+ end
+
+ def test_read_with_nil_length
+ assert_equal "", nio.read(nil)
+ end
+
+ def test_read_with_zero_length
+ assert_equal "", nio.read(0)
+ end
+
+ def test_read_with_positive_integer_length
+ assert_nil nio.read(1)
+ end
+
+ def test_read_with_length_and_buffer
+ buf = ""
+ assert_nil nio.read(1,buf)
+ assert_equal "", buf
+ end
+end

0 comments on commit 5c2bd10

Please sign in to comment.