Commit c3ab0a75 authored by Walter Dörwald's avatar Walter Dörwald

Use io.BytesIO instead of StringIO.StringIO in all

spots where bytes are read and written (StringIO.StringIO
doesn't work, because it promotes bytes to str).
parent 5205653a
from test import test_support from test import test_support
import unittest import unittest
import codecs import codecs
import sys, _testcapi import sys, _testcapi, io
from StringIO import StringIO from StringIO import StringIO
class Queue(object): class Queue(object):
...@@ -104,7 +104,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -104,7 +104,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling):
def test_readline(self): def test_readline(self):
def getreader(input): def getreader(input):
stream = StringIO(input.encode(self.encoding)) stream = io.BytesIO(input.encode(self.encoding))
return codecs.getreader(self.encoding)(stream) return codecs.getreader(self.encoding)(stream)
def readalllines(input, keepends=True, size=None): def readalllines(input, keepends=True, size=None):
...@@ -216,7 +216,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -216,7 +216,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling):
' break\r\n', ' break\r\n',
' \r\n', ' \r\n',
] ]
stream = StringIO("".join(s).encode(self.encoding)) stream = io.BytesIO("".join(s).encode(self.encoding))
reader = codecs.getreader(self.encoding)(stream) reader = codecs.getreader(self.encoding)(stream)
for (i, line) in enumerate(reader): for (i, line) in enumerate(reader):
self.assertEqual(line, s[i]) self.assertEqual(line, s[i])
...@@ -254,7 +254,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -254,7 +254,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling):
s3 = "next line.\r\n" s3 = "next line.\r\n"
s = (s1+s2+s3).encode(self.encoding) s = (s1+s2+s3).encode(self.encoding)
stream = StringIO(s) stream = io.BytesIO(s)
reader = codecs.getreader(self.encoding)(stream) reader = codecs.getreader(self.encoding)(stream)
self.assertEqual(reader.readline(), s1) self.assertEqual(reader.readline(), s1)
self.assertEqual(reader.readline(), s2) self.assertEqual(reader.readline(), s2)
...@@ -269,7 +269,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -269,7 +269,7 @@ class ReadTest(unittest.TestCase, MixInCheckStateHandling):
s5 = "againokay.\r\n" s5 = "againokay.\r\n"
s = (s1+s2+s3+s4+s5).encode(self.encoding) s = (s1+s2+s3+s4+s5).encode(self.encoding)
stream = StringIO(s) stream = io.BytesIO(s)
reader = codecs.getreader(self.encoding)(stream) reader = codecs.getreader(self.encoding)(stream)
self.assertEqual(reader.readline(), s1) self.assertEqual(reader.readline(), s1)
self.assertEqual(reader.readline(), s2) self.assertEqual(reader.readline(), s2)
...@@ -287,7 +287,7 @@ class UTF16Test(ReadTest): ...@@ -287,7 +287,7 @@ class UTF16Test(ReadTest):
def test_only_one_bom(self): def test_only_one_bom(self):
_,_,reader,writer = codecs.lookup(self.encoding) _,_,reader,writer = codecs.lookup(self.encoding)
# encode some stream # encode some stream
s = StringIO() s = io.BytesIO()
f = writer(s) f = writer(s)
f.write("spam") f.write("spam")
f.write("spam") f.write("spam")
...@@ -295,16 +295,16 @@ class UTF16Test(ReadTest): ...@@ -295,16 +295,16 @@ class UTF16Test(ReadTest):
# check whether there is exactly one BOM in it # check whether there is exactly one BOM in it
self.assert_(d == self.spamle or d == self.spambe) self.assert_(d == self.spamle or d == self.spambe)
# try to read it back # try to read it back
s = StringIO(d) s = io.BytesIO(d)
f = reader(s) f = reader(s)
self.assertEquals(f.read(), "spamspam") self.assertEquals(f.read(), "spamspam")
def test_badbom(self): def test_badbom(self):
s = StringIO(b"\xff\xff") s = io.BytesIO(b"\xff\xff")
f = codecs.getreader(self.encoding)(s) f = codecs.getreader(self.encoding)(s)
self.assertRaises(UnicodeError, f.read) self.assertRaises(UnicodeError, f.read)
s = StringIO(b"\xff\xff\xff\xff") s = io.BytesIO(b"\xff\xff\xff\xff")
f = codecs.getreader(self.encoding)(s) f = codecs.getreader(self.encoding)(s)
self.assertRaises(UnicodeError, f.read) self.assertRaises(UnicodeError, f.read)
...@@ -860,7 +860,7 @@ class IDNACodecTest(unittest.TestCase): ...@@ -860,7 +860,7 @@ class IDNACodecTest(unittest.TestCase):
self.assertEquals("pyth\xf6n.org.".encode("idna"), "xn--pythn-mua.org.") self.assertEquals("pyth\xf6n.org.".encode("idna"), "xn--pythn-mua.org.")
def test_stream(self): def test_stream(self):
r = codecs.getreader("idna")(StringIO(b"abc")) r = codecs.getreader("idna")(io.BytesIO(b"abc"))
r.read(3) r.read(3)
self.assertEquals(r.read(), "") self.assertEquals(r.read(), "")
...@@ -968,7 +968,7 @@ class StreamReaderTest(unittest.TestCase): ...@@ -968,7 +968,7 @@ class StreamReaderTest(unittest.TestCase):
def setUp(self): def setUp(self):
self.reader = codecs.getreader('utf-8') self.reader = codecs.getreader('utf-8')
self.stream = StringIO(b'\xed\x95\x9c\n\xea\xb8\x80') self.stream = io.BytesIO(b'\xed\x95\x9c\n\xea\xb8\x80')
def test_readlines(self): def test_readlines(self):
f = self.reader(self.stream) f = self.reader(self.stream)
...@@ -977,11 +977,11 @@ class StreamReaderTest(unittest.TestCase): ...@@ -977,11 +977,11 @@ class StreamReaderTest(unittest.TestCase):
class EncodedFileTest(unittest.TestCase): class EncodedFileTest(unittest.TestCase):
def test_basic(self): def test_basic(self):
f = StringIO(b'\xed\x95\x9c\n\xea\xb8\x80') f = io.BytesIO(b'\xed\x95\x9c\n\xea\xb8\x80')
ef = codecs.EncodedFile(f, 'utf-16-le', 'utf-8') ef = codecs.EncodedFile(f, 'utf-16-le', 'utf-8')
self.assertEquals(ef.read(), b'\\\xd5\n\x00\x00\xae') self.assertEquals(ef.read(), b'\\\xd5\n\x00\x00\xae')
f = StringIO() f = io.BytesIO()
ef = codecs.EncodedFile(f, 'utf-8', 'latin1') ef = codecs.EncodedFile(f, 'utf-8', 'latin1')
ef.write(b'\xc3\xbc') ef.write(b'\xc3\xbc')
self.assertEquals(f.getvalue(), b'\xfc') self.assertEquals(f.getvalue(), b'\xfc')
...@@ -1254,7 +1254,7 @@ class BasicUnicodeTest(unittest.TestCase, MixInCheckStateHandling): ...@@ -1254,7 +1254,7 @@ class BasicUnicodeTest(unittest.TestCase, MixInCheckStateHandling):
continue continue
if encoding in broken_unicode_with_streams: if encoding in broken_unicode_with_streams:
continue continue
reader = codecs.getreader(encoding)(StringIO(s.encode(encoding))) reader = codecs.getreader(encoding)(io.BytesIO(s.encode(encoding)))
for t in range(5): for t in range(5):
# Test that calling seek resets the internal codec state and buffers # Test that calling seek resets the internal codec state and buffers
reader.seek(0, 0) reader.seek(0, 0)
...@@ -1331,12 +1331,12 @@ class CharmapTest(unittest.TestCase): ...@@ -1331,12 +1331,12 @@ class CharmapTest(unittest.TestCase):
class WithStmtTest(unittest.TestCase): class WithStmtTest(unittest.TestCase):
def test_encodedfile(self): def test_encodedfile(self):
f = StringIO(b"\xc3\xbc") f = io.BytesIO(b"\xc3\xbc")
with codecs.EncodedFile(f, "latin-1", "utf-8") as ef: with codecs.EncodedFile(f, "latin-1", "utf-8") as ef:
self.assertEquals(ef.read(), b"\xfc") self.assertEquals(ef.read(), b"\xfc")
def test_streamreaderwriter(self): def test_streamreaderwriter(self):
f = StringIO(b"\xc3\xbc") f = io.BytesIO(b"\xc3\xbc")
info = codecs.lookup("utf-8") info = codecs.lookup("utf-8")
with codecs.StreamReaderWriter(f, info.streamreader, with codecs.StreamReaderWriter(f, info.streamreader,
info.streamwriter, 'strict') as srw: info.streamwriter, 'strict') as srw:
......
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