greenio: Fix missing bufsize parameter for GreenPipe

Signed-off-by: Phus Lu phuslu@hotmail.com
This commit is contained in:
Phus Lu
2016-01-11 17:48:35 +08:00
committed by Jakub Stasiak
parent b2fb240978
commit 115b8a6f6e
2 changed files with 27 additions and 1 deletions

View File

@@ -38,7 +38,7 @@ class GreenPipe(_fileobject):
self._name = f.name
f.close()
super(GreenPipe, self).__init__(_SocketDuckForFd(fileno), mode)
super(GreenPipe, self).__init__(_SocketDuckForFd(fileno), mode, bufsize)
set_nonblocking(self)
self.softspace = 0

View File

@@ -703,6 +703,32 @@ class TestGreenPipe(tests.LimitedTestCase):
self.assertEqual(len(buf), 2 * DEFAULT_BUFFER_SIZE)
self.assertEqual(buf[:3], b'ccc')
def test_pipe_read_unbuffered(self):
# ensure that 'bufsize=0' works properly on GreenPipes
r, w = os.pipe()
r = greenio.GreenPipe(r, 'rb', 0)
w = greenio.GreenPipe(w, 'wb', 0)
def writer():
w.write(b'line\n')
eventlet.sleep(.1)
w.write(b'line\r\n')
gt = eventlet.spawn(writer)
eventlet.sleep(0)
line = r.readline()
self.assertEqual(line, b'line\n')
line = r.readline()
self.assertEqual(line, b'line\r\n')
gt.wait()
def test_pipe_writes_large_messages(self):
r, w = os.pipe()