[pypy-commit] pypy default: issue2007: Ensure that all codecs decode() functions can accept a bytearray.

amauryfa noreply at buildbot.pypy.org
Tue Mar 24 23:56:21 CET 2015


Author: Amaury Forgeot d'Arc <amauryfa at gmail.com>
Branch: 
Changeset: r76554:3679f9727dae
Date: 2015-03-24 23:52 +0100
http://bitbucket.org/pypy/pypy/changeset/3679f9727dae/

Log:	issue2007: Ensure that all codecs decode() functions can accept a
	bytearray.

diff --git a/pypy/module/_codecs/interp_codecs.py b/pypy/module/_codecs/interp_codecs.py
--- a/pypy/module/_codecs/interp_codecs.py
+++ b/pypy/module/_codecs/interp_codecs.py
@@ -470,7 +470,7 @@
         allow_surrogates=True)
     return space.newtuple([space.wrap(result), space.wrap(consumed)])
 
- at unwrap_spec(data=str, errors='str_or_None', byteorder=int,
+ at unwrap_spec(data='bufferstr', errors='str_or_None', byteorder=int,
              w_final=WrappedDefault(False))
 def utf_16_ex_decode(space, data, errors='strict', byteorder=0, w_final=None):
     if errors is None:
@@ -491,7 +491,7 @@
     return space.newtuple([space.wrap(res), space.wrap(consumed),
                            space.wrap(byteorder)])
 
- at unwrap_spec(data=str, errors='str_or_None', byteorder=int,
+ at unwrap_spec(data='bufferstr', errors='str_or_None', byteorder=int,
              w_final=WrappedDefault(False))
 def utf_32_ex_decode(space, data, errors='strict', byteorder=0, w_final=None):
     final = space.is_true(w_final)
@@ -589,7 +589,7 @@
             "character mapping must return integer, None or str")
 
 
- at unwrap_spec(string=str, errors='str_or_None')
+ at unwrap_spec(string='bufferstr', errors='str_or_None')
 def charmap_decode(space, string, errors="strict", w_mapping=None):
     if errors is None:
         errors = 'strict'
diff --git a/pypy/module/_codecs/test/test_codecs.py b/pypy/module/_codecs/test/test_codecs.py
--- a/pypy/module/_codecs/test/test_codecs.py
+++ b/pypy/module/_codecs/test/test_codecs.py
@@ -727,3 +727,23 @@
         _codecs.register_error("test.test_codecs_not_a_string", f)
         raises(TypeError, u'\u1234'.encode, 'ascii',
                'test.test_codecs_not_a_string')
+
+    def test_decode_bytearray(self):
+        import _codecs
+        b = bytearray()
+        assert _codecs.ascii_decode(b) == (u'', 0)
+        assert _codecs.latin_1_decode(b) == (u'', 0)
+        assert _codecs.utf_7_decode(b) == (u'', 0)
+        assert _codecs.utf_8_decode(b) == (u'', 0)
+        assert _codecs.utf_16_be_decode(b) == (u'', 0)
+        assert _codecs.utf_16_decode(b) == (u'', 0)
+        assert _codecs.utf_16_le_decode(b) == (u'', 0)
+        assert _codecs.utf_16_ex_decode(b) == (u'', 0, 0)
+        assert _codecs.utf_32_decode(b) == (u'', 0)
+        assert _codecs.utf_32_be_decode(b) == (u'', 0)
+        assert _codecs.utf_32_le_decode(b) == (u'', 0)
+        assert _codecs.utf_32_ex_decode(b) == (u'', 0, 0)
+        assert _codecs.charmap_decode(b) == (u'', 0)
+        assert _codecs.unicode_escape_decode(b) == (u'', 0)
+        assert _codecs.raw_unicode_escape_decode(b) == (u'', 0)
+        assert _codecs.unicode_internal_decode(b) == (u'', 0)


More information about the pypy-commit mailing list