]> granicus.if.org Git - python/commitdiff
Followup of #4874: also fix multibytecodec.c
authorAntoine Pitrou <solipsis@pitrou.net>
Thu, 22 Jan 2009 11:59:55 +0000 (11:59 +0000)
committerAntoine Pitrou <solipsis@pitrou.net>
Thu, 22 Jan 2009 11:59:55 +0000 (11:59 +0000)
Lib/test/test_multibytecodec.py
Modules/cjkcodecs/multibytecodec.c

index 7962d5e9e3b652df4b886cfaa903060ca464071b..2f648675c270902b07ce6e8f5bbd9f4d2dd78151 100644 (file)
@@ -44,7 +44,7 @@ class Test_MultibyteCodec(unittest.TestCase):
         myreplace  = lambda exc: ('', sys.maxsize+1)
         codecs.register_error('test.cjktest', myreplace)
         self.assertRaises(IndexError, dec,
-                          'apple\x92ham\x93spam', 'test.cjktest')
+                          b'apple\x92ham\x93spam', 'test.cjktest')
 
     def test_codingspec(self):
         try:
@@ -61,6 +61,10 @@ class Test_MultibyteCodec(unittest.TestCase):
         self.assertRaises(AttributeError,
                           _multibytecodec.MultibyteStreamWriter, None)
 
+    def test_decode_unicode(self):
+        # Trying to decode an unicode string should raise a TypeError
+        for enc in ALL_CJKENCODINGS:
+            self.assertRaises(TypeError, codecs.getdecoder(enc), "")
 
 class Test_IncrementalEncoder(unittest.TestCase):
 
@@ -146,6 +150,12 @@ class Test_IncrementalDecoder(unittest.TestCase):
         self.assertRaises(UnicodeDecodeError, decoder.decode, b'', True)
         self.assertEqual(decoder.decode(b'B@$'), '\u4e16')
 
+    def test_decode_unicode(self):
+        # Trying to decode an unicode string should raise a TypeError
+        for enc in ALL_CJKENCODINGS:
+            decoder = codecs.getincrementaldecoder(enc)()
+            self.assertRaises(TypeError, decoder.decode, "")
+
 class Test_StreamReader(unittest.TestCase):
     def test_bug1728403(self):
         try:
index 2732270903ac675d9ee5e308c94da599285b6f00..82dfd49c74f5a488e33930ae5a3fd9b9eb47c096 100644 (file)
@@ -612,7 +612,7 @@ MultibyteCodec_Decode(MultibyteCodecObject *self,
        const char *data, *errors = NULL;
        Py_ssize_t datalen, finalsize;
 
-       if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|z:decode",
+       if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|z:decode",
                                codeckwarglist, &pdata, &errors))
                return NULL;
        data = pdata.buf;
@@ -1038,7 +1038,7 @@ mbidecoder_decode(MultibyteIncrementalDecoderObject *self,
        Py_ssize_t wsize, finalsize = 0, size, origpending;
        int final = 0;
 
-       if (!PyArg_ParseTupleAndKeywords(args, kwargs, "s*|i:decode",
+       if (!PyArg_ParseTupleAndKeywords(args, kwargs, "y*|i:decode",
                        incrementalkwarglist, &pdata, &final))
                return NULL;
        data = pdata.buf;