[pypy-svn] pypy default: Changed PyUnicode_*ASCII functions to raise exceptions since strict codec functioning is default. Changed tests to match.
ademan
commits-noreply at bitbucket.org
Wed Feb 23 18:13:56 CET 2011
Author: Daniel Roberts <Ademan555 at gmail.com>
Branch:
Changeset: r42232:5994bfbae1f7
Date: 2011-02-23 09:13 -0800
http://bitbucket.org/pypy/pypy/changeset/5994bfbae1f7/
Log: Changed PyUnicode_*ASCII functions to raise exceptions since strict
codec functioning is default. Changed tests to match.
diff --git a/pypy/module/cpyext/test/test_unicodeobject.py b/pypy/module/cpyext/test/test_unicodeobject.py
--- a/pypy/module/cpyext/test/test_unicodeobject.py
+++ b/pypy/module/cpyext/test/test_unicodeobject.py
@@ -184,8 +184,7 @@
assert space.eq_w(space.wrap(ustr), result)
w_ustr = space.wrap(u"abcd\xe9f")
- result = api.PyUnicode_AsASCIIString(w_ustr)
- assert result is None
+ self.raises(space, api, UnicodeEncodeError, api.PyUnicode_AsASCIIString, w_ustr)
def test_decode_utf16(self, space, api):
def test(encoded, endian, realendian=None):
@@ -254,8 +253,8 @@
s = 'abcd\xFF'
data = rffi.str2charp(s)
- w_u = api.PyUnicode_DecodeASCII(data, len(s), lltype.nullptr(rffi.CCHARP.TO))
- assert w_u is None
+ self.raises(space, api, UnicodeDecodeError, api.PyUnicode_DecodeASCII,
+ data, len(s), lltype.nullptr(rffi.CCHARP.TO))
rffi.free_charp(data)
uni = u'abcdefg'
@@ -267,6 +266,7 @@
u = u'�bcd�fg'
data = rffi.unicode2wcharp(u)
w_s = api.PyUnicode_EncodeASCII(data, len(u), lltype.nullptr(rffi.CCHARP.TO))
- assert w_s is None
+ self.raises(space, api, UnicodeEncodeError, api.PyUnicode_EncodeASCII,
+ data, len(u), lltype.nullptr(rffi.CCHARP.TO))
rffi.free_wcharp(data)
diff --git a/pypy/module/cpyext/unicodeobject.py b/pypy/module/cpyext/unicodeobject.py
--- a/pypy/module/cpyext/unicodeobject.py
+++ b/pypy/module/cpyext/unicodeobject.py
@@ -400,13 +400,7 @@
"""Encode a Unicode object using ASCII and return the result as Python string
object. Error handling is "strict". Return NULL if an exception was raised
by the codec."""
- try:
- return space.call_method(w_unicode, 'encode', space.wrap('ascii')) #space.w_None for errors?
- except OperationError, e:
- if e.match(space, space.w_UnicodeEncodeError):
- return None
- else:
- raise
+ return space.call_method(w_unicode, 'encode', space.wrap('ascii')) #space.w_None for errors?
@cpython_api([rffi.CCHARP, Py_ssize_t, rffi.CCHARP], PyObject)
def PyUnicode_DecodeASCII(space, s, size, errors):
@@ -416,13 +410,7 @@
This function used an int type for size. This might require
changes in your code for properly supporting 64-bit systems."""
w_s = space.wrap(rffi.charpsize2str(s, size))
- try:
- return space.call_method(w_s, 'decode', space.wrap('ascii'))
- except OperationError, e:
- if e.match(space, space.w_UnicodeDecodeError):
- return None
- else:
- raise
+ return space.call_method(w_s, 'decode', space.wrap('ascii'))
@cpython_api([rffi.CWCHARP, Py_ssize_t, rffi.CCHARP], PyObject)
def PyUnicode_EncodeASCII(space, s, size, errors):
@@ -433,13 +421,7 @@
changes in your code for properly supporting 64-bit systems."""
w_s = space.wrap(rffi.wcharpsize2unicode(s, size))
- try:
- return space.call_method(w_s, 'encode', space.wrap('ascii'))
- except OperationError, e:
- if e.match(space, space.w_UnicodeEncodeError):
- return None
- else:
- raise
+ return space.call_method(w_s, 'encode', space.wrap('ascii'))
if sys.platform == 'win32':
@cpython_api([CONST_WSTRING, Py_ssize_t, CONST_STRING], PyObject)
More information about the Pypy-commit
mailing list