diff options
author | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-09-26 20:01:13 (GMT) |
---|---|---|
committer | Jeremy Hylton <jeremy@alum.mit.edu> | 2001-09-26 20:01:13 (GMT) |
commit | ede049b2d322f160814133677427f7ea0f2ee639 (patch) | |
tree | 0426566f468aa89089338171321378891d60b372 /Modules/_testcapimodule.c | |
parent | e2e2c9f41e13d81c6650ae4f4b4ff15a3e6d9423 (diff) | |
download | cpython-ede049b2d322f160814133677427f7ea0f2ee639.zip cpython-ede049b2d322f160814133677427f7ea0f2ee639.tar.gz cpython-ede049b2d322f160814133677427f7ea0f2ee639.tar.bz2 |
Add tests for new PyErr_NormalizeException() behavior
Add raise_exception() to the _testcapi module. It isn't a test, but
the C API exists only to support test_exceptions. raise_exception()
takes two arguments -- an exception class and an integer specifying
how many arguments it should be called with.
test_exceptions uses BadException() to test the interpreter's behavior
when there is a problem instantiating the exception. test_capi1()
calls it with too many arguments. test_capi2() causes an exception to
be raised in the Python code of the constructor.
Diffstat (limited to 'Modules/_testcapimodule.c')
-rw-r--r-- | Modules/_testcapimodule.c | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index e8db847..1a875f7 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -257,8 +257,34 @@ test_longlong_api(PyObject* self, PyObject* args) #endif /* ifdef HAVE_LONG_LONG */ +static PyObject * +raise_exception(PyObject *self, PyObject *args) +{ + PyObject *exc; + PyObject *exc_args, *v; + int num_args, i; + + if (!PyArg_ParseTuple(args, "Oi:raise_exception", + &exc, &num_args)) + return NULL; + + exc_args = PyTuple_New(num_args); + if (exc_args == NULL) + return NULL; + for (i = 0; i < num_args; ++i) { + v = PyInt_FromLong(i); + if (v == NULL) { + Py_DECREF(exc_args); + return NULL; + } + PyTuple_SET_ITEM(exc_args, i, v); + } + PyErr_SetObject(exc, exc_args); + return NULL; +} static PyMethodDef TestMethods[] = { + {"raise_exception", raise_exception, METH_VARARGS}, {"test_config", test_config, METH_VARARGS}, {"test_list_api", test_list_api, METH_VARARGS}, {"test_dict_iteration", test_dict_iteration, METH_VARARGS}, |