mirror of
https://github.com/python/cpython.git
synced 2025-11-03 03:22:27 +00:00
Issue #21859: Added Python implementation of io.FileIO.
This commit is contained in:
parent
cd092efb16
commit
71fd224af0
4 changed files with 500 additions and 66 deletions
|
|
@ -18,11 +18,12 @@ import time
|
|||
import unittest
|
||||
|
||||
# Test import all of the things we're about to try testing up front.
|
||||
from _io import FileIO
|
||||
import _io
|
||||
import _pyio
|
||||
|
||||
|
||||
@unittest.skipUnless(os.name == 'posix', 'tests requires a posix system.')
|
||||
class TestFileIOSignalInterrupt(unittest.TestCase):
|
||||
class TestFileIOSignalInterrupt:
|
||||
def setUp(self):
|
||||
self._process = None
|
||||
|
||||
|
|
@ -38,8 +39,9 @@ class TestFileIOSignalInterrupt(unittest.TestCase):
|
|||
|
||||
subclasseses should override this to test different IO objects.
|
||||
"""
|
||||
return ('import _io ;'
|
||||
'infile = _io.FileIO(sys.stdin.fileno(), "rb")')
|
||||
return ('import %s as io ;'
|
||||
'infile = io.FileIO(sys.stdin.fileno(), "rb")' %
|
||||
self.modname)
|
||||
|
||||
def fail_with_process_info(self, why, stdout=b'', stderr=b'',
|
||||
communicate=True):
|
||||
|
|
@ -179,11 +181,19 @@ class TestFileIOSignalInterrupt(unittest.TestCase):
|
|||
expected=b'hello\nworld!\n'))
|
||||
|
||||
|
||||
class CTestFileIOSignalInterrupt(TestFileIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_io'
|
||||
|
||||
class PyTestFileIOSignalInterrupt(TestFileIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_pyio'
|
||||
|
||||
|
||||
class TestBufferedIOSignalInterrupt(TestFileIOSignalInterrupt):
|
||||
def _generate_infile_setup_code(self):
|
||||
"""Returns the infile = ... line of code to make a BufferedReader."""
|
||||
return ('infile = open(sys.stdin.fileno(), "rb") ;'
|
||||
'import _io ;assert isinstance(infile, _io.BufferedReader)')
|
||||
return ('import %s as io ;infile = io.open(sys.stdin.fileno(), "rb") ;'
|
||||
'assert isinstance(infile, io.BufferedReader)' %
|
||||
self.modname)
|
||||
|
||||
def test_readall(self):
|
||||
"""BufferedReader.read() must handle signals and not lose data."""
|
||||
|
|
@ -193,12 +203,20 @@ class TestBufferedIOSignalInterrupt(TestFileIOSignalInterrupt):
|
|||
read_method_name='read',
|
||||
expected=b'hello\nworld!\n'))
|
||||
|
||||
class CTestBufferedIOSignalInterrupt(TestBufferedIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_io'
|
||||
|
||||
class PyTestBufferedIOSignalInterrupt(TestBufferedIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_pyio'
|
||||
|
||||
|
||||
class TestTextIOSignalInterrupt(TestFileIOSignalInterrupt):
|
||||
def _generate_infile_setup_code(self):
|
||||
"""Returns the infile = ... line of code to make a TextIOWrapper."""
|
||||
return ('infile = open(sys.stdin.fileno(), "rt", newline=None) ;'
|
||||
'import _io ;assert isinstance(infile, _io.TextIOWrapper)')
|
||||
return ('import %s as io ;'
|
||||
'infile = io.open(sys.stdin.fileno(), "rt", newline=None) ;'
|
||||
'assert isinstance(infile, io.TextIOWrapper)' %
|
||||
self.modname)
|
||||
|
||||
def test_readline(self):
|
||||
"""readline() must handle signals and not lose data."""
|
||||
|
|
@ -224,6 +242,12 @@ class TestTextIOSignalInterrupt(TestFileIOSignalInterrupt):
|
|||
read_method_name='read',
|
||||
expected="hello\nworld!\n"))
|
||||
|
||||
class CTestTextIOSignalInterrupt(TestTextIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_io'
|
||||
|
||||
class PyTestTextIOSignalInterrupt(TestTextIOSignalInterrupt, unittest.TestCase):
|
||||
modname = '_pyio'
|
||||
|
||||
|
||||
def test_main():
|
||||
test_cases = [
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue