Mercurial > cpython-lru_cache-weakref
annotate Demo/parser/test_unparse.py @ 80661:94de77bd0b4b 2.7
Issue #16194: document imp.load_dynamic problems
when read several extension modules from the same binary object file.
| author | Andrew Svetlov <andrew.svetlov@gmail.com> |
|---|---|
| date | Thu, 29 Nov 2012 19:51:28 +0200 |
| parents | 9dcc93fe7528 |
| children |
| rev | line source |
|---|---|
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
1 import unittest |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
2 from test import test_support |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
3 import cStringIO |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
4 import sys |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
5 import os |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
6 import tokenize |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
7 import ast |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
8 import unparse |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
9 |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
10 def read_pyfile(filename): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
11 """Read and return the contents of a Python source file (as a |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
12 string), taking into account the file encoding.""" |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
13 with open(filename, "r") as pyfile: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
14 source = pyfile.read() |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
15 return source |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
16 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
17 for_else = """\ |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
18 def f(): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
19 for x in range(10): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
20 break |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
21 else: |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
22 y = 2 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
23 z = 3 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
24 """ |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
25 |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
26 while_else = """\ |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
27 def g(): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
28 while True: |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
29 break |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
30 else: |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
31 y = 2 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
32 z = 3 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
33 """ |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
34 |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
35 relative_import = """\ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
36 from . import fred |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
37 from .. import barney |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
38 from .australia import shrimp as prawns |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
39 """ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
40 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
41 class_decorator = """\ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
42 @f1(arg) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
43 @f2 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
44 class Foo: pass |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
45 """ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
46 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
47 elif1 = """\ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
48 if cond1: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
49 suite1 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
50 elif cond2: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
51 suite2 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
52 else: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
53 suite3 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
54 """ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
55 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
56 elif2 = """\ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
57 if cond1: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
58 suite1 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
59 elif cond2: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
60 suite2 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
61 """ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
62 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
63 try_except_finally = """\ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
64 try: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
65 suite1 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
66 except ex1: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
67 suite2 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
68 except ex2: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
69 suite3 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
70 else: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
71 suite4 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
72 finally: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
73 suite5 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
74 """ |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
75 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
76 class ASTTestCase(unittest.TestCase): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
77 def assertASTEqual(self, ast1, ast2): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
78 dump1 = ast.dump(ast1) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
79 dump2 = ast.dump(ast2) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
80 self.assertEqual(ast.dump(ast1), ast.dump(ast2)) |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
81 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
82 def check_roundtrip(self, code1, filename="internal"): |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
83 ast1 = compile(code1, filename, "exec", ast.PyCF_ONLY_AST) |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
84 unparse_buffer = cStringIO.StringIO() |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
85 unparse.Unparser(ast1, unparse_buffer) |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
86 code2 = unparse_buffer.getvalue() |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
87 ast2 = compile(code2, filename, "exec", ast.PyCF_ONLY_AST) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
88 self.assertASTEqual(ast1, ast2) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
89 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
90 class UnparseTestCase(ASTTestCase): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
91 # Tests for specific bugs found in earlier versions of unparse |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
92 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
93 def test_del_statement(self): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
94 self.check_roundtrip("del x, y, z") |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
95 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
96 def test_shifts(self): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
97 self.check_roundtrip("45 << 2") |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
98 self.check_roundtrip("13 >> 7") |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
99 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
100 def test_for_else(self): |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
101 self.check_roundtrip(for_else) |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
102 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
103 def test_while_else(self): |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
104 self.check_roundtrip(while_else) |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
105 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
106 def test_unary_parens(self): |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
107 self.check_roundtrip("(-1)**7") |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
108 self.check_roundtrip("(-1.)**8") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
109 self.check_roundtrip("(-1j)**6") |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
110 self.check_roundtrip("not True or False") |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
111 self.check_roundtrip("True or not False") |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
112 |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
113 def test_integer_parens(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
114 self.check_roundtrip("3 .__abs__()") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
115 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
116 def test_huge_float(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
117 self.check_roundtrip("1e1000") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
118 self.check_roundtrip("-1e1000") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
119 self.check_roundtrip("1e1000j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
120 self.check_roundtrip("-1e1000j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
121 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
122 def test_min_int(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
123 self.check_roundtrip(str(-sys.maxint-1)) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
124 self.check_roundtrip("-(%s)" % (sys.maxint + 1)) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
125 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
126 def test_imaginary_literals(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
127 self.check_roundtrip("7j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
128 self.check_roundtrip("-7j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
129 self.check_roundtrip("-(7j)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
130 self.check_roundtrip("0j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
131 self.check_roundtrip("-0j") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
132 self.check_roundtrip("-(0j)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
133 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
134 def test_negative_zero(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
135 self.check_roundtrip("-0") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
136 self.check_roundtrip("-(0)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
137 self.check_roundtrip("-0b0") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
138 self.check_roundtrip("-(0b0)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
139 self.check_roundtrip("-0o0") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
140 self.check_roundtrip("-(0o0)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
141 self.check_roundtrip("-0x0") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
142 self.check_roundtrip("-(0x0)") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
143 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
144 def test_lambda_parentheses(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
145 self.check_roundtrip("(lambda: int)()") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
146 |
|
62611
9ca9524d3e57
unparse.py: fix mispaced parentheses in chained comparisons
Mark Dickinson <dickinsm@gmail.com>
parents:
62606
diff
changeset
|
147 def test_chained_comparisons(self): |
|
9ca9524d3e57
unparse.py: fix mispaced parentheses in chained comparisons
Mark Dickinson <dickinsm@gmail.com>
parents:
62606
diff
changeset
|
148 self.check_roundtrip("1 < 4 <= 5") |
|
9ca9524d3e57
unparse.py: fix mispaced parentheses in chained comparisons
Mark Dickinson <dickinsm@gmail.com>
parents:
62606
diff
changeset
|
149 self.check_roundtrip("a is b is c is not d") |
|
9ca9524d3e57
unparse.py: fix mispaced parentheses in chained comparisons
Mark Dickinson <dickinsm@gmail.com>
parents:
62606
diff
changeset
|
150 |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
151 def test_function_arguments(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
152 self.check_roundtrip("def f(): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
153 self.check_roundtrip("def f(a): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
154 self.check_roundtrip("def f(b = 2): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
155 self.check_roundtrip("def f(a, b): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
156 self.check_roundtrip("def f(a, b = 2): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
157 self.check_roundtrip("def f(a = 5, b = 2): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
158 self.check_roundtrip("def f(*args, **kwargs): pass") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
159 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
160 def test_relative_import(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
161 self.check_roundtrip(relative_import) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
162 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
163 def test_bytes(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
164 self.check_roundtrip("b'123'") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
165 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
166 def test_set_literal(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
167 self.check_roundtrip("{'a', 'b', 'c'}") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
168 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
169 def test_set_comprehension(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
170 self.check_roundtrip("{x for x in range(5)}") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
171 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
172 def test_dict_comprehension(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
173 self.check_roundtrip("{x: x*x for x in range(10)}") |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
174 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
175 def test_class_decorators(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
176 self.check_roundtrip(class_decorator) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
177 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
178 def test_elifs(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
179 self.check_roundtrip(elif1) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
180 self.check_roundtrip(elif2) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
181 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
182 def test_try_except_finally(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
183 self.check_roundtrip(try_except_finally) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
184 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
185 class DirectoryTestCase(ASTTestCase): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
186 """Test roundtrip behaviour on all files in Lib and Lib/test.""" |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
187 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
188 # test directories, relative to the root of the distribution |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
189 test_directories = 'Lib', os.path.join('Lib', 'test') |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
190 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
191 def test_files(self): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
192 # get names of files to test |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
193 dist_dir = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
194 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
195 names = [] |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
196 for d in self.test_directories: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
197 test_dir = os.path.join(dist_dir, d) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
198 for n in os.listdir(test_dir): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
199 if n.endswith('.py') and not n.startswith('bad'): |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
200 names.append(os.path.join(test_dir, n)) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
201 |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
202 for filename in names: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
203 if test_support.verbose: |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
204 print('Testing %s' % filename) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
205 source = read_pyfile(filename) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
206 self.check_roundtrip(source) |
|
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
207 |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
208 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
209 def test_main(): |
|
62653
9dcc93fe7528
Update Demo/parser directory; backport unparse fixes from py3k.
Mark Dickinson <dickinsm@gmail.com>
parents:
62611
diff
changeset
|
210 test_support.run_unittest(UnparseTestCase, DirectoryTestCase) |
|
62605
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
211 |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
212 if __name__ == '__main__': |
|
3cb3ce7dcab8
Fix some shallow bugs in Demo/parser/unparse.py, and add tests:
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
213 test_main() |
