- Notifications
You must be signed in to change notification settings - Fork 31.7k
/
Copy pathtest_eval.py
103 lines (81 loc) · 3.44 KB
/
test_eval.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
importsys
importunittest
fromtest.supportimportimport_helper
_testlimitedcapi=import_helper.import_module('_testlimitedcapi')
classTests(unittest.TestCase):
deftest_eval_get_func_name(self):
eval_get_func_name=_testlimitedcapi.eval_get_func_name
deffunction_example(): ...
classA:
defmethod_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")
deftest_eval_get_func_desc(self):
eval_get_func_desc=_testlimitedcapi.eval_get_func_desc
deffunction_example(): ...
classA:
defmethod_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")
deftest_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})
deftest_eval_getglobals(self):
# Test PyEval_GetGlobals()
self.assertEqual(_testlimitedcapi.eval_getglobals(),
globals())
deftest_eval_getbuiltins(self):
# Test PyEval_GetBuiltins()
self.assertEqual(_testlimitedcapi.eval_getbuiltins(),
globals()['__builtins__'])
deftest_eval_getframe(self):
# Test PyEval_GetFrame()
self.assertEqual(_testlimitedcapi.eval_getframe(),
sys._getframe())
deftest_eval_getframe_builtins(self):
# Test PyEval_GetFrameBuiltins()
self.assertEqual(_testlimitedcapi.eval_getframe_builtins(),
sys._getframe().f_builtins)
deftest_eval_getframe_globals(self):
# Test PyEval_GetFrameGlobals()
self.assertEqual(_testlimitedcapi.eval_getframe_globals(),
sys._getframe().f_globals)
deftest_eval_getframe_locals(self):
# Test PyEval_GetFrameLocals()
self.assertEqual(_testlimitedcapi.eval_getframe_locals(),
sys._getframe().f_locals)
deftest_eval_get_recursion_limit(self):
# Test Py_GetRecursionLimit()
self.assertEqual(_testlimitedcapi.eval_get_recursion_limit(),
sys.getrecursionlimit())
deftest_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()