From 5c7a2513ec277c6c4f5ab4f44b461aeb17a850c4 Mon Sep 17 00:00:00 2001 From: Jeremy Hylton Date: Wed, 21 Mar 2001 16:44:39 +0000 Subject: Add tests for recent changes: - global stmt in class does not affect free vars in methods - locals() works with free and cell vars --- Lib/test/output/test_scope | 2 ++ Lib/test/test_scope.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 32 insertions(+) diff --git a/Lib/test/output/test_scope b/Lib/test/output/test_scope index b00f9f5..af7fe31 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 5df0328..d6367b2 100644 --- a/Lib/test/test_scope.py +++ b/Lib/test/test_scope.py @@ -405,3 +405,33 @@ for i in range(100): 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}) -- cgit v0.12