Commit c10c34d6 authored by Antoine Pitrou's avatar Antoine Pitrou

Make test_io faster

parent fdaa3a30
...@@ -1021,6 +1021,10 @@ class TextIOWrapperTest(unittest.TestCase): ...@@ -1021,6 +1021,10 @@ class TextIOWrapperTest(unittest.TestCase):
def testSeekAndTell(self): def testSeekAndTell(self):
"""Test seek/tell using the StatefulIncrementalDecoder.""" """Test seek/tell using the StatefulIncrementalDecoder."""
# Make this test faster by forcing a smaller (but large enough)
# chunk size. The bigger the chunker size, the slower seek() is,
# as it tries to replay character decoding one byte at a time.
CHUNK_SIZE = 256
def testSeekAndTellWithData(data, min_pos=0): def testSeekAndTellWithData(data, min_pos=0):
"""Tell/seek to various points within a data stream and ensure """Tell/seek to various points within a data stream and ensure
...@@ -1035,6 +1039,7 @@ class TextIOWrapperTest(unittest.TestCase): ...@@ -1035,6 +1039,7 @@ class TextIOWrapperTest(unittest.TestCase):
for i in range(min_pos, len(decoded) + 1): # seek positions for i in range(min_pos, len(decoded) + 1): # seek positions
for j in [1, 5, len(decoded) - i]: # read lengths for j in [1, 5, len(decoded) - i]: # read lengths
f = io.open(support.TESTFN, encoding='test_decoder') f = io.open(support.TESTFN, encoding='test_decoder')
f._CHUNK_SIZE = CHUNK_SIZE
self.assertEquals(f.read(i), decoded[:i]) self.assertEquals(f.read(i), decoded[:i])
cookie = f.tell() cookie = f.tell()
self.assertEquals(f.read(j), decoded[i:i + j]) self.assertEquals(f.read(j), decoded[i:i + j])
...@@ -1052,7 +1057,6 @@ class TextIOWrapperTest(unittest.TestCase): ...@@ -1052,7 +1057,6 @@ class TextIOWrapperTest(unittest.TestCase):
testSeekAndTellWithData(input) testSeekAndTellWithData(input)
# Position each test case so that it crosses a chunk boundary. # Position each test case so that it crosses a chunk boundary.
CHUNK_SIZE = io.TextIOWrapper._CHUNK_SIZE
for input, _, _ in StatefulIncrementalDecoderTest.test_cases: for input, _, _ in StatefulIncrementalDecoderTest.test_cases:
offset = CHUNK_SIZE - len(input)//2 offset = CHUNK_SIZE - len(input)//2
prefix = b'.'*offset prefix = b'.'*offset
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment