Author: Armin Rigo <[email protected]>
Branch:
Changeset: r93440:dae84ef106dd
Date: 2017-12-16 10:31 +0100
http://bitbucket.org/pypy/pypy/changeset/dae84ef106dd/
Log: Half-test, and fix
diff --git a/pypy/module/cpyext/pyerrors.py b/pypy/module/cpyext/pyerrors.py
--- a/pypy/module/cpyext/pyerrors.py
+++ b/pypy/module/cpyext/pyerrors.py
@@ -122,7 +122,9 @@
error indicator."""
raise oefmt(space.w_TypeError, "bad argument type for built-in operation")
-@cpython_api([], lltype.Void)
+# NB. this returns 'void' in CPython, but we can't easily, otherwise the
+# function is supposed not to fail
+@cpython_api([], rffi.INT_real, error=-1)
def PyErr_BadInternalCall(space):
raise oefmt(space.w_SystemError, "Bad internal call!")
diff --git a/pypy/module/cpyext/test/test_pyerrors.py
b/pypy/module/cpyext/test/test_pyerrors.py
--- a/pypy/module/cpyext/test/test_pyerrors.py
+++ b/pypy/module/cpyext/test/test_pyerrors.py
@@ -425,3 +425,15 @@
assert orig_exc_info == reset_sys_exc_info
assert new_exc_info == (new_exc.__class__, new_exc, None)
assert new_exc_info == new_sys_exc_info
+
+ def test_PyErr_BadInternalCall(self):
+ # NB. it only seemed to fail when run with '-s'... but I think
+ # that it always printed stuff to stderr
+ module = self.import_extension('foo', [
+ ("oops", "METH_NOARGS",
+ r'''
+ PyErr_BadInternalCall();
+ return NULL;
+ '''),
+ ])
+ raises(SystemError, module.oops)
_______________________________________________
pypy-commit mailing list
[email protected]
https://mail.python.org/mailman/listinfo/pypy-commit