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