From: Jeremy Hylton Date: Wed, 21 Mar 2001 16:44:39 +0000 (+0000) Subject: Add tests for recent changes: X-Git-Tag: v2.1b2~112 X-Git-Url: http://git.ipfire.org/gitweb.cgi?a=commitdiff_plain;h=5c7a2513ec277c6c4f5ab4f44b461aeb17a850c4;p=thirdparty%2FPython%2Fcpython.git Add tests for recent changes: - global stmt in class does not affect free vars in methods - locals() works with free and cell vars --- diff --git a/Lib/test/output/test_scope b/Lib/test/output/test_scope index b00f9f516773..af7fe31e2b9c 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 5df0328d6d73..d6367b24fb9d 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})