Skip to content

Commit

Permalink
Merge pull request puma#90 from dstrelau/nullio-read-fixes
Browse files Browse the repository at this point in the history
Make NullIO#read mimic IO#read
  • Loading branch information
evanphx committed Apr 30, 2012
2 parents f6b4363 + a1eee5a commit 5c2bd10
Show file tree
Hide file tree
Showing 2 changed files with 34 additions and 4 deletions.
7 changes: 3 additions & 4 deletions lib/puma/null_io.rb
Expand Up @@ -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
Expand All @@ -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
Expand Down
31 changes: 31 additions & 0 deletions test/test_null_io.rb
@@ -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.