mirror of
https://github.com/python/cpython.git
synced 2025-11-01 10:45:30 +00:00
gh-108082: C API: Add tests for PyErr_WriteUnraisable() (GH-111455)
Also document the behavior when called with NULL.
This commit is contained in:
parent
8eaa206fec
commit
bca3305429
3 changed files with 70 additions and 0 deletions
|
|
@ -303,6 +303,22 @@ _testcapi_traceback_print_impl(PyObject *module, PyObject *traceback,
|
|||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
static PyObject *
|
||||
err_writeunraisable(PyObject *Py_UNUSED(module), PyObject *args)
|
||||
{
|
||||
PyObject *exc, *obj;
|
||||
if (!PyArg_ParseTuple(args, "OO", &exc, &obj)) {
|
||||
return NULL;
|
||||
}
|
||||
NULLABLE(exc);
|
||||
NULLABLE(obj);
|
||||
if (exc) {
|
||||
PyErr_SetRaisedException(Py_NewRef(exc));
|
||||
}
|
||||
PyErr_WriteUnraisable(obj);
|
||||
Py_RETURN_NONE;
|
||||
}
|
||||
|
||||
/*[clinic input]
|
||||
_testcapi.unstable_exc_prep_reraise_star
|
||||
orig: object
|
||||
|
|
@ -347,6 +363,7 @@ static PyTypeObject PyRecursingInfinitelyError_Type = {
|
|||
|
||||
static PyMethodDef test_methods[] = {
|
||||
{"err_restore", err_restore, METH_VARARGS},
|
||||
{"err_writeunraisable", err_writeunraisable, METH_VARARGS},
|
||||
_TESTCAPI_ERR_SET_RAISED_METHODDEF
|
||||
_TESTCAPI_EXCEPTION_PRINT_METHODDEF
|
||||
_TESTCAPI_FATAL_ERROR_METHODDEF
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue