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