Skip to content

Commit dff916d

Browse files
authored
Merge pull request #4029 from youknowone/test-symtable
Update test_symtable from CPython 3.10
2 parents c5601c1 + 934fe35 commit dff916d

File tree

1 file changed

+22
-6
lines changed

1 file changed

+22
-6
lines changed

Lib/test/test_symtable.py

Lines changed: 22 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -11,6 +11,8 @@
1111
1212
glob = 42
1313
some_var = 12
14+
some_non_assigned_global_var = 11
15+
some_assigned_global_var = 11
1416
1517
class Mine:
1618
instance_var = 24
@@ -19,6 +21,8 @@ def a_method(p1, p2):
1921
2022
def spam(a, b, *var, **kw):
2123
global bar
24+
global some_assigned_global_var
25+
some_assigned_global_var = 12
2226
bar = 47
2327
some_var = 10
2428
x = 23
@@ -90,7 +94,7 @@ def test_children(self):
9094

9195
def test_lineno(self):
9296
self.assertEqual(self.top.get_lineno(), 0)
93-
self.assertEqual(self.spam.get_lineno(), 12)
97+
self.assertEqual(self.spam.get_lineno(), 14)
9498

9599
# TODO: RUSTPYTHON
96100
@unittest.expectedFailure
@@ -99,7 +103,7 @@ def test_function_info(self):
99103
self.assertEqual(sorted(func.get_parameters()), ["a", "b", "kw", "var"])
100104
expected = ['a', 'b', 'internal', 'kw', 'other_internal', 'some_var', 'var', 'x']
101105
self.assertEqual(sorted(func.get_locals()), expected)
102-
self.assertEqual(sorted(func.get_globals()), ["bar", "glob"])
106+
self.assertEqual(sorted(func.get_globals()), ["bar", "glob", "some_assigned_global_var"])
103107
self.assertEqual(self.internal.get_frees(), ("x",))
104108

105109
# TODO: RUSTPYTHON
@@ -112,6 +116,9 @@ def test_globals(self):
112116
self.assertFalse(self.internal.lookup("x").is_global())
113117
self.assertFalse(self.Mine.lookup("instance_var").is_global())
114118
self.assertTrue(self.spam.lookup("bar").is_global())
119+
# Module-scope globals are both global and local
120+
self.assertTrue(self.top.lookup("some_non_assigned_global_var").is_global())
121+
self.assertTrue(self.top.lookup("some_assigned_global_var").is_global())
115122

116123
# TODO: RUSTPYTHON
117124
@unittest.expectedFailure
@@ -126,6 +133,9 @@ def test_nonlocal(self):
126133
def test_local(self):
127134
self.assertTrue(self.spam.lookup("x").is_local())
128135
self.assertFalse(self.spam.lookup("bar").is_local())
136+
# Module-scope globals are both global and local
137+
self.assertTrue(self.top.lookup("some_non_assigned_global_var").is_local())
138+
self.assertTrue(self.top.lookup("some_assigned_global_var").is_local())
129139

130140
def test_free(self):
131141
self.assertTrue(self.internal.lookup("x").is_free())
@@ -146,6 +156,8 @@ def test_symbol_lookup(self):
146156

147157
self.assertRaises(KeyError, self.top.lookup, "not_here")
148158

159+
# TODO: RUSTPYTHON
160+
@unittest.expectedFailure
149161
def test_namespaces(self):
150162
self.assertTrue(self.top.lookup("Mine").is_namespace())
151163
self.assertTrue(self.Mine.lookup("a_method").is_namespace())
@@ -154,8 +166,7 @@ def test_namespaces(self):
154166
self.assertTrue(self.top.lookup("namespace_test").is_namespace())
155167
self.assertFalse(self.spam.lookup("x").is_namespace())
156168

157-
# TODO(RUSTPYTHON): lookup should return same pythonref
158-
# self.assertTrue(self.top.lookup("spam").get_namespace() is self.spam)
169+
self.assertTrue(self.top.lookup("spam").get_namespace() is self.spam)
159170
ns_test = self.top.lookup("namespace_test")
160171
self.assertEqual(len(ns_test.get_namespaces()), 2)
161172
self.assertRaises(ValueError, ns_test.get_namespace)
@@ -220,7 +231,6 @@ def checkfilename(brokencode, offset):
220231
self.assertEqual(e.offset, offset)
221232
else:
222233
self.fail("no SyntaxError for %r" % (brokencode,))
223-
# TODO: RUSTPYTHON, now offset get 15
224234
checkfilename("def f(x): foo)(", 14) # parse-time
225235
checkfilename("def f(x): global x", 11) # symtable-build-time
226236
symtable.symtable("pass", b"spam", "exec")
@@ -252,6 +262,12 @@ def test_bytes(self):
252262
top = symtable.symtable(code, "?", "exec")
253263
self.assertIsNotNone(find_block(top, "\u017d"))
254264

265+
# TODO: RUSTPYTHON
266+
@unittest.expectedFailure
267+
def test_symtable_repr(self):
268+
self.assertEqual(str(self.top), "<SymbolTable for module ?>")
269+
self.assertEqual(str(self.spam), "<Function SymbolTable for spam in ?>")
270+
255271

256272
if __name__ == '__main__':
257-
unittest.main()
273+
unittest.main()

0 commit comments

Comments
 (0)