diff --git a/Lib/test/output/test_scope b/Lib/test/output/test_scope index b00f9f51677..af7fe31e2b9 100644 --- a/Lib/test/output/test_scope +++ b/Lib/test/output/test_scope @@ -15,3 +15,5 @@ test_scope 14. complex definitions 15. scope of global statements 16. check leaks +17. class and global +18. verify that locals() works diff --git a/Lib/test/test_scope.py b/Lib/test/test_scope.py index 5df0328d6d7..d6367b24fb9 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -405,3 +405,33 @@ def f2(): f1() verify(Foo.count == 0) + +print "17. class and global" + +def test(x): + class Foo: + global x + def __call__(self, y): + return x + y + return Foo() + +x = 0 +verify(test(6)(2) == 8) +x = -1 +verify(test(3)(2) == 5) + +print "18. verify that locals() works" + +def f(x): + def g(y): + def h(z): + return y + z + w = x + y + y += 3 + return locals() + return g + +d = f(2)(4) +verify(d.has_key('h')) +del d['h'] +verify(d == {'x': 2, 'y': 7, 'w': 6})