Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_scope.py @ 27998:e27f58a50737 legacy-trunk
SF bug #690377: Dud footnote reference in distutils docs
| author | Raymond Hettinger <python@rcn.com> |
|---|---|
| date | Fri, 21 Feb 2003 02:47:09 +0000 |
| parents | aa0d2d51fbde |
| children | 1c4d192f1568 |
| rev | line source |
|---|---|
|
24364
aa0d2d51fbde
Get rid of relative imports in all unittests. Now anything that
Barry Warsaw <barry@python.org>
parents:
23187
diff
changeset
|
1 from test.test_support import verify, TestFailed, check_syntax |
| 16262 | 2 |
|
19035
c1729cdc0734
silence warnings about import *
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18886
diff
changeset
|
3 import warnings |
|
21431
fd9d7ae3f94a
Don't call resetwarnings(). Be more restrictive in what we filter out
Guido van Rossum <guido@python.org>
parents:
21402
diff
changeset
|
4 warnings.filterwarnings("ignore", r"import \*", SyntaxWarning, "<string>") |
|
19035
c1729cdc0734
silence warnings about import *
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18886
diff
changeset
|
5 |
| 16262 | 6 print "1. simple nesting" |
| 7 | |
| 8 def make_adder(x): | |
| 9 def adder(y): | |
| 10 return x + y | |
| 11 return adder | |
| 12 | |
| 13 inc = make_adder(1) | |
| 14 plus10 = make_adder(10) | |
| 15 | |
| 16 verify(inc(1) == 2) | |
| 17 verify(plus10(-2) == 8) | |
| 18 | |
| 19 print "2. extra nesting" | |
| 20 | |
| 21 def make_adder2(x): | |
| 22 def extra(): # check freevars passing through non-use scopes | |
| 23 def adder(y): | |
| 24 return x + y | |
| 25 return adder | |
| 26 return extra() | |
| 27 | |
| 28 inc = make_adder2(1) | |
| 29 plus10 = make_adder2(10) | |
| 30 | |
| 31 verify(inc(1) == 2) | |
| 32 verify(plus10(-2) == 8) | |
| 33 | |
| 34 print "3. simple nesting + rebinding" | |
| 35 | |
| 36 def make_adder3(x): | |
| 37 def adder(y): | |
| 38 return x + y | |
| 39 x = x + 1 # check tracking of assignment to x in defining scope | |
| 40 return adder | |
| 41 | |
| 42 inc = make_adder3(0) | |
| 43 plus10 = make_adder3(9) | |
| 44 | |
| 45 verify(inc(1) == 2) | |
| 46 verify(plus10(-2) == 8) | |
| 47 | |
| 48 print "4. nesting with global but no free" | |
| 49 | |
| 50 def make_adder4(): # XXX add exta level of indirection | |
| 51 def nest(): | |
| 52 def nest(): | |
| 53 def adder(y): | |
| 54 return global_x + y # check that plain old globals work | |
| 55 return adder | |
| 56 return nest() | |
| 57 return nest() | |
| 58 | |
| 59 global_x = 1 | |
| 60 adder = make_adder4() | |
| 61 verify(adder(1) == 2) | |
| 62 | |
| 63 global_x = 10 | |
| 64 verify(adder(-2) == 8) | |
| 65 | |
| 66 print "5. nesting through class" | |
| 67 | |
| 68 def make_adder5(x): | |
| 69 class Adder: | |
| 70 def __call__(self, y): | |
| 71 return x + y | |
| 72 return Adder() | |
| 73 | |
| 74 inc = make_adder5(1) | |
| 75 plus10 = make_adder5(10) | |
| 76 | |
| 77 verify(inc(1) == 2) | |
| 78 verify(plus10(-2) == 8) | |
| 79 | |
| 80 print "6. nesting plus free ref to global" | |
| 81 | |
| 82 def make_adder6(x): | |
| 83 global global_nest_x | |
| 84 def adder(y): | |
| 85 return global_nest_x + y | |
| 86 global_nest_x = x | |
| 87 return adder | |
| 88 | |
| 89 inc = make_adder6(1) | |
| 90 plus10 = make_adder6(10) | |
| 91 | |
|
16360
95dae61ced51
Fix test for free ref to global. This test should have caught a
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16262
diff
changeset
|
92 verify(inc(1) == 11) # there's only one global |
| 16262 | 93 verify(plus10(-2) == 8) |
| 94 | |
| 95 print "7. nearest enclosing scope" | |
| 96 | |
| 97 def f(x): | |
| 98 def g(y): | |
| 99 x = 42 # check that this masks binding in f() | |
| 100 def h(z): | |
| 101 return x + z | |
| 102 return h | |
| 103 return g(2) | |
| 104 | |
| 105 test_func = f(10) | |
| 106 verify(test_func(5) == 47) | |
| 107 | |
| 108 print "8. mixed freevars and cellvars" | |
| 109 | |
| 110 def identity(x): | |
|
16536
54f7209cc71e
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16454
diff
changeset
|
111 return x |
| 16262 | 112 |
| 113 def f(x, y, z): | |
| 114 def g(a, b, c): | |
| 115 a = a + x # 3 | |
| 116 def h(): | |
|
16536
54f7209cc71e
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16454
diff
changeset
|
117 # z * (4 + 9) |
|
54f7209cc71e
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16454
diff
changeset
|
118 # 3 * 13 |
| 16262 | 119 return identity(z * (b + y)) |
| 120 y = c + z # 9 | |
| 121 return h | |
| 122 return g | |
| 123 | |
| 124 g = f(1, 2, 3) | |
| 125 h = g(2, 4, 6) | |
|
16536
54f7209cc71e
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16454
diff
changeset
|
126 verify(h() == 39) |
| 16262 | 127 |
| 128 print "9. free variable in method" | |
| 129 | |
| 130 def test(): | |
| 131 method_and_var = "var" | |
| 132 class Test: | |
| 133 def method_and_var(self): | |
| 134 return "method" | |
| 135 def test(self): | |
| 136 return method_and_var | |
| 137 def actual_global(self): | |
| 138 return str("global") | |
| 139 def str(self): | |
| 140 return str(self) | |
| 141 return Test() | |
| 142 | |
| 143 t = test() | |
| 144 verify(t.test() == "var") | |
| 145 verify(t.method_and_var() == "method") | |
| 146 verify(t.actual_global() == "global") | |
| 147 | |
| 148 method_and_var = "var" | |
| 149 class Test: | |
| 150 # this class is not nested, so the rules are different | |
| 151 def method_and_var(self): | |
| 152 return "method" | |
| 153 def test(self): | |
| 154 return method_and_var | |
| 155 def actual_global(self): | |
| 156 return str("global") | |
| 157 def str(self): | |
| 158 return str(self) | |
| 159 | |
|
16454
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
160 t = Test() |
| 16262 | 161 verify(t.test() == "var") |
| 162 verify(t.method_and_var() == "method") | |
| 163 verify(t.actual_global() == "global") | |
| 164 | |
| 165 print "10. recursion" | |
| 166 | |
| 167 def f(x): | |
| 168 def fact(n): | |
| 169 if n == 0: | |
| 170 return 1 | |
| 171 else: | |
| 172 return n * fact(n - 1) | |
| 173 if x >= 0: | |
| 174 return fact(x) | |
| 175 else: | |
| 176 raise ValueError, "x must be >= 0" | |
| 177 | |
| 178 verify(f(6) == 720) | |
| 179 | |
| 180 | |
| 181 print "11. unoptimized namespaces" | |
| 182 | |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
183 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
184 def unoptimized_clash1(strip): |
| 16262 | 185 def f(s): |
| 186 from string import * | |
| 187 return strip(s) # ambiguity: free or local | |
| 188 return f | |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
189 """) |
| 16262 | 190 |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
191 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
192 def unoptimized_clash2(): |
| 16262 | 193 from string import * |
| 194 def f(s): | |
| 195 return strip(s) # ambiguity: global or local | |
| 196 return f | |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
197 """) |
| 16262 | 198 |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
199 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
200 def unoptimized_clash2(): |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
201 from string import * |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
202 def g(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
203 def f(s): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
204 return strip(s) # ambiguity: global or local |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
205 return f |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
206 """) |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
207 |
|
16616
e2a63584566f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16541
diff
changeset
|
208 # XXX could allow this for exec with const argument, but what's the point |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
209 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
210 def error(y): |
| 16262 | 211 exec "a = 1" |
| 212 def f(x): | |
| 213 return x + y | |
| 214 return f | |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
215 """) |
| 16262 | 216 |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
217 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
218 def f(x): |
| 16262 | 219 def g(): |
| 220 return x | |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
221 del x # can't del name |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
222 """) |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
223 |
|
18524
1fbcf549c1c4
Remove now-unnecessary "from __future__ import nested_scopes" stmts.
Tim Peters <tim.peters@gmail.com>
parents:
17701
diff
changeset
|
224 check_syntax("""\ |
|
16803
44458fe947dd
add from __future__ import nested_scopes to strings passed to compile
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16781
diff
changeset
|
225 def f(): |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
226 def g(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
227 from string import * |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
228 return strip # global or local? |
|
16616
e2a63584566f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16541
diff
changeset
|
229 """) |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
230 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
231 # and verify a few cases that should work |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
232 |
|
19035
c1729cdc0734
silence warnings about import *
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18886
diff
changeset
|
233 exec """ |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
234 def noproblem1(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
235 from string import * |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
236 f = lambda x:x |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
237 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
238 def noproblem2(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
239 from string import * |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
240 def f(x): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
241 return x + 1 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
242 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
243 def noproblem3(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
244 from string import * |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
245 def f(x): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
246 global y |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
247 y = x |
|
19035
c1729cdc0734
silence warnings about import *
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18886
diff
changeset
|
248 """ |
| 16262 | 249 |
| 250 print "12. lambdas" | |
| 251 | |
| 252 f1 = lambda x: lambda y: x + y | |
| 253 inc = f1(1) | |
| 254 plus10 = f1(10) | |
| 255 verify(inc(1) == 2) | |
| 256 verify(plus10(5) == 15) | |
| 257 | |
| 258 f2 = lambda x: (lambda : lambda y: x + y)() | |
| 259 inc = f2(1) | |
| 260 plus10 = f2(10) | |
| 261 verify(inc(1) == 2) | |
| 262 verify(plus10(5) == 15) | |
| 263 | |
| 264 f3 = lambda x: lambda y: global_x + y | |
| 265 global_x = 1 | |
| 266 inc = f3(None) | |
| 267 verify(inc(2) == 3) | |
| 268 | |
| 269 f8 = lambda x, y, z: lambda a, b, c: lambda : z * (b + y) | |
| 270 g = f8(1, 2, 3) | |
| 271 h = g(2, 4, 6) | |
| 272 verify(h() == 18) | |
|
16454
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
273 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
274 print "13. UnboundLocal" |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
275 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
276 def errorInOuter(): |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
277 print y |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
278 def inner(): |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
279 return y |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
280 y = 1 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
281 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
282 def errorInInner(): |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
283 def inner(): |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
284 return y |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
285 inner() |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
286 y = 1 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
287 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
288 try: |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
289 errorInOuter() |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
290 except UnboundLocalError: |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
291 pass |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
292 else: |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
293 raise TestFailed |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
294 |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
295 try: |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
296 errorInInner() |
|
17494
a34293ced63b
Change error message raised when free variable is not yet bound. It
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17105
diff
changeset
|
297 except NameError: |
|
16454
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
298 pass |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
299 else: |
|
ddce715e49ba
Fix test 9 (caught by ?!ng)
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16360
diff
changeset
|
300 raise TestFailed |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
301 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
302 print "14. complex definitions" |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
303 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
304 def makeReturner(*lst): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
305 def returner(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
306 return lst |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
307 return returner |
|
16616
e2a63584566f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16541
diff
changeset
|
308 |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
309 verify(makeReturner(1,2,3)() == (1,2,3)) |
|
16616
e2a63584566f
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
16541
diff
changeset
|
310 |
|
16541
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
311 def makeReturner2(**kwargs): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
312 def returner(): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
313 return kwargs |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
314 return returner |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
315 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
316 verify(makeReturner2(a=11)()['a'] == 11) |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
317 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
318 def makeAddPair((a, b)): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
319 def addPair((c, d)): |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
320 return (a + c, b + d) |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
321 return addPair |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
322 |
|
8eed373bce7f
update test cases for recent compiler changes: exec/import * in nested
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16536
diff
changeset
|
323 verify(makeAddPair((1, 2))((100, 200)) == (101,202)) |
|
16910
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
324 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
325 print "15. scope of global statements" |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
326 # Examples posted by Samuele Pedroni to python-dev on 3/1/2001 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
327 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
328 # I |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
329 x = 7 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
330 def f(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
331 x = 1 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
332 def g(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
333 global x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
334 def i(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
335 def h(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
336 return x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
337 return h() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
338 return i() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
339 return g() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
340 verify(f() == 7) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
341 verify(x == 7) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
342 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
343 # II |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
344 x = 7 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
345 def f(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
346 x = 1 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
347 def g(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
348 x = 2 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
349 def i(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
350 def h(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
351 return x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
352 return h() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
353 return i() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
354 return g() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
355 verify(f() == 2) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
356 verify(x == 7) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
357 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
358 # III |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
359 x = 7 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
360 def f(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
361 x = 1 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
362 def g(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
363 global x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
364 x = 2 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
365 def i(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
366 def h(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
367 return x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
368 return h() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
369 return i() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
370 return g() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
371 verify(f() == 2) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
372 verify(x == 2) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
373 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
374 # IV |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
375 x = 7 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
376 def f(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
377 x = 3 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
378 def g(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
379 global x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
380 x = 2 |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
381 def i(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
382 def h(): |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
383 return x |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
384 return h() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
385 return i() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
386 return g() |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
387 verify(f() == 2) |
|
203ad6f3ef8c
Test interaction of global and nested scopes -- thanks to Samuele Pedroni.
Guido van Rossum <guido@python.org>
parents:
16803
diff
changeset
|
388 verify(x == 2) |
|
17035
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
389 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
390 print "16. check leaks" |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
391 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
392 class Foo: |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
393 count = 0 |
|
17055
743296ce052b
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
17035
diff
changeset
|
394 |
|
17035
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
395 def __init__(self): |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
396 Foo.count += 1 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
397 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
398 def __del__(self): |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
399 Foo.count -= 1 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
400 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
401 def f1(): |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
402 x = Foo() |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
403 def f2(): |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
404 return x |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
405 f2() |
|
17055
743296ce052b
Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents:
17035
diff
changeset
|
406 |
|
17035
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
407 for i in range(100): |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
408 f1() |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
409 |
|
7e1e6725509e
Add test to verify that nested functions with free variables don't
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
16910
diff
changeset
|
410 verify(Foo.count == 0) |
|
17105
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
411 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
412 print "17. class and global" |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
413 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
414 def test(x): |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
415 class Foo: |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
416 global x |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
417 def __call__(self, y): |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
418 return x + y |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
419 return Foo() |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
420 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
421 x = 0 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
422 verify(test(6)(2) == 8) |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
423 x = -1 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
424 verify(test(3)(2) == 5) |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
425 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
426 print "18. verify that locals() works" |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
427 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
428 def f(x): |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
429 def g(y): |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
430 def h(z): |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
431 return y + z |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
432 w = x + y |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
433 y += 3 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
434 return locals() |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
435 return g |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
436 |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
437 d = f(2)(4) |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
438 verify(d.has_key('h')) |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
439 del d['h'] |
|
8ff24abeb388
Add tests for recent changes:
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17055
diff
changeset
|
440 verify(d == {'x': 2, 'y': 7, 'w': 6}) |
|
17494
a34293ced63b
Change error message raised when free variable is not yet bound. It
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17105
diff
changeset
|
441 |
|
17637
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
442 print "19. var is bound and free in class" |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
443 |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
444 def f(x): |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
445 class C: |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
446 def m(self): |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
447 return x |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
448 a = x |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
449 return C |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
450 |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
451 inst = f(3)() |
|
8ff76cf30a8c
Fix 2.1 nested scopes crash reported by Evan Simpson
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17494
diff
changeset
|
452 verify(inst.a == inst.m()) |
|
17701
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
453 |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
454 print "20. interaction with trace function" |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
455 |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
456 import sys |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
457 def tracer(a,b,c): |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
458 return tracer |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
459 |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
460 def adaptgetter(name, klass, getter): |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
461 kind, des = getter |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
462 if kind == 1: # AV happens when stepping from this line to next |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
463 if des == "": |
|
21402
3d97a054f9d4
Undo inadvertent change to test_scope in previous checkin
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
21395
diff
changeset
|
464 des = "_%s__%s" % (klass.__name__, name) |
|
17701
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
465 return lambda obj: getattr(obj, des) |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
466 |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
467 class TestClass: |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
468 pass |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
469 |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
470 sys.settrace(tracer) |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
471 adaptgetter("foo", TestClass, (1, "")) |
|
ded41be84da4
SF patch 419176 from MvL; fixed bug 418977
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
17637
diff
changeset
|
472 sys.settrace(None) |
|
18886
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
473 |
|
22119
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21431
diff
changeset
|
474 try: sys.settrace() |
|
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21431
diff
changeset
|
475 except TypeError: pass |
|
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21431
diff
changeset
|
476 else: raise TestFailed, 'sys.settrace() did not raise TypeError' |
|
0859e764509e
SF #506611, fix sys.setprofile(), sys.settrace() core dumps
Neal Norwitz <nnorwitz@gmail.com>
parents:
21431
diff
changeset
|
477 |
|
21395
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
478 print "20. eval and exec with free variables" |
|
18886
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
479 |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
480 def f(x): |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
481 return lambda: x + 1 |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
482 |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
483 g = f(3) |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
484 try: |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
485 eval(g.func_code) |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
486 except TypeError: |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
487 pass |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
488 else: |
|
c7bb9563b149
Fix for SF bug [ #443866 ] Evaluating func_code causing core dump
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18524
diff
changeset
|
489 print "eval() should have failed, because code contained free vars" |
|
19035
c1729cdc0734
silence warnings about import *
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
18886
diff
changeset
|
490 |
|
21395
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
491 try: |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
492 exec g.func_code |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
493 except TypeError: |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
494 pass |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
495 else: |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
496 print "exec should have failed, because code contained free vars" |
|
560222e9d471
Add test for SF bug [ #492403 ] exec() segfaults on closure's func_code
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20518
diff
changeset
|
497 |
|
20518
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
498 print "21. list comprehension with local variables" |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
499 |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
500 try: |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
501 print bad |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
502 except NameError: |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
503 pass |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
504 else: |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
505 print "bad should not be defined" |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
506 |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
507 def x(): |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
508 [bad for s in 'a b' for bad in s.split()] |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
509 |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
510 x() |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
511 try: |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
512 print bad |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
513 except NameError: |
|
23dc7bb0be4f
Add test for local assigned to only in a nested list comp
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
20089
diff
changeset
|
514 pass |
|
23187
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
515 |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
516 print "22. eval with free variables" |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
517 |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
518 def f(x): |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
519 def g(): |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
520 x |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
521 eval("x + 1") |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
522 return g |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
523 |
|
7c0e8dbcf57a
Add test for eval() w/ free variables.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
22119
diff
changeset
|
524 f(4)() |
