summaryrefslogtreecommitdiffstats
path: root/Modules
diff options
context:
space:
mode:
authorJeremy Hylton <jeremy@alum.mit.edu>2001-09-26 20:01:13 (GMT)
committerJeremy Hylton <jeremy@alum.mit.edu>2001-09-26 20:01:13 (GMT)
commitede049b2d322f160814133677427f7ea0f2ee639 (patch)
tree0426566f468aa89089338171321378891d60b372 /Modules
parente2e2c9f41e13d81c6650ae4f4b4ff15a3e6d9423 (diff)
downloadcpython-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')
-rw-r--r--Modules/_testcapimodule.c26
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},