mirror of
				https://github.com/python/cpython.git
				synced 2025-11-04 03:44:55 +00:00 
			
		
		
		
	
		
			
				
	
	
		
			103 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
			
		
		
	
	
			103 lines
		
	
	
	
		
			3.4 KiB
		
	
	
	
		
			Python
		
	
	
	
	
	
import sys
 | 
						|
import unittest
 | 
						|
from test.support import import_helper
 | 
						|
 | 
						|
_testlimitedcapi = import_helper.import_module('_testlimitedcapi')
 | 
						|
 | 
						|
 | 
						|
class Tests(unittest.TestCase):
 | 
						|
    def test_eval_get_func_name(self):
 | 
						|
        eval_get_func_name = _testlimitedcapi.eval_get_func_name
 | 
						|
 | 
						|
        def function_example(): ...
 | 
						|
 | 
						|
        class A:
 | 
						|
            def method_example(self): ...
 | 
						|
 | 
						|
        self.assertEqual(eval_get_func_name(function_example),
 | 
						|
                         "function_example")
 | 
						|
        self.assertEqual(eval_get_func_name(A.method_example),
 | 
						|
                         "method_example")
 | 
						|
        self.assertEqual(eval_get_func_name(A().method_example),
 | 
						|
                         "method_example")
 | 
						|
        self.assertEqual(eval_get_func_name(sum), "sum")  # c function
 | 
						|
        self.assertEqual(eval_get_func_name(A), "type")
 | 
						|
 | 
						|
    def test_eval_get_func_desc(self):
 | 
						|
        eval_get_func_desc = _testlimitedcapi.eval_get_func_desc
 | 
						|
 | 
						|
        def function_example(): ...
 | 
						|
 | 
						|
        class A:
 | 
						|
            def method_example(self): ...
 | 
						|
 | 
						|
        self.assertEqual(eval_get_func_desc(function_example),
 | 
						|
                         "()")
 | 
						|
        self.assertEqual(eval_get_func_desc(A.method_example),
 | 
						|
                         "()")
 | 
						|
        self.assertEqual(eval_get_func_desc(A().method_example),
 | 
						|
                         "()")
 | 
						|
        self.assertEqual(eval_get_func_desc(sum), "()")  # c function
 | 
						|
        self.assertEqual(eval_get_func_desc(A), " object")
 | 
						|
 | 
						|
    def test_eval_getlocals(self):
 | 
						|
        # Test PyEval_GetLocals()
 | 
						|
        x = 1
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getlocals(),
 | 
						|
            {'self': self,
 | 
						|
             'x': 1})
 | 
						|
 | 
						|
        y = 2
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getlocals(),
 | 
						|
            {'self': self,
 | 
						|
             'x': 1,
 | 
						|
             'y': 2})
 | 
						|
 | 
						|
    def test_eval_getglobals(self):
 | 
						|
        # Test PyEval_GetGlobals()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getglobals(),
 | 
						|
                         globals())
 | 
						|
 | 
						|
    def test_eval_getbuiltins(self):
 | 
						|
        # Test PyEval_GetBuiltins()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getbuiltins(),
 | 
						|
                         globals()['__builtins__'])
 | 
						|
 | 
						|
    def test_eval_getframe(self):
 | 
						|
        # Test PyEval_GetFrame()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getframe(),
 | 
						|
                         sys._getframe())
 | 
						|
 | 
						|
    def test_eval_getframe_builtins(self):
 | 
						|
        # Test PyEval_GetFrameBuiltins()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getframe_builtins(),
 | 
						|
                         sys._getframe().f_builtins)
 | 
						|
 | 
						|
    def test_eval_getframe_globals(self):
 | 
						|
        # Test PyEval_GetFrameGlobals()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getframe_globals(),
 | 
						|
                         sys._getframe().f_globals)
 | 
						|
 | 
						|
    def test_eval_getframe_locals(self):
 | 
						|
        # Test PyEval_GetFrameLocals()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_getframe_locals(),
 | 
						|
                         sys._getframe().f_locals)
 | 
						|
 | 
						|
    def test_eval_get_recursion_limit(self):
 | 
						|
        # Test Py_GetRecursionLimit()
 | 
						|
        self.assertEqual(_testlimitedcapi.eval_get_recursion_limit(),
 | 
						|
                         sys.getrecursionlimit())
 | 
						|
 | 
						|
    def test_eval_set_recursion_limit(self):
 | 
						|
        # Test Py_SetRecursionLimit()
 | 
						|
        old_limit = sys.getrecursionlimit()
 | 
						|
        try:
 | 
						|
            limit = old_limit + 123
 | 
						|
            _testlimitedcapi.eval_set_recursion_limit(limit)
 | 
						|
            self.assertEqual(sys.getrecursionlimit(), limit)
 | 
						|
        finally:
 | 
						|
            sys.setrecursionlimit(old_limit)
 | 
						|
 | 
						|
 | 
						|
if __name__ == "__main__":
 | 
						|
    unittest.main()
 |