Author: Brian Kearns <[email protected]>
Branch:
Changeset: r60748:c8febcb60f46
Date: 2013-01-31 00:59 -0500
http://bitbucket.org/pypy/pypy/changeset/c8febcb60f46/
Log: fix test_capi's test_long/test_longlong
diff --git a/lib-python/2.7/test/test_capi.py b/lib-python/2.7/test/test_capi.py
--- a/lib-python/2.7/test/test_capi.py
+++ b/lib-python/2.7/test/test_capi.py
@@ -19,8 +19,6 @@
'test_broken_memoryview',
'test_capsule',
'test_lazy_hash_inheritance',
- 'test_long_api',
- 'test_longlong_api',
'test_widechar',
'TestThreadState',
'TestPendingCalls',
diff --git a/pypy/module/cpyext/longobject.py b/pypy/module/cpyext/longobject.py
--- a/pypy/module/cpyext/longobject.py
+++ b/pypy/module/cpyext/longobject.py
@@ -47,7 +47,12 @@
Return a C unsigned long representation of the contents of pylong.
If pylong is greater than ULONG_MAX, an OverflowError is
raised."""
- return rffi.cast(rffi.ULONG, space.uint_w(w_long))
+ try:
+ return rffi.cast(rffi.ULONG, space.uint_w(w_long))
+ except OperationError, e:
+ if e.match(space, space.w_ValueError):
+ e.w_type = space.w_OverflowError
+ raise
@cpython_api([PyObject], rffi.ULONG, error=-1)
def PyLong_AsUnsignedLongMask(space, w_long):
@@ -86,7 +91,12 @@
Return a C unsigned long representation of the contents of pylong.
If pylong is greater than ULONG_MAX, an OverflowError is
raised."""
- return rffi.cast(rffi.ULONGLONG, space.r_ulonglong_w(w_long))
+ try:
+ return rffi.cast(rffi.ULONGLONG, space.r_ulonglong_w(w_long))
+ except OperationError, e:
+ if e.match(space, space.w_ValueError):
+ e.w_type = space.w_OverflowError
+ raise
@cpython_api([PyObject], rffi.ULONGLONG, error=-1)
def PyLong_AsUnsignedLongLongMask(space, w_long):
diff --git a/pypy/module/cpyext/test/test_longobject.py
b/pypy/module/cpyext/test/test_longobject.py
--- a/pypy/module/cpyext/test/test_longobject.py
+++ b/pypy/module/cpyext/test/test_longobject.py
@@ -31,6 +31,8 @@
value = api.PyLong_AsUnsignedLong(w_value)
assert value == (sys.maxint - 1) * 2
+ self.raises(space, api, OverflowError, api.PyLong_AsUnsignedLong,
space.wrap(-1))
+
def test_as_ssize_t(self, space, api):
w_value = space.newlong(2)
value = api.PyLong_AsSsize_t(w_value)
@@ -46,11 +48,11 @@
w_l = space.wrap(sys.maxint + 1)
assert api.PyLong_Check(w_l)
assert api.PyLong_CheckExact(w_l)
-
+
w_i = space.wrap(sys.maxint)
assert not api.PyLong_Check(w_i)
assert not api.PyLong_CheckExact(w_i)
-
+
L = space.appexec([], """():
class L(long):
pass
@@ -73,6 +75,8 @@
assert api.PyLong_AsUnsignedLongLongMask(
space.wrap(1<<64)) == 0
+ self.raises(space, api, OverflowError, api.PyLong_AsUnsignedLongLong,
space.wrap(-1))
+
def test_as_long_and_overflow(self, space, api):
overflow = lltype.malloc(rffi.CArrayPtr(rffi.INT_real).TO, 1,
flavor='raw')
assert api.PyLong_AsLongAndOverflow(
_______________________________________________
pypy-commit mailing list
[email protected]
http://mail.python.org/mailman/listinfo/pypy-commit