summaryrefslogtreecommitdiffstats
path: root/Modules/_testcapi
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2023-09-14 06:12:17 (GMT)
committerGitHub <noreply@github.com>2023-09-14 06:12:17 (GMT)
commit1f885df2a580360c5de69cc41191f3c6bfaaeb35 (patch)
tree8ac79a07687449051fd4a4a916d005d7ff9cf4ac /Modules/_testcapi
parenta806e920c41d64a442708871fba260831fedc472 (diff)
downloadcpython-1f885df2a580360c5de69cc41191f3c6bfaaeb35.zip
cpython-1f885df2a580360c5de69cc41191f3c6bfaaeb35.tar.gz
cpython-1f885df2a580360c5de69cc41191f3c6bfaaeb35.tar.bz2
gh-107782: Use _testcapi to test non-representable signatures (GH-109325)
Builtin functions and methods that have non-representable signatures today will have representable signatures yesterday, and they will become unusable for testing this feature. So we need to add special functions and methods to the _testcapi module that always have non-representable signatures.
Diffstat (limited to 'Modules/_testcapi')
-rw-r--r--Modules/_testcapi/docstring.c44
1 files changed, 44 insertions, 0 deletions
diff --git a/Modules/_testcapi/docstring.c b/Modules/_testcapi/docstring.c
index b680171..d99fbdd 100644
--- a/Modules/_testcapi/docstring.c
+++ b/Modules/_testcapi/docstring.c
@@ -100,6 +100,13 @@ static PyMethodDef test_methods[] = {
{"test_with_docstring",
test_with_docstring, METH_VARARGS,
PyDoc_STR("This is a pretty normal docstring.")},
+ {"func_with_unrepresentable_signature",
+ (PyCFunction)test_with_docstring, METH_VARARGS,
+ PyDoc_STR(
+ "func_with_unrepresentable_signature($module, /, a, b=<x>)\n"
+ "--\n\n"
+ "This docstring has a signature with unrepresentable default."
+ )},
{NULL},
};
@@ -140,6 +147,40 @@ static PyTypeObject DocStringNoSignatureTest = {
.tp_new = PyType_GenericNew,
};
+static PyMethodDef DocStringUnrepresentableSignatureTest_methods[] = {
+ {"meth",
+ (PyCFunction)test_with_docstring, METH_VARARGS,
+ PyDoc_STR(
+ "meth($self, /, a, b=<x>)\n"
+ "--\n\n"
+ "This docstring has a signature with unrepresentable default."
+ )},
+ {"classmeth",
+ (PyCFunction)test_with_docstring, METH_VARARGS|METH_CLASS,
+ PyDoc_STR(
+ "classmeth($type, /, a, b=<x>)\n"
+ "--\n\n"
+ "This docstring has a signature with unrepresentable default."
+ )},
+ {"staticmeth",
+ (PyCFunction)test_with_docstring, METH_VARARGS|METH_STATIC,
+ PyDoc_STR(
+ "staticmeth(a, b=<x>)\n"
+ "--\n\n"
+ "This docstring has a signature with unrepresentable default."
+ )},
+ {NULL},
+};
+
+static PyTypeObject DocStringUnrepresentableSignatureTest = {
+ PyVarObject_HEAD_INIT(NULL, 0)
+ .tp_name = "_testcapi.DocStringUnrepresentableSignatureTest",
+ .tp_basicsize = sizeof(PyObject),
+ .tp_flags = Py_TPFLAGS_DEFAULT,
+ .tp_methods = DocStringUnrepresentableSignatureTest_methods,
+ .tp_new = PyType_GenericNew,
+};
+
int
_PyTestCapi_Init_Docstring(PyObject *mod)
{
@@ -149,5 +190,8 @@ _PyTestCapi_Init_Docstring(PyObject *mod)
if (PyModule_AddType(mod, &DocStringNoSignatureTest) < 0) {
return -1;
}
+ if (PyModule_AddType(mod, &DocStringUnrepresentableSignatureTest) < 0) {
+ return -1;
+ }
return 0;
}