Rietveld Code Review Tool
Help | Bug tracker | Discussion group | Source code | Sign in
(33)

Side by Side Diff: Lib/test/test_codecs.py

Issue 52081: [issue3672] Ill-formed surrogates not treated as errors during encoding/decoding (Closed) Base URL: http://svn.python.org/view/*checkout*/python/branches/pep-0383/
Patch Set: Created 3 years ago
Left:
Right:
Use n/p to move between diff chunks; N/P to move between comments. Please Sign in to add in-line comments.
Jump to:
View unified diff | Download patch
OLDNEW
1 from test import support 1 from test import support
2 import unittest 2 import unittest
3 import codecs 3 import codecs
4 import sys, _testcapi, io 4 import sys, _testcapi, io
5 5
6 class Queue(object): 6 class Queue(object):
7 """ 7 """
8 queue: write bytes at one end, read bytes from the other end 8 queue: write bytes at one end, read bytes from the other end
9 """ 9 """
10 def __init__(self, buffer): 10 def __init__(self, buffer):
(...skipping 522 matching lines...) Expand 10 before | Expand all | Expand 10 after
533 "\x00\xff\u07ff\u0800", 533 "\x00\xff\u07ff\u0800",
534 "\x00\xff\u07ff\u0800", 534 "\x00\xff\u07ff\u0800",
535 "\x00\xff\u07ff\u0800\uffff", 535 "\x00\xff\u07ff\u0800\uffff",
536 ] 536 ]
537 ) 537 )
538 538
539 def test_decoder_state(self): 539 def test_decoder_state(self):
540 u = "\x00\x7f\x80\xff\u0100\u07ff\u0800\uffff\U0010ffff" 540 u = "\x00\x7f\x80\xff\u0100\u07ff\u0800\uffff\U0010ffff"
541 self.check_state_handling_decode(self.encoding, 541 self.check_state_handling_decode(self.encoding,
542 u, u.encode(self.encoding)) 542 u, u.encode(self.encoding))
543
544 def test_surrogates(self):
Benjamin 2009/05/01 21:25:44 I think this should be split into 2 tests. "test_l
Martin v. Löwis 2009/05/02 09:44:03 Done.
545 self.assertRaises(UnicodeEncodeError, "\ud800".encode, "utf-8")
546 self.assertRaises(UnicodeDecodeError, b"\xed\xa0\x80".decode, "utf-8")
547 self.assertEquals("\ud800".encode("utf-8", "surrogates"), b"\xed\xa0\x80 ")
548 self.assertEquals(b"\xed\xa0\x80".decode("utf-8", "surrogates"), "\ud800 ")
549 self.assertTrue(codecs.lookup_error("surrogates"))
543 550
544 class UTF7Test(ReadTest): 551 class UTF7Test(ReadTest):
545 encoding = "utf-7" 552 encoding = "utf-7"
546 553
547 def test_partial(self): 554 def test_partial(self):
548 self.check_partial( 555 self.check_partial(
549 "a+-b", 556 "a+-b",
550 [ 557 [
551 "a", 558 "a",
552 "a", 559 "a",
(...skipping 463 matching lines...) Expand 10 before | Expand all | Expand 10 after
1016 1023
1017 1024
1018 class NameprepTest(unittest.TestCase): 1025 class NameprepTest(unittest.TestCase):
1019 def test_nameprep(self): 1026 def test_nameprep(self):
1020 from encodings.idna import nameprep 1027 from encodings.idna import nameprep
1021 for pos, (orig, prepped) in enumerate(nameprep_tests): 1028 for pos, (orig, prepped) in enumerate(nameprep_tests):
1022 if orig is None: 1029 if orig is None:
1023 # Skipped 1030 # Skipped
1024 continue 1031 continue
1025 # The Unicode strings are given in UTF-8 1032 # The Unicode strings are given in UTF-8
1026 orig = str(orig, "utf-8") 1033 orig = str(orig, "utf-8", "surrogates")
1027 if prepped is None: 1034 if prepped is None:
1028 # Input contains prohibited characters 1035 # Input contains prohibited characters
1029 self.assertRaises(UnicodeError, nameprep, orig) 1036 self.assertRaises(UnicodeError, nameprep, orig)
1030 else: 1037 else:
1031 prepped = str(prepped, "utf-8") 1038 prepped = str(prepped, "utf-8", "surrogates")
1032 try: 1039 try:
1033 self.assertEquals(nameprep(orig), prepped) 1040 self.assertEquals(nameprep(orig), prepped)
1034 except Exception as e: 1041 except Exception as e:
1035 raise support.TestFailed("Test 3.%d: %s" % (pos+1, str(e))) 1042 raise support.TestFailed("Test 3.%d: %s" % (pos+1, str(e)))
1036 1043
1037 class IDNACodecTest(unittest.TestCase): 1044 class IDNACodecTest(unittest.TestCase):
1038 def test_builtin_decode(self): 1045 def test_builtin_decode(self):
1039 self.assertEquals(str(b"python.org", "idna"), "python.org") 1046 self.assertEquals(str(b"python.org", "idna"), "python.org")
1040 self.assertEquals(str(b"python.org.", "idna"), "python.org.") 1047 self.assertEquals(str(b"python.org.", "idna"), "python.org.")
1041 self.assertEquals(str(b"xn--pythn-mua.org", "idna"), "pyth\xf6n.org") 1048 self.assertEquals(str(b"xn--pythn-mua.org", "idna"), "pyth\xf6n.org")
(...skipping 488 matching lines...) Expand 10 before | Expand all | Expand 10 after
1530 EncodedFileTest, 1537 EncodedFileTest,
1531 BasicUnicodeTest, 1538 BasicUnicodeTest,
1532 CharmapTest, 1539 CharmapTest,
1533 WithStmtTest, 1540 WithStmtTest,
1534 TypesTest, 1541 TypesTest,
1535 ) 1542 )
1536 1543
1537 1544
1538 if __name__ == "__main__": 1545 if __name__ == "__main__":
1539 test_main() 1546 test_main()
OLDNEW

Powered by Google App Engine
RSS Feeds Recent Issues | This issue
This is Rietveld 855:fffdfa546f68