From: Jelle Zijlstra Date: Sat, 15 Oct 2022 18:48:48 +0000 (-0700) Subject: [3.11] gh-94808: Cover `PyEval_GetFuncName` (GH-98246). (#98283) X-Git-Tag: v3.11.1~282 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=93d0d9cfdd74b7ff80a75ce8887adef600f21c69;p=thirdparty%2FPython%2Fcpython.git [3.11] gh-94808: Cover `PyEval_GetFuncName` (GH-98246). (#98283) (cherry picked from commit f01b56c7bdec239abe0dae2706f8325f4336249c) Co-authored-by: Nikita Sobolev --- diff --git a/Lib/test/test_capi.py b/Lib/test/test_capi.py index e157d9fdc850..6e56016a47cc 100644 --- a/Lib/test/test_capi.py +++ b/Lib/test/test_capi.py @@ -724,6 +724,21 @@ class CAPITest(unittest.TestCase): with self.subTest(name=name): self.assertTrue(hasattr(ctypes.pythonapi, name)) + def test_eval_get_func_name(self): + def function_example(): ... + + class A: + def method_example(self): ... + + self.assertEqual(_testcapi.eval_get_func_name(function_example), + "function_example") + self.assertEqual(_testcapi.eval_get_func_name(A.method_example), + "method_example") + self.assertEqual(_testcapi.eval_get_func_name(A().method_example), + "method_example") + self.assertEqual(_testcapi.eval_get_func_name(sum), "sum") # c function + self.assertEqual(_testcapi.eval_get_func_name(A), "type") + class TestPendingCalls(unittest.TestCase): diff --git a/Modules/_testcapimodule.c b/Modules/_testcapimodule.c index 43fec8138a0e..69703be186d1 100644 --- a/Modules/_testcapimodule.c +++ b/Modules/_testcapimodule.c @@ -5935,6 +5935,12 @@ frame_getlasti(PyObject *self, PyObject *frame) return PyLong_FromLong(lasti); } +static PyObject * +eval_get_func_name(PyObject *self, PyObject *func) +{ + return PyUnicode_FromString(PyEval_GetFuncName(func)); +} + static PyObject * get_feature_macros(PyObject *self, PyObject *Py_UNUSED(args)) { @@ -6372,6 +6378,7 @@ static PyMethodDef TestMethods[] = { {"frame_getgenerator", frame_getgenerator, METH_O, NULL}, {"frame_getbuiltins", frame_getbuiltins, METH_O, NULL}, {"frame_getlasti", frame_getlasti, METH_O, NULL}, + {"eval_get_func_name", eval_get_func_name, METH_O, NULL}, {"get_feature_macros", get_feature_macros, METH_NOARGS, NULL}, {"test_code_api", test_code_api, METH_NOARGS, NULL}, {"settrace_to_record", settrace_to_record, METH_O, NULL},