1111
1212glob = 42
1313some_var = 12
14+ some_non_assigned_global_var = 11
15+ some_assigned_global_var = 11
1416
1517class Mine:
1618 instance_var = 24
@@ -19,6 +21,8 @@ def a_method(p1, p2):
1921
2022def 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
@@ -81,14 +85,14 @@ def test_children(self):
8185
8286 def test_lineno (self ):
8387 self .assertEqual (self .top .get_lineno (), 0 )
84- self .assertEqual (self .spam .get_lineno (), 12 )
88+ self .assertEqual (self .spam .get_lineno (), 14 )
8589
8690 def test_function_info (self ):
8791 func = self .spam
8892 self .assertEqual (sorted (func .get_parameters ()), ["a" , "b" , "kw" , "var" ])
8993 expected = ['a' , 'b' , 'internal' , 'kw' , 'other_internal' , 'some_var' , 'var' , 'x' ]
9094 self .assertEqual (sorted (func .get_locals ()), expected )
91- self .assertEqual (sorted (func .get_globals ()), ["bar" , "glob" ])
95+ self .assertEqual (sorted (func .get_globals ()), ["bar" , "glob" , "some_assigned_global_var" ])
9296 self .assertEqual (self .internal .get_frees (), ("x" ,))
9397
9498 def test_globals (self ):
@@ -99,6 +103,9 @@ def test_globals(self):
99103 self .assertFalse (self .internal .lookup ("x" ).is_global ())
100104 self .assertFalse (self .Mine .lookup ("instance_var" ).is_global ())
101105 self .assertTrue (self .spam .lookup ("bar" ).is_global ())
106+ # Module-scope globals are both global and local
107+ self .assertTrue (self .top .lookup ("some_non_assigned_global_var" ).is_global ())
108+ self .assertTrue (self .top .lookup ("some_assigned_global_var" ).is_global ())
102109
103110 def test_nonlocal (self ):
104111 self .assertFalse (self .spam .lookup ("some_var" ).is_nonlocal ())
@@ -109,6 +116,9 @@ def test_nonlocal(self):
109116 def test_local (self ):
110117 self .assertTrue (self .spam .lookup ("x" ).is_local ())
111118 self .assertFalse (self .spam .lookup ("bar" ).is_local ())
119+ # Module-scope globals are both global and local
120+ self .assertTrue (self .top .lookup ("some_non_assigned_global_var" ).is_local ())
121+ self .assertTrue (self .top .lookup ("some_assigned_global_var" ).is_local ())
112122
113123 def test_free (self ):
114124 self .assertTrue (self .internal .lookup ("x" ).is_free ())
@@ -227,6 +237,10 @@ def test_bytes(self):
227237 top = symtable .symtable (code , "?" , "exec" )
228238 self .assertIsNotNone (find_block (top , "\u017d " ))
229239
240+ def test_symtable_repr (self ):
241+ self .assertEqual (str (self .top ), "<SymbolTable for module ?>" )
242+ self .assertEqual (str (self .spam ), "<Function SymbolTable for spam in ?>" )
243+
230244
231245if __name__ == '__main__' :
232246 unittest .main ()
0 commit comments