-
-
Notifications
You must be signed in to change notification settings - Fork 52
Expand file tree
/
Copy pathtest_rename_builtins.py
More file actions
128 lines (105 loc) · 2.27 KB
/
test_rename_builtins.py
File metadata and controls
128 lines (105 loc) · 2.27 KB
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
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
"""
Test for renaming of builtins
This assumes the standard NameAssigner and name_generator
"""
import ast
from python_minifier import unparse
from python_minifier.ast_annotation import add_parent
from python_minifier.ast_compare import CompareError, compare_ast
from python_minifier.rename import add_namespace, allow_rename_globals, allow_rename_locals, bind_names, rename, resolve_names
def do_rename(source):
# This will raise if the source file can't be parsed
module = ast.parse(source, 'test_rename_bultins')
add_parent(module)
add_namespace(module)
bind_names(module)
resolve_names(module)
allow_rename_locals(module, rename_locals=True)
allow_rename_globals(module, rename_globals=True)
rename(module)
return module
def assert_code(expected_ast, actual_ast):
try:
compare_ast(expected_ast, actual_ast)
except CompareError as e:
print(e)
print(unparse(actual_ast))
raise
def test_rename_builtins():
source = '''
sorted()
sorted()
sorted()
sorted()
sorted()
'''
expected = '''
A=sorted
A()
A()
A()
A()
A()
'''
expected_ast = ast.parse(expected)
actual_ast = do_rename(source)
assert_code(expected_ast, actual_ast)
def test_no_rename_assigned_builtin():
source = '''
if random.choice([True, False]):
sorted=str
sorted()
sorted()
sorted()
sorted()
sorted()
'''
expected = source
expected_ast = ast.parse(expected)
actual_ast = do_rename(source)
assert_code(expected_ast, actual_ast)
def test_rename_local_builtin():
source = '''
def t():
sorted()
sorted()
sorted()
sorted()
sorted()
'''
expected = '''
A=sorted
def B():
A()
A()
A()
A()
A()
'''
expected_ast = ast.parse(expected)
actual_ast = do_rename(source)
assert_code(expected_ast, actual_ast)
def test_no_rename_local_assigned_builtin():
source = '''
def a():
if random.choice([True, False]):
sorted=str
sorted()
sorted()
sorted()
sorted()
sorted()
'''
expected = '''
def A():
if random.choice([True, False]):
sorted=str
sorted()
sorted()
sorted()
sorted()
sorted()
'''
expected_ast = ast.parse(expected)
actual_ast = do_rename(source)
assert_code(expected_ast, actual_ast)