gh-111495: Add more tests on PyEval C APIs (#122789)

* Add Lib/test/test_capi/test_eval.py
* Add Modules/_testlimitedcapi/eval.c
This commit is contained in:
Victor Stinner 2024-08-08 14:16:20 +02:00 committed by GitHub
parent 81c739e2dc
commit bf8b374639
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
9 changed files with 205 additions and 65 deletions

View file

@ -869,36 +869,6 @@ 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")
def test_eval_get_func_desc(self):
def function_example(): ...
class A:
def method_example(self): ...
self.assertEqual(_testcapi.eval_get_func_desc(function_example),
"()")
self.assertEqual(_testcapi.eval_get_func_desc(A.method_example),
"()")
self.assertEqual(_testcapi.eval_get_func_desc(A().method_example),
"()")
self.assertEqual(_testcapi.eval_get_func_desc(sum), "()") # c function
self.assertEqual(_testcapi.eval_get_func_desc(A), " object")
def test_function_get_code(self):
import types
@ -1157,19 +1127,6 @@ class CAPITest(unittest.TestCase):
gen = genf()
self.assertEqual(_testcapi.gen_get_code(gen), gen.gi_code)
def test_pyeval_getlocals(self):
# Test PyEval_GetLocals()
x = 1
self.assertEqual(_testcapi.pyeval_getlocals(),
{'self': self,
'x': 1})
y = 2
self.assertEqual(_testcapi.pyeval_getlocals(),
{'self': self,
'x': 1,
'y': 2})
@requires_limited_api
class TestHeapTypeRelative(unittest.TestCase):