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()