Mercurial > cpython-lru_cache-weakref
annotate Tools/parser/test_unparse.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 | 0e5a698d3c4c |
| children |
| rev | line source |
|---|---|
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
1 import unittest |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
2 import test.support |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
3 import io |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
4 import os |
|
77614
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
5 import random |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
6 import tokenize |
|
77614
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
7 import unparse |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
8 import ast |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
9 |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
10 def read_pyfile(filename): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
11 """Read and return the contents of a Python source file (as a |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
12 string), taking into account the file encoding.""" |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
13 with open(filename, "rb") as pyfile: |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
14 encoding = tokenize.detect_encoding(pyfile.readline)[0] |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
15 with open(filename, "r", encoding=encoding) as pyfile: |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
16 source = pyfile.read() |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
17 return source |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
18 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
19 for_else = """\ |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
20 def f(): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
21 for x in range(10): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
22 break |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
23 else: |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
24 y = 2 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
25 z = 3 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
26 """ |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
27 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
28 while_else = """\ |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
29 def g(): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
30 while True: |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
31 break |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
32 else: |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
33 y = 2 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
34 z = 3 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
35 """ |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
36 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
37 relative_import = """\ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
38 from . import fred |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
39 from .. import barney |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
40 from .australia import shrimp as prawns |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
41 """ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
42 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
43 nonlocal_ex = """\ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
44 def f(): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
45 x = 1 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
46 def g(): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
47 nonlocal x |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
48 x = 2 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
49 y = 7 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
50 def h(): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
51 nonlocal x, y |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
52 """ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
53 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
54 # also acts as test for 'except ... as ...' |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
55 raise_from = """\ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
56 try: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
57 1 / 0 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
58 except ZeroDivisionError as e: |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
59 raise ArithmeticError from e |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
60 """ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
61 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
62 class_decorator = """\ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
63 @f1(arg) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
64 @f2 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
65 class Foo: pass |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
66 """ |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
67 |
|
62643
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
68 elif1 = """\ |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
69 if cond1: |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
70 suite1 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
71 elif cond2: |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
72 suite2 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
73 else: |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
74 suite3 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
75 """ |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
76 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
77 elif2 = """\ |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
78 if cond1: |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
79 suite1 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
80 elif cond2: |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
81 suite2 |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
82 """ |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
83 |
|
62644
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
84 try_except_finally = """\ |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
85 try: |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
86 suite1 |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
87 except ex1: |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
88 suite2 |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
89 except ex2: |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
90 suite3 |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
91 else: |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
92 suite4 |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
93 finally: |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
94 suite5 |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
95 """ |
|
62643
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
96 |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
97 with_simple = """\ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
98 with f(): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
99 suite1 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
100 """ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
101 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
102 with_as = """\ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
103 with f() as x: |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
104 suite1 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
105 """ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
106 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
107 with_two_items = """\ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
108 with f() as x, g() as y: |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
109 suite1 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
110 """ |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
111 |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
112 class ASTTestCase(unittest.TestCase): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
113 def assertASTEqual(self, ast1, ast2): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
114 self.assertEqual(ast.dump(ast1), ast.dump(ast2)) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
115 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
116 def check_roundtrip(self, code1, filename="internal"): |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
117 ast1 = compile(code1, filename, "exec", ast.PyCF_ONLY_AST) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
118 unparse_buffer = io.StringIO() |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
119 unparse.Unparser(ast1, unparse_buffer) |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
120 code2 = unparse_buffer.getvalue() |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
121 ast2 = compile(code2, filename, "exec", ast.PyCF_ONLY_AST) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
122 self.assertASTEqual(ast1, ast2) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
123 |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
124 class UnparseTestCase(ASTTestCase): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
125 # Tests for specific bugs found in earlier versions of unparse |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
126 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
127 def test_del_statement(self): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
128 self.check_roundtrip("del x, y, z") |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
129 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
130 def test_shifts(self): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
131 self.check_roundtrip("45 << 2") |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
132 self.check_roundtrip("13 >> 7") |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
133 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
134 def test_for_else(self): |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
135 self.check_roundtrip(for_else) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
136 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
137 def test_while_else(self): |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
138 self.check_roundtrip(while_else) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
139 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
140 def test_unary_parens(self): |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
141 self.check_roundtrip("(-1)**7") |
|
62651
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
142 self.check_roundtrip("(-1.)**8") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
143 self.check_roundtrip("(-1j)**6") |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
144 self.check_roundtrip("not True or False") |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
145 self.check_roundtrip("True or not False") |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
146 |
|
62622
2f9051fe6ad9
Add parentheses around numeric literals, to avoid turning 3 .bit_length() into 3.bit_length().
Mark Dickinson <dickinsm@gmail.com>
parents:
62613
diff
changeset
|
147 def test_integer_parens(self): |
|
2f9051fe6ad9
Add parentheses around numeric literals, to avoid turning 3 .bit_length() into 3.bit_length().
Mark Dickinson <dickinsm@gmail.com>
parents:
62613
diff
changeset
|
148 self.check_roundtrip("3 .__abs__()") |
|
2f9051fe6ad9
Add parentheses around numeric literals, to avoid turning 3 .bit_length() into 3.bit_length().
Mark Dickinson <dickinsm@gmail.com>
parents:
62613
diff
changeset
|
149 |
|
62623
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
150 def test_huge_float(self): |
|
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
151 self.check_roundtrip("1e1000") |
|
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
152 self.check_roundtrip("-1e1000") |
|
62651
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
153 self.check_roundtrip("1e1000j") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
154 self.check_roundtrip("-1e1000j") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
155 |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
156 def test_min_int(self): |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
157 self.check_roundtrip(str(-2**31)) |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
158 self.check_roundtrip(str(-2**63)) |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
159 |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
160 def test_imaginary_literals(self): |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
161 self.check_roundtrip("7j") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
162 self.check_roundtrip("-7j") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
163 self.check_roundtrip("0j") |
|
043ef04f64d2
Unparse infinite imaginary literals correctly. Add some more numeric tests.
Mark Dickinson <dickinsm@gmail.com>
parents:
62650
diff
changeset
|
164 self.check_roundtrip("-0j") |
|
62623
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
165 |
|
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
166 def test_lambda_parentheses(self): |
|
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
167 self.check_roundtrip("(lambda: int)()") |
|
fe44828ea7ed
More unparse.py fixes:
Mark Dickinson <dickinsm@gmail.com>
parents:
62622
diff
changeset
|
168 |
|
62612
69f6d2130281
Merged revisions 82345 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62609
diff
changeset
|
169 def test_chained_comparisons(self): |
|
69f6d2130281
Merged revisions 82345 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62609
diff
changeset
|
170 self.check_roundtrip("1 < 4 <= 5") |
|
69f6d2130281
Merged revisions 82345 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62609
diff
changeset
|
171 self.check_roundtrip("a is b is c is not d") |
|
69f6d2130281
Merged revisions 82345 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
62609
diff
changeset
|
172 |
|
62613
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
173 def test_function_arguments(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
174 self.check_roundtrip("def f(): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
175 self.check_roundtrip("def f(a): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
176 self.check_roundtrip("def f(b = 2): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
177 self.check_roundtrip("def f(a, b): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
178 self.check_roundtrip("def f(a, b = 2): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
179 self.check_roundtrip("def f(a = 5, b = 2): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
180 self.check_roundtrip("def f(*, a = 1, b = 2): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
181 self.check_roundtrip("def f(*, a = 1, b): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
182 self.check_roundtrip("def f(*, a, b = 2): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
183 self.check_roundtrip("def f(a, b = None, *, c, **kwds): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
184 self.check_roundtrip("def f(a=2, *args, c=5, d, **kwds): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
185 self.check_roundtrip("def f(*args, **kwargs): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
186 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
187 def test_relative_import(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
188 self.check_roundtrip(relative_import) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
189 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
190 def test_nonlocal(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
191 self.check_roundtrip(nonlocal_ex) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
192 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
193 def test_raise_from(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
194 self.check_roundtrip(raise_from) |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
195 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
196 def test_bytes(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
197 self.check_roundtrip("b'123'") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
198 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
199 def test_annotations(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
200 self.check_roundtrip("def f(a : int): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
201 self.check_roundtrip("def f(a: int = 5): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
202 self.check_roundtrip("def f(*args: [int]): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
203 self.check_roundtrip("def f(**kwargs: dict): pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
204 self.check_roundtrip("def f() -> None: pass") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
205 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
206 def test_set_literal(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
207 self.check_roundtrip("{'a', 'b', 'c'}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
208 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
209 def test_set_comprehension(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
210 self.check_roundtrip("{x for x in range(5)}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
211 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
212 def test_dict_comprehension(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
213 self.check_roundtrip("{x: x*x for x in range(10)}") |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
214 |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
215 def test_class_decorators(self): |
|
b817e716516e
Update Demo/parser/unparse.py to current Python 3.x syntax. Additions:
Mark Dickinson <dickinsm@gmail.com>
parents:
62612
diff
changeset
|
216 self.check_roundtrip(class_decorator) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
217 |
|
62637
158166ef6f06
Fix typo in unparsing of a class definition.
Mark Dickinson <dickinsm@gmail.com>
parents:
62627
diff
changeset
|
218 def test_class_definition(self): |
|
158166ef6f06
Fix typo in unparsing of a class definition.
Mark Dickinson <dickinsm@gmail.com>
parents:
62627
diff
changeset
|
219 self.check_roundtrip("class A(metaclass=type, *[], **{}): pass") |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
220 |
|
62643
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
221 def test_elifs(self): |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
222 self.check_roundtrip(elif1) |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
223 self.check_roundtrip(elif2) |
|
25fbf023102d
Collapse else: if: ... into elif:
Mark Dickinson <dickinsm@gmail.com>
parents:
62637
diff
changeset
|
224 |
|
62644
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
225 def test_try_except_finally(self): |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
226 self.check_roundtrip(try_except_finally) |
|
e6bb990ac9f6
Output try-except-finally statements where appropriate.
Mark Dickinson <dickinsm@gmail.com>
parents:
62643
diff
changeset
|
227 |
|
76802
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
228 def test_starred_assignment(self): |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
229 self.check_roundtrip("a, *b, c = seq") |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
230 self.check_roundtrip("a, (*b, c) = seq") |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
231 self.check_roundtrip("a, *b[0], c = seq") |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
232 self.check_roundtrip("a, *(b, c) = seq") |
|
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
233 |
|
76803
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
234 def test_with_simple(self): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
235 self.check_roundtrip(with_simple) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
236 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
237 def test_with_as(self): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
238 self.check_roundtrip(with_as) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
239 |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
240 def test_with_two_items(self): |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
241 self.check_roundtrip(with_two_items) |
|
89e928048903
Issue #14965: Bring Tools/parser/unparse.py up to date with the Python 3.3. Grammar.
Mark Dickinson <mdickinson@enthought.com>
parents:
76802
diff
changeset
|
242 |
|
76802
c80576303892
Issue #14965: Fix missing support for starred assignments in Tools/parser/unparse.py.
Mark Dickinson <mdickinson@enthought.com>
parents:
67221
diff
changeset
|
243 |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
244 class DirectoryTestCase(ASTTestCase): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
245 """Test roundtrip behaviour on all files in Lib and Lib/test.""" |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
246 |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
247 # test directories, relative to the root of the distribution |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
248 test_directories = 'Lib', os.path.join('Lib', 'test') |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
249 |
|
62650
30843be2e11a
Revert accidental extra changes included in r82391.
Mark Dickinson <dickinsm@gmail.com>
parents:
62649
diff
changeset
|
250 def test_files(self): |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
251 # get names of files to test |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
252 dist_dir = os.path.join(os.path.dirname(__file__), os.pardir, os.pardir) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
253 |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
254 names = [] |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
255 for d in self.test_directories: |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
256 test_dir = os.path.join(dist_dir, d) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
257 for n in os.listdir(test_dir): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
258 if n.endswith('.py') and not n.startswith('bad'): |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
259 names.append(os.path.join(test_dir, n)) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
260 |
|
77614
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
261 # Test limited subset of files unless the 'cpu' resource is specified. |
|
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
262 if not test.support.is_resource_enabled("cpu"): |
|
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
263 names = random.sample(names, 10) |
|
0e5a698d3c4c
Issue #14742: test_unparse now only checks a limited number of files unless the 'cpu' resource is specified.
Mark Dickinson <mdickinson@enthought.com>
parents:
76803
diff
changeset
|
264 |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
265 for filename in names: |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
266 if test.support.verbose: |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
267 print('Testing %s' % filename) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
268 source = read_pyfile(filename) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
269 self.check_roundtrip(source) |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
270 |
|
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
271 |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
272 def test_main(): |
|
62627
b72c33f496ac
test_unparse.py: Do roundtrip testing for all Python files in Lib and Lib/test.
Mark Dickinson <dickinsm@gmail.com>
parents:
62623
diff
changeset
|
273 test.support.run_unittest(UnparseTestCase, DirectoryTestCase) |
|
62609
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
274 |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
275 if __name__ == '__main__': |
|
68b670f3614e
Merged revisions 82338,82340-82341 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents:
diff
changeset
|
276 test_main() |
