[pypy-commit] pypy default: unicode_internal_decode accepts readbuf
bdkearns
noreply at buildbot.pypy.org
Fri Apr 25 19:16:24 CEST 2014
Author: Brian Kearns <bdkearns at gmail.com>
Branch:
Changeset: r70977:629da2d06746
Date: 2014-04-25 13:15 -0400
http://bitbucket.org/pypy/pypy/changeset/629da2d06746/
Log: unicode_internal_decode accepts readbuf
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
@@ -679,7 +679,7 @@
if space.isinstance_w(w_string, space.w_unicode):
return space.newtuple([w_string, space.len(w_string)])
- string = space.str_w(w_string)
+ string = space.readbuf_w(w_string).as_str()
if len(string) == 0:
return space.newtuple([space.wrap(u''), space.wrap(0)])
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
@@ -276,7 +276,7 @@
assert enc == "a\x00\x00\x00"
def test_unicode_internal_decode(self):
- import sys
+ import sys, _codecs, array
if sys.maxunicode == 65535: # UCS2 build
if sys.byteorder == "big":
bytes = "\x00a"
@@ -291,6 +291,9 @@
bytes2 = "\x98\x00\x01\x00"
assert bytes2.decode("unicode_internal") == u"\U00010098"
assert bytes.decode("unicode_internal") == u"a"
+ assert _codecs.unicode_internal_decode(array.array('c', bytes))[0] == u"a"
+ exc = raises(TypeError, _codecs.unicode_internal_decode, memoryview(bytes))
+ assert str(exc.value) == "expected a readable buffer object"
def test_raw_unicode_escape(self):
assert unicode("\u0663", "raw-unicode-escape") == u"\u0663"
More information about the pypy-commit
mailing list