diff options
author | Guido van Rossum <guido@python.org> | 2007-12-03 22:54:21 (GMT) |
---|---|---|
committer | Guido van Rossum <guido@python.org> | 2007-12-03 22:54:21 (GMT) |
commit | e7fc50f2d03a6b62e4b4201c89b2c0185c90f697 (patch) | |
tree | 836034eb187c29177ffaabb74b39ba16ed71ddd1 /Lib/test | |
parent | c6fe37bab927bd00e0f2fed8a431adb7d2b6d303 (diff) | |
download | cpython-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.py | 40 |
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") |