Mercurial > cpython-lru_cache-weakref
annotate Lib/test/test_symtable.py @ 87690:66c1c9f32567 default tip
Add use_weakref option to functools.lru_cache
The use_weakref option makes lru_cache create weak references to the function
arguments when creating the cache key, which prevents them from staying in the
memory forever even after all other references to them are gone.
This is a proof of concept for http://bugs.python.org/issue19859
| author | Radomir Dopieralski <devel@sheep.art.pl> |
|---|---|
| date | Tue, 03 Dec 2013 16:02:48 +0100 |
| parents | a78d7926c35d |
| children |
| rev | line source |
|---|---|
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
1 """ |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
2 Test the API of the symtable module. |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
3 """ |
|
35944
b46dc6d10986
Test is still disabled, but access through public module
Neal Norwitz <nnorwitz@gmail.com>
parents:
35738
diff
changeset
|
4 import symtable |
|
36380
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
5 import unittest |
|
16422
8b318b8d78c9
Add minimal interface to symtable: _symtable module.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
6 |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
7 from test import support |
|
16422
8b318b8d78c9
Add minimal interface to symtable: _symtable module.
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
diff
changeset
|
8 |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
9 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
10 TEST_CODE = """ |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
11 import sys |
|
35738
e018fce14f10
Disable some tests in anticipation of merging ast-branch to the head
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
29870
diff
changeset
|
12 |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
13 glob = 42 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
14 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
15 class Mine: |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
16 instance_var = 24 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
17 def a_method(p1, p2): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
18 pass |
|
29870
030227de8051
SF patch 763201: handling of SyntaxErrors in symbol table build
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
24364
diff
changeset
|
19 |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
20 def spam(a, b, *var, **kw): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
21 global bar |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
22 bar = 47 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
23 x = 23 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
24 glob |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
25 def internal(): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
26 return x |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
27 return internal |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
28 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
29 def foo(): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
30 pass |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
31 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
32 def namespace_test(): pass |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
33 def namespace_test(): pass |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
34 """ |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
35 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
36 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
37 def find_block(block, name): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
38 for ch in block.get_children(): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
39 if ch.get_name() == name: |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
40 return ch |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
41 |
|
36380
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
42 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
43 class SymtableTest(unittest.TestCase): |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
44 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
45 top = symtable.symtable(TEST_CODE, "?", "exec") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
46 # These correspond to scopes in TEST_CODE |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
47 Mine = find_block(top, "Mine") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
48 a_method = find_block(Mine, "a_method") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
49 spam = find_block(top, "spam") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
50 internal = find_block(spam, "internal") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
51 foo = find_block(top, "foo") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
52 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
53 def test_type(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
54 self.assertEqual(self.top.get_type(), "module") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
55 self.assertEqual(self.Mine.get_type(), "class") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
56 self.assertEqual(self.a_method.get_type(), "function") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
57 self.assertEqual(self.spam.get_type(), "function") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
58 self.assertEqual(self.internal.get_type(), "function") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
59 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
60 def test_optimized(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
61 self.assertFalse(self.top.is_optimized()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
62 self.assertFalse(self.top.has_exec()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
63 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
64 self.assertTrue(self.spam.is_optimized()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
65 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
66 def test_nested(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
67 self.assertFalse(self.top.is_nested()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
68 self.assertFalse(self.Mine.is_nested()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
69 self.assertFalse(self.spam.is_nested()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
70 self.assertTrue(self.internal.is_nested()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
71 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
72 def test_children(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
73 self.assertTrue(self.top.has_children()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
74 self.assertTrue(self.Mine.has_children()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
75 self.assertFalse(self.foo.has_children()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
76 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
77 def test_lineno(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
78 self.assertEqual(self.top.get_lineno(), 0) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
79 self.assertEqual(self.spam.get_lineno(), 11) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
80 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
81 def test_function_info(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
82 func = self.spam |
|
74253
fb5707168351
fix this to not depend on dictionary order
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
83 self.assertEqual(sorted(func.get_parameters()), ["a", "b", "kw", "var"]) |
| 74254 | 84 expected = ["a", "b", "internal", "kw", "var", "x"] |
|
74253
fb5707168351
fix this to not depend on dictionary order
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
85 self.assertEqual(sorted(func.get_locals()), expected) |
|
fb5707168351
fix this to not depend on dictionary order
Benjamin Peterson <benjamin@python.org>
parents:
55593
diff
changeset
|
86 self.assertEqual(sorted(func.get_globals()), ["bar", "glob"]) |
| 48794 | 87 self.assertEqual(self.internal.get_frees(), ("x",)) |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
88 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
89 def test_globals(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
90 self.assertTrue(self.spam.lookup("glob").is_global()) |
|
52536
d8ceb26c66c4
Merged revisions 70823 via svnmerge from
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48794
diff
changeset
|
91 self.assertFalse(self.spam.lookup("glob").is_declared_global()) |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
92 self.assertTrue(self.spam.lookup("bar").is_global()) |
|
52536
d8ceb26c66c4
Merged revisions 70823 via svnmerge from
Jeremy Hylton <jeremy@alum.mit.edu>
parents:
48794
diff
changeset
|
93 self.assertTrue(self.spam.lookup("bar").is_declared_global()) |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
94 self.assertFalse(self.internal.lookup("x").is_global()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
95 self.assertFalse(self.Mine.lookup("instance_var").is_global()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
96 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
97 def test_local(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
98 self.assertTrue(self.spam.lookup("x").is_local()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
99 self.assertFalse(self.internal.lookup("x").is_local()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
100 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
101 def test_referenced(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
102 self.assertTrue(self.internal.lookup("x").is_referenced()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
103 self.assertTrue(self.spam.lookup("internal").is_referenced()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
104 self.assertFalse(self.spam.lookup("x").is_referenced()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
105 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
106 def test_parameters(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
107 for sym in ("a", "var", "kw"): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
108 self.assertTrue(self.spam.lookup(sym).is_parameter()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
109 self.assertFalse(self.spam.lookup("x").is_parameter()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
110 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
111 def test_symbol_lookup(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
112 self.assertEqual(len(self.top.get_identifiers()), |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
113 len(self.top.get_symbols())) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
114 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
115 self.assertRaises(KeyError, self.top.lookup, "not_here") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
116 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
117 def test_namespaces(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
118 self.assertTrue(self.top.lookup("Mine").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
119 self.assertTrue(self.Mine.lookup("a_method").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
120 self.assertTrue(self.top.lookup("spam").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
121 self.assertTrue(self.spam.lookup("internal").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
122 self.assertTrue(self.top.lookup("namespace_test").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
123 self.assertFalse(self.spam.lookup("x").is_namespace()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
124 |
|
55593
0bb232078b8c
Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents:
52536
diff
changeset
|
125 self.assertTrue(self.top.lookup("spam").get_namespace() is self.spam) |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
126 ns_test = self.top.lookup("namespace_test") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
127 self.assertEqual(len(ns_test.get_namespaces()), 2) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
128 self.assertRaises(ValueError, ns_test.get_namespace) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
129 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
130 def test_assigned(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
131 self.assertTrue(self.spam.lookup("x").is_assigned()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
132 self.assertTrue(self.spam.lookup("bar").is_assigned()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
133 self.assertTrue(self.top.lookup("spam").is_assigned()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
134 self.assertTrue(self.Mine.lookup("a_method").is_assigned()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
135 self.assertFalse(self.internal.lookup("x").is_assigned()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
136 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
137 def test_imported(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
138 self.assertTrue(self.top.lookup("sys").is_imported()) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
139 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
140 def test_name(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
141 self.assertEqual(self.top.get_name(), "top") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
142 self.assertEqual(self.spam.get_name(), "spam") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
143 self.assertEqual(self.spam.lookup("x").get_name(), "x") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
144 self.assertEqual(self.Mine.get_name(), "Mine") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
145 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
146 def test_class_info(self): |
| 48794 | 147 self.assertEqual(self.Mine.get_methods(), ('a_method',)) |
|
48725
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
148 |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
149 def test_filename_correct(self): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
150 ### Bug tickler: SyntaxError file name correct whether error raised |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
151 ### while parsing or building symbol table. |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
152 def checkfilename(brokencode): |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
153 try: |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
154 symtable.symtable(brokencode, "spam", "exec") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
155 except SyntaxError as e: |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
156 self.assertEqual(e.filename, "spam") |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
157 else: |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
158 self.fail("no SyntaxError for %r" % (brokencode,)) |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
159 checkfilename("def f(x): foo)(") # parse-time |
|
40c07a61e1c2
Merged revisions 65715,65724,65726,65732,65736-65739,65775 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents:
47201
diff
changeset
|
160 checkfilename("def f(x): global x") # symtable-build-time |
|
36380
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
161 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
162 def test_eval(self): |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
163 symbols = symtable.symtable("42", "?", "eval") |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
164 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
165 def test_single(self): |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
166 symbols = symtable.symtable("42", "?", "single") |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
167 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
168 def test_exec(self): |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
169 symbols = symtable.symtable("def f(x): return x", "?", "exec") |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
170 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
171 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
172 def test_main(): |
|
47201
9c930a32cebb
#2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents:
36380
diff
changeset
|
173 support.run_unittest(SymtableTest) |
|
36380
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
174 |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
175 if __name__ == '__main__': |
|
8140f000e9d4
Use unittest and make sure a few other cases don't crash
Neal Norwitz <nnorwitz@gmail.com>
parents:
35944
diff
changeset
|
176 test_main() |
