summaryrefslogtreecommitdiffstats
path: root/Lib/test
diff options
context:
space:
mode:
authorGuido van Rossum <guido@python.org>2007-12-03 22:54:21 (GMT)
committerGuido van Rossum <guido@python.org>2007-12-03 22:54:21 (GMT)
commite7fc50f2d03a6b62e4b4201c89b2c0185c90f697 (patch)
tree836034eb187c29177ffaabb74b39ba16ed71ddd1 /Lib/test
parentc6fe37bab927bd00e0f2fed8a431adb7d2b6d303 (diff)
downloadcpython-e7fc50f2d03a6b62e4b4201c89b2c0185c90f697.zip
cpython-e7fc50f2d03a6b62e4b4201c89b2c0185c90f697.tar.gz
cpython-e7fc50f2d03a6b62e4b4201c89b2c0185c90f697.tar.bz2
Add an errors parameter to open() and TextIOWrapper() to specify error handling.
Diffstat (limited to 'Lib/test')
-rw-r--r--Lib/test/test_io.py40
1 files changed, 40 insertions, 0 deletions
diff --git a/Lib/test/test_io.py b/Lib/test/test_io.py
index 7ca3fbb..36aaf14 100644
--- a/Lib/test/test_io.py
+++ b/Lib/test/test_io.py
@@ -496,6 +496,46 @@ class TextIOWrapperTest(unittest.TestCase):
def tearDown(self):
test_support.unlink(test_support.TESTFN)
+ def testEncodingErrorsReading(self):
+ # (1) default
+ b = io.BytesIO(b"abc\n\xff\n")
+ t = io.TextIOWrapper(b, encoding="ascii")
+ self.assertRaises(UnicodeError, t.read)
+ # (2) explicit strict
+ b = io.BytesIO(b"abc\n\xff\n")
+ t = io.TextIOWrapper(b, encoding="ascii", errors="strict")
+ self.assertRaises(UnicodeError, t.read)
+ # (3) ignore
+ b = io.BytesIO(b"abc\n\xff\n")
+ t = io.TextIOWrapper(b, encoding="ascii", errors="ignore")
+ self.assertEquals(t.read(), "abc\n\n")
+ # (4) replace
+ b = io.BytesIO(b"abc\n\xff\n")
+ t = io.TextIOWrapper(b, encoding="ascii", errors="replace")
+ self.assertEquals(t.read(), "abc\n\ufffd\n")
+
+ def testEncodingErrorsWriting(self):
+ # (1) default
+ b = io.BytesIO()
+ t = io.TextIOWrapper(b, encoding="ascii")
+ self.assertRaises(UnicodeError, t.write, "\xff")
+ # (2) explicit strict
+ b = io.BytesIO()
+ t = io.TextIOWrapper(b, encoding="ascii", errors="strict")
+ self.assertRaises(UnicodeError, t.write, "\xff")
+ # (3) ignore
+ b = io.BytesIO()
+ t = io.TextIOWrapper(b, encoding="ascii", errors="ignore")
+ t.write("abc\xffdef\n")
+ t.flush()
+ self.assertEquals(b.getvalue(), b"abcdef\n")
+ # (4) replace
+ b = io.BytesIO()
+ t = io.TextIOWrapper(b, encoding="ascii", errors="replace")
+ t.write("abc\xffdef\n")
+ t.flush()
+ self.assertEquals(b.getvalue(), b"abc?def\n")
+
def testNewlinesInput(self):
testdata = b"AAA\nBBB\nCCC\rDDD\rEEE\r\nFFF\r\nGGG"
normalized = testdata.replace(b"\r\n", b"\n").replace(b"\r", b"\n")