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
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
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()