In test_io, StatefulIncrementalDecoderTest was not part of the test suite.
And of course, the test failed:
a bytearray was used without reason in io.TextIOWrapper.tell().
The difference is that iterating over bytes (i.e. str in python2.6) returns 1-char bytes,
whereas bytearrays yield integers.
This code should still work with python3.0
diff --git a/Lib/io.py b/Lib/io.py
index 213b0fc..ec59448 100644
--- a/Lib/io.py
+++ b/Lib/io.py
@@ -1528,8 +1528,7 @@
# nearest "safe start point" before the current location
# (a point where the decoder has nothing buffered, so seek()
# can safely start from there and advance to this location).
- next_byte = bytearray(1)
- for next_byte[0] in next_input:
+ for next_byte in next_input:
bytes_fed += 1
chars_decoded += len(decoder.decode(next_byte))
dec_buffer, dec_flags = decoder.getstate()
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 7110259..e193834 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -560,9 +560,9 @@
def process_word(self):
output = ''
- if self.buffer[0] == 'i':
+ if self.buffer[0] == ord('i'):
self.i = min(99, int(self.buffer[1:] or 0)) # set input length
- elif self.buffer[0] == 'o':
+ elif self.buffer[0] == ord('o'):
self.o = min(99, int(self.buffer[1:] or 0)) # set output length
else:
output = self.buffer.decode('ascii')
@@ -1160,10 +1160,10 @@
def test_main():
test_support.run_unittest(IOTest, BytesIOTest, StringIOTest,
- BufferedReaderTest,
- BufferedWriterTest, BufferedRWPairTest,
- BufferedRandomTest, TextIOWrapperTest,
- MiscIOTest)
+ BufferedReaderTest, BufferedWriterTest,
+ BufferedRWPairTest, BufferedRandomTest,
+ StatefulIncrementalDecoderTest,
+ TextIOWrapperTest, MiscIOTest)
if __name__ == "__main__":
unittest.main()