annotate Tools/parser/test_unparse.py @ 84007:dbfbdf2b5c19 3.3

Fix #17967: For ftp urls CWD to target instead of hopping to each directory towards target. This fixes a bug where target is accessible, but parent directories are restricted.
author Senthil Kumaran <senthil@uthcode.com>
date Sat, 01 Jun 2013 08:27:06 -0700
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()