diff --git a/eventlet/greenio/py3.py b/eventlet/greenio/py3.py index f2248e1..73a076d 100644 --- a/eventlet/greenio/py3.py +++ b/eventlet/greenio/py3.py @@ -85,7 +85,7 @@ class GreenFileIO(_OriginalIOBase): except OSError as e: if get_errno(e) not in SOCKET_BLOCKING: raise IOError(*e.args) - self._trampoline(self, read=True) + self._trampoline(self, read=True) def readall(self): buf = [] @@ -98,7 +98,7 @@ class GreenFileIO(_OriginalIOBase): except OSError as e: if get_errno(e) not in SOCKET_BLOCKING: raise IOError(*e.args) - self._trampoline(self, read=True) + self._trampoline(self, read=True) def readinto(self, b): up_to = len(b) diff --git a/tests/isolated/regular_file_readall.py b/tests/isolated/regular_file_readall.py new file mode 100644 index 0000000..e4fb6f3 --- /dev/null +++ b/tests/isolated/regular_file_readall.py @@ -0,0 +1,43 @@ +__test__ = False + +if __name__ == '__main__': + import eventlet + eventlet.monkey_patch() + + from eventlet.support import six + import io + import os + import tempfile + + with tempfile.NamedTemporaryFile() as tmp: + with io.open(tmp.name, "wb") as fp: + fp.write(b"content") + + # test BufferedReader.read() + fd = os.open(tmp.name, os.O_RDONLY) + fp = os.fdopen(fd, "rb") + with fp: + content = fp.read() + assert content == b'content' + + # test FileIO.read() + fd = os.open(tmp.name, os.O_RDONLY) + fp = os.fdopen(fd, "rb", 0) + with fp: + content = fp.read() + assert content == b'content' + + if six.PY3: + # test FileIO.readall() + fd = os.open(tmp.name, os.O_RDONLY) + fp = os.fdopen(fd, "rb", 0) + with fp: + content = fp.readall() + assert content == b'content' + + # test FileIO.readall() (for Python 2 and Python 3) + with io.open(tmp.name, "rb", 0) as fp: + content = fp.readall() + assert content == b'content' + + print("pass") diff --git a/tests/patcher_test.py b/tests/patcher_test.py index 5aae0ac..ec51436 100644 --- a/tests/patcher_test.py +++ b/tests/patcher_test.py @@ -528,3 +528,7 @@ def test_socketserver_selectors(): def test_blocking_select_methods_are_deleted(): tests.run_isolated('patcher_blocking_select_methods_are_deleted.py') + + +def test_regular_file_readall(): + tests.run_isolated('regular_file_readall.py')