summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorWalter Dörwald <walter@livinglogic.de>2002-09-06 17:21:40 +0000
committerWalter Dörwald <walter@livinglogic.de>2002-09-06 17:21:40 +0000
commit365a71cd86075334c0831abf6f9b7e56c03e46e7 (patch)
treee231c4345dbaa41f01f3deab450fafd1ced67d06
parent38a7b6defdb649f29b55697035656b22b3a1b456 (diff)
downloadcpython-365a71cd86075334c0831abf6f9b7e56c03e46e7.tar.gz
Add a test case that checks that the proper exception is raises
when the replacement from an encoding error callback is itself unencodable.
-rw-r--r--Lib/test/test_codeccallbacks.py15
1 files changed, 15 insertions, 0 deletions
diff --git a/Lib/test/test_codeccallbacks.py b/Lib/test/test_codeccallbacks.py
index 1650965a99..8ae3b11210 100644
--- a/Lib/test/test_codeccallbacks.py
+++ b/Lib/test/test_codeccallbacks.py
@@ -474,6 +474,21 @@ class CodecCallbackTest(unittest.TestCase):
codecs.lookup_error("backslashreplace")
)
+ def test_unencodablereplacement(self):
+ def unencrepl(exc):
+ if isinstance(exc, UnicodeEncodeError):
+ return (u"\u4242", exc.end)
+ else:
+ raise TypeError("don't know how to handle %r" % exc)
+ codecs.register_error("test.unencreplhandler", unencrepl)
+ for enc in ("ascii", "iso-8859-1", "iso-8859-15"):
+ self.assertRaises(
+ UnicodeEncodeError,
+ u"\u4242".encode,
+ enc,
+ "test.unencreplhandler"
+ )
+
def test_main():
suite = unittest.TestSuite()
suite.addTest(unittest.makeSuite(CodecCallbackTest))