]> git.ipfire.org Git - thirdparty/Python/cpython.git/commitdiff
gh-94808: Cover `PyEval_GetFuncName` (#98246)
authorNikita Sobolev <mail@sobolevn.me>
Sat, 15 Oct 2022 15:20:39 +0000 (18:20 +0300)
committerGitHub <noreply@github.com>
Sat, 15 Oct 2022 15:20:39 +0000 (08:20 -0700)
Lib/test/test_capi.py
Modules/_testcapimodule.c

index 17425050ce00c068a8a4f64b6900e385a70895cb..ae434c05baf2f271af4fe9316b9d9ebce7814032 100644 (file)
@@ -880,6 +880,21 @@ class CAPITest(unittest.TestCase):
         _testcapi.clear_managed_dict(c)
         self.assertEqual(c.__dict__, {})
 
+    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):
 
index 95c67fc95e891a84fe871dd127b7ef37da3c78b1..76e619d11f98e383784ba5984eb5f560309f67ea 100644 (file)
@@ -5469,6 +5469,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))
 {
@@ -5925,6 +5931,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},