annotate Lib/test/test_parser.py @ 80779:10d04bdb05ab 3.3

Issue #16248: Disable code execution from the user's home directory by tkinter when the -E flag is passed to Python. Patch by Zachary Ware.
author Antoine Pitrou <solipsis@pitrou.net>
date Sun, 09 Dec 2012 14:46:46 +0100
parents 593eba5e867c
children 185c923f21ec
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
1 import parser
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
2 import unittest
45852
30c4e1ca8421 Merged revisions 61431,61433-61436,61439,61444,61449-61450,61453,61458,61465,61468,61471-61474,61480,61483-61484,61488,61495-61496,61498,61503-61504,61507,61509-61510,61515-61518 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45446
diff changeset
3 import sys
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
4 import operator
78391
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
5 import struct
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45852
diff changeset
6 from test import support
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
7
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
8 #
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
9 # First, we test that we can generate trees from valid source fragments,
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
10 # and that these valid trees are indeed allowed by the tree-loading side
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
11 # of the parser module.
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
12 #
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
13
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
14 class RoundtripLegalSyntaxTestCase(unittest.TestCase):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
15
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
16 def roundtrip(self, f, s):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
17 st1 = f(s)
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
18 t = st1.totuple()
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
19 try:
18670
384b9113a2e0 Use the "st" versions of the "ast" calls in the parser module -- there is
Fred Drake <fdrake@acm.org>
parents: 18647
diff changeset
20 st2 = parser.sequence2st(t)
40587
6b18a095c2e7 SF patch 1631942 by Collin Winter:
Guido van Rossum <guido@python.org>
parents: 40450
diff changeset
21 except parser.ParserError as why:
32888
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
22 self.fail("could not roundtrip %r: %s" % (s, why))
14214
b5fb175ad528 Update the parser module to support augmented assignment.
Fred Drake <fdrake@acm.org>
parents: 14111
diff changeset
23
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
24 self.assertEqual(t, st2.totuple(),
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
25 "could not re-generate syntax tree")
14214
b5fb175ad528 Update the parser module to support augmented assignment.
Fred Drake <fdrake@acm.org>
parents: 14111
diff changeset
26
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
27 def check_expr(self, s):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
28 self.roundtrip(parser.expr, s)
14214
b5fb175ad528 Update the parser module to support augmented assignment.
Fred Drake <fdrake@acm.org>
parents: 14111
diff changeset
29
49624
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
30 def test_flags_passed(self):
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
31 # The unicode literals flags has to be passed from the paser to AST
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
32 # generation.
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
33 suite = parser.suite("from __future__ import unicode_literals; x = ''")
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
34 code = suite.compile()
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
35 scope = {}
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
36 exec(code, {}, scope)
58473
71acd4482e65 Merged revisions 77727 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 57678
diff changeset
37 self.assertIsInstance(scope["x"], str)
49624
f3234e43e1fe Merged revisions 67066 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 48788
diff changeset
38
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
39 def check_suite(self, s):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
40 self.roundtrip(parser.suite, s)
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
41
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
42 def test_yield_statement(self):
22719
fa0ac845929b Remove some now-obsolete generator future statements.
Tim Peters <tim.peters@gmail.com>
parents: 20013
diff changeset
43 self.check_suite("def f(): yield 1")
35298
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
44 self.check_suite("def f(): yield")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
45 self.check_suite("def f(): x += yield")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
46 self.check_suite("def f(): x = yield 1")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
47 self.check_suite("def f(): x = y = yield 1")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
48 self.check_suite("def f(): x = yield")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
49 self.check_suite("def f(): x = y = yield")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
50 self.check_suite("def f(): 1 + (yield)*2")
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
51 self.check_suite("def f(): (yield 1)*2")
22719
fa0ac845929b Remove some now-obsolete generator future statements.
Tim Peters <tim.peters@gmail.com>
parents: 20013
diff changeset
52 self.check_suite("def f(): return; yield 1")
fa0ac845929b Remove some now-obsolete generator future statements.
Tim Peters <tim.peters@gmail.com>
parents: 20013
diff changeset
53 self.check_suite("def f(): yield 1; return")
74356
d64ac9ab4cd0 Implement PEP 380 - 'yield from' (closes #11682)
Nick Coghlan <ncoghlan@gmail.com>
parents: 70638
diff changeset
54 self.check_suite("def f(): yield from 1")
d64ac9ab4cd0 Implement PEP 380 - 'yield from' (closes #11682)
Nick Coghlan <ncoghlan@gmail.com>
parents: 70638
diff changeset
55 self.check_suite("def f(): x = yield from 1")
d64ac9ab4cd0 Implement PEP 380 - 'yield from' (closes #11682)
Nick Coghlan <ncoghlan@gmail.com>
parents: 70638
diff changeset
56 self.check_suite("def f(): f((yield from 1))")
d64ac9ab4cd0 Implement PEP 380 - 'yield from' (closes #11682)
Nick Coghlan <ncoghlan@gmail.com>
parents: 70638
diff changeset
57 self.check_suite("def f(): yield 1; return 1")
22719
fa0ac845929b Remove some now-obsolete generator future statements.
Tim Peters <tim.peters@gmail.com>
parents: 20013
diff changeset
58 self.check_suite("def f():\n"
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
59 " for x in range(30):\n"
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
60 " yield x\n")
35298
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
61 self.check_suite("def f():\n"
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
62 " if (yield):\n"
b2fe5f8fcfdd PEP 342 implementation. Per Guido's comments, the generator throw()
Phillip J. Eby <pje@telecommunity.com>
parents: 34920
diff changeset
63 " yield x\n")
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
64
76647
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
65 def test_nonlocal_statement(self):
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
66 self.check_suite("def f():\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
67 " x = 0\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
68 " def g():\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
69 " nonlocal x\n")
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
70 self.check_suite("def f():\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
71 " x = y = 0\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
72 " def g():\n"
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
73 " nonlocal x, y\n")
b7e491b9094f Issue #14696: Fix parser module to understand 'nonlocal' declarations.
Mark Dickinson <mdickinson@enthought.com>
parents: 76635
diff changeset
74
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
75 def test_expressions(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
76 self.check_expr("foo(1)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
77 self.check_expr("[1, 2, 3]")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
78 self.check_expr("[x**3 for x in range(20)]")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
79 self.check_expr("[x**3 for x in range(20) if x % 3]")
37879
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35742
diff changeset
80 self.check_expr("[x**3 for x in range(20) if x % 2 if x % 3]")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35742
diff changeset
81 self.check_expr("list(x**3 for x in range(20))")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35742
diff changeset
82 self.check_expr("list(x**3 for x in range(20) if x % 3)")
f731859e9b3b Merge p3yk branch with the trunk up to revision 45595. This breaks a fair
Thomas Wouters <thomas@python.org>
parents: 35742
diff changeset
83 self.check_expr("list(x**3 for x in range(20) if x % 2 if x % 3)")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
84 self.check_expr("foo(*args)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
85 self.check_expr("foo(*args, **kw)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
86 self.check_expr("foo(**kw)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
87 self.check_expr("foo(key=value)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
88 self.check_expr("foo(key=value, *args)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
89 self.check_expr("foo(key=value, *args, **kw)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
90 self.check_expr("foo(key=value, **kw)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
91 self.check_expr("foo(a, b, c, *args)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
92 self.check_expr("foo(a, b, c, *args, **kw)")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
93 self.check_expr("foo(a, b, c, **kw)")
48788
6d6d3e037550 Merged revisions 65885,65892,65894,65898 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 47201
diff changeset
94 self.check_expr("foo(a, *args, keyword=23)")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
95 self.check_expr("foo + bar")
27517
51abb5e86226 Teach the parsermodule about floor division. Fixes
Michael W. Hudson <mwh@python.net>
parents: 24957
diff changeset
96 self.check_expr("foo - bar")
51abb5e86226 Teach the parsermodule about floor division. Fixes
Michael W. Hudson <mwh@python.net>
parents: 24957
diff changeset
97 self.check_expr("foo * bar")
51abb5e86226 Teach the parsermodule about floor division. Fixes
Michael W. Hudson <mwh@python.net>
parents: 24957
diff changeset
98 self.check_expr("foo / bar")
51abb5e86226 Teach the parsermodule about floor division. Fixes
Michael W. Hudson <mwh@python.net>
parents: 24957
diff changeset
99 self.check_expr("foo // bar")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
100 self.check_expr("lambda: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
101 self.check_expr("lambda x: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
102 self.check_expr("lambda *y: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
103 self.check_expr("lambda *y, **z: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
104 self.check_expr("lambda **z: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
105 self.check_expr("lambda x, y: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
106 self.check_expr("lambda foo=bar: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
107 self.check_expr("lambda foo=bar, spaz=nifty+spit: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
108 self.check_expr("lambda foo=bar, **z: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
109 self.check_expr("lambda foo=bar, blaz=blat+2, **z: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
110 self.check_expr("lambda foo=bar, blaz=blat+2, *y, **z: 0")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
111 self.check_expr("lambda x, *y, **z: 0")
32121
302d399cfd37 SF patch #872326: Generator expression implementation
Raymond Hettinger <python@rcn.com>
parents: 28917
diff changeset
112 self.check_expr("(x for x in range(10))")
302d399cfd37 SF patch #872326: Generator expression implementation
Raymond Hettinger <python@rcn.com>
parents: 28917
diff changeset
113 self.check_expr("foo(x for x in range(10))")
76824
2b1cc84bf1d9 Issue #14741: Fix missing support for ellipsis in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76822
diff changeset
114 self.check_expr("...")
2b1cc84bf1d9 Issue #14741: Fix missing support for ellipsis in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76822
diff changeset
115 self.check_expr("a[...]")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
116
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
117 def test_simple_expression(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
118 # expr_stmt
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
119 self.check_suite("a")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
120
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
121 def test_simple_assignments(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
122 self.check_suite("a = b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
123 self.check_suite("a = b = c = d = e")
14214
b5fb175ad528 Update the parser module to support augmented assignment.
Fred Drake <fdrake@acm.org>
parents: 14111
diff changeset
124
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
125 def test_simple_augmented_assignments(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
126 self.check_suite("a += b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
127 self.check_suite("a -= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
128 self.check_suite("a *= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
129 self.check_suite("a /= b")
27517
51abb5e86226 Teach the parsermodule about floor division. Fixes
Michael W. Hudson <mwh@python.net>
parents: 24957
diff changeset
130 self.check_suite("a //= b")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
131 self.check_suite("a %= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
132 self.check_suite("a &= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
133 self.check_suite("a |= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
134 self.check_suite("a ^= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
135 self.check_suite("a <<= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
136 self.check_suite("a >>= b")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
137 self.check_suite("a **= b")
15752
c0822a05e923 Add more regression tests, including for the import statement variations.
Fred Drake <fdrake@acm.org>
parents: 15507
diff changeset
138
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
139 def test_function_defs(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
140 self.check_suite("def f(): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
141 self.check_suite("def f(*args): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
142 self.check_suite("def f(*args, **kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
143 self.check_suite("def f(**kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
144 self.check_suite("def f(foo=bar): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
145 self.check_suite("def f(foo=bar, *args): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
146 self.check_suite("def f(foo=bar, *args, **kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
147 self.check_suite("def f(foo=bar, **kw): pass")
15752
c0822a05e923 Add more regression tests, including for the import statement variations.
Fred Drake <fdrake@acm.org>
parents: 15507
diff changeset
148
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
149 self.check_suite("def f(a, b): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
150 self.check_suite("def f(a, b, *args): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
151 self.check_suite("def f(a, b, *args, **kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
152 self.check_suite("def f(a, b, **kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
153 self.check_suite("def f(a, b, foo=bar): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
154 self.check_suite("def f(a, b, foo=bar, *args): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
155 self.check_suite("def f(a, b, foo=bar, *args, **kw): pass")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
156 self.check_suite("def f(a, b, foo=bar, **kw): pass")
15752
c0822a05e923 Add more regression tests, including for the import statement variations.
Fred Drake <fdrake@acm.org>
parents: 15507
diff changeset
157
32888
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
158 self.check_suite("@staticmethod\n"
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
159 "def f(): pass")
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
160 self.check_suite("@staticmethod\n"
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
161 "@funcattrs(x, y)\n"
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
162 "def f(): pass")
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
163 self.check_suite("@funcattrs()\n"
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
164 "def f(): pass")
c7e03cf8333e PEP-0318, @decorator-style. In Guido's words:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32121
diff changeset
165
76635
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
166 # keyword-only arguments
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
167 self.check_suite("def f(*, a): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
168 self.check_suite("def f(*, a = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
169 self.check_suite("def f(*, a = 5, b): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
170 self.check_suite("def f(*, a, b = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
171 self.check_suite("def f(*, a, b = 5, **kwds): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
172 self.check_suite("def f(*args, a): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
173 self.check_suite("def f(*args, a = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
174 self.check_suite("def f(*args, a = 5, b): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
175 self.check_suite("def f(*args, a, b = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
176 self.check_suite("def f(*args, a, b = 5, **kwds): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
177
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
178 # function annotations
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
179 self.check_suite("def f(a: int): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
180 self.check_suite("def f(a: int = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
181 self.check_suite("def f(*args: list): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
182 self.check_suite("def f(**kwds: dict): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
183 self.check_suite("def f(*, a: int): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
184 self.check_suite("def f(*, a: int = 5): pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
185 self.check_suite("def f() -> int: pass")
9f57d66689ca Issue #9154: Fix parser module to understand function annotations.
Mark Dickinson <mdickinson@enthought.com>
parents: 68257
diff changeset
186
34887
7c2780c9e51b Flush out support for ``class B(): pass`` syntax by adding support to the
Brett Cannon <bcannon@gmail.com>
parents: 33353
diff changeset
187 def test_class_defs(self):
7c2780c9e51b Flush out support for ``class B(): pass`` syntax by adding support to the
Brett Cannon <bcannon@gmail.com>
parents: 33353
diff changeset
188 self.check_suite("class foo():pass")
43862
d4f9706cb46b Patch 1144 by David Binger, fix for parser module. With unittest.
Guido van Rossum <guido@python.org>
parents: 42312
diff changeset
189 self.check_suite("class foo(object):pass")
62774
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
190 self.check_suite("@class_decorator\n"
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
191 "class foo():pass")
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
192 self.check_suite("@class_decorator(arg)\n"
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
193 "class foo():pass")
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
194 self.check_suite("@decorator1\n"
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
195 "@decorator2\n"
18282039c5c9 Merged revisions 82537 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62647
diff changeset
196 "class foo():pass")
34920
67a89b43dcc7 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 34887
diff changeset
197
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
198 def test_import_from_statement(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
199 self.check_suite("from sys.path import *")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
200 self.check_suite("from sys.path import dirname")
33353
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
201 self.check_suite("from sys.path import (dirname)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
202 self.check_suite("from sys.path import (dirname,)")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
203 self.check_suite("from sys.path import dirname as my_dirname")
33353
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
204 self.check_suite("from sys.path import (dirname as my_dirname)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
205 self.check_suite("from sys.path import (dirname as my_dirname,)")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
206 self.check_suite("from sys.path import dirname, basename")
33353
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
207 self.check_suite("from sys.path import (dirname, basename)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
208 self.check_suite("from sys.path import (dirname, basename,)")
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
209 self.check_suite(
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
210 "from sys.path import dirname as my_dirname, basename")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
211 self.check_suite(
33353
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
212 "from sys.path import (dirname as my_dirname, basename)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
213 self.check_suite(
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
214 "from sys.path import (dirname as my_dirname, basename,)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
215 self.check_suite(
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
216 "from sys.path import dirname, basename as my_basename")
33353
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
217 self.check_suite(
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
218 "from sys.path import (dirname, basename as my_basename)")
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
219 self.check_suite(
f7474d31ba3f SF patch #1007189, multi-line imports, for instance:
Anthony Baxter <anthonybaxter@gmail.com>
parents: 32888
diff changeset
220 "from sys.path import (dirname, basename as my_basename,)")
49633
bd0e9a9cd283 Merged revisions 67028,67040,67044,67046,67052,67065,67070,67077,67082 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49624
diff changeset
221 self.check_suite("from .bogus import x")
15752
c0822a05e923 Add more regression tests, including for the import statement variations.
Fred Drake <fdrake@acm.org>
parents: 15507
diff changeset
222
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
223 def test_basic_import_statement(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
224 self.check_suite("import sys")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
225 self.check_suite("import sys as system")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
226 self.check_suite("import sys, math")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
227 self.check_suite("import sys as system, math")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
228 self.check_suite("import sys, math as my_math")
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
229
62789
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
230 def test_relative_imports(self):
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
231 self.check_suite("from . import name")
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
232 self.check_suite("from .. import name")
62791
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
233 # check all the way up to '....', since '...' is tokenized
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
234 # differently from '.' (it's an ellipsis token).
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
235 self.check_suite("from ... import name")
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
236 self.check_suite("from .... import name")
62789
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
237 self.check_suite("from .pkg import name")
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
238 self.check_suite("from ..pkg import name")
62791
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
239 self.check_suite("from ...pkg import name")
3aa22428582a Merged revisions 82555 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62789
diff changeset
240 self.check_suite("from ....pkg import name")
62789
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
241
27777
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
242 def test_pep263(self):
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
243 self.check_suite("# -*- coding: iso-8859-1 -*-\n"
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
244 "pass\n")
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
245
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
246 def test_assert(self):
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
247 self.check_suite("assert alo < ahi and blo < bhi\n")
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
248
49908
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49633
diff changeset
249 def test_with(self):
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49633
diff changeset
250 self.check_suite("with open('x'): pass\n")
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49633
diff changeset
251 self.check_suite("with open('x') as f: pass\n")
54338
287ce30d08b5 Merged revisions 72924 via svnmerge from
Georg Brandl <georg@python.org>
parents: 51244
diff changeset
252 self.check_suite("with open('x') as f, open('y') as g: pass\n")
49908
ed8adfef26c6 Merged revisions 67348,67355,67359,67362,67364-67365,67367-67368,67398,67423-67424,67432,67440-67441,67444-67445,67454-67455,67457-67458 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 49633
diff changeset
253
50079
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
254 def test_try_stmt(self):
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
255 self.check_suite("try: pass\nexcept: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
256 self.check_suite("try: pass\nfinally: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
257 self.check_suite("try: pass\nexcept A: pass\nfinally: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
258 self.check_suite("try: pass\nexcept A: pass\nexcept: pass\n"
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
259 "finally: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
260 self.check_suite("try: pass\nexcept: pass\nelse: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
261 self.check_suite("try: pass\nexcept: pass\nelse: pass\n"
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
262 "finally: pass\n")
a86cdf49b821 Manual merge of r67639 from py3k branch:
Georg Brandl <georg@python.org>
parents: 49908
diff changeset
263
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
264 def test_position(self):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
265 # An absolutely minimal test of position information. Better
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
266 # tests would be a big project.
57678
a769a9b34fbc Merged revisions 76052,76522,76591,76689,76697,76733 via svnmerge from
Benjamin Peterson <benjamin@python.org>
parents: 57206
diff changeset
267 code = "def f(x):\n return x + 1"
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
268 st1 = parser.suite(code)
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
269 st2 = st1.totuple(line_info=1, col_info=1)
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
270
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
271 def walk(tree):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
272 node_type = tree[0]
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
273 next = tree[1]
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
274 if isinstance(next, tuple):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
275 for elt in tree[1:]:
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
276 for x in walk(elt):
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
277 yield x
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
278 else:
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
279 yield tree
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
280
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
281 terminals = list(walk(st2))
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
282 self.assertEqual([
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
283 (1, 'def', 1, 0),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
284 (1, 'f', 1, 4),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
285 (7, '(', 1, 5),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
286 (1, 'x', 1, 6),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
287 (8, ')', 1, 7),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
288 (11, ':', 1, 8),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
289 (4, '', 1, 9),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
290 (5, '', 2, -1),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
291 (1, 'return', 2, 4),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
292 (1, 'x', 2, 11),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
293 (14, '+', 2, 13),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
294 (2, '1', 2, 15),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
295 (4, '', 2, 16),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
296 (6, '', 2, -1),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
297 (4, '', 2, -1),
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
298 (0, '', 2, -1)],
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
299 terminals)
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
300
56237
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
301 def test_extended_unpacking(self):
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
302 self.check_suite("*a = y")
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
303 self.check_suite("x, *b, = m")
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
304 self.check_suite("[*a, *b] = y")
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
305 self.check_suite("for [*x, b] in x: pass")
7ee140b7ef93 fix an ambiguity in the grammar from the implementation of extended unpacking
Benjamin Peterson <benjamin@python.org>
parents: 55003
diff changeset
306
76818
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
307 def test_raise_statement(self):
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
308 self.check_suite("raise\n")
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
309 self.check_suite("raise e\n")
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
310 self.check_suite("try:\n"
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
311 " suite\n"
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
312 "except Exception as e:\n"
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
313 " raise ValueError from e\n")
fc17f70292f6 Issue #14701: Add missing support for 'raise ... from' in parser module.
Mark Dickinson <mdickinson@enthought.com>
parents: 76647
diff changeset
314
76822
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
315 def test_set_displays(self):
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
316 self.check_expr('{2}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
317 self.check_expr('{2,}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
318 self.check_expr('{2, 3}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
319 self.check_expr('{2, 3,}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
320
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
321 def test_dict_displays(self):
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
322 self.check_expr('{}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
323 self.check_expr('{a:b}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
324 self.check_expr('{a:b,}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
325 self.check_expr('{a:b, c:d}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
326 self.check_expr('{a:b, c:d,}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
327
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
328 def test_set_comprehensions(self):
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
329 self.check_expr('{x for x in seq}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
330 self.check_expr('{f(x) for x in seq}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
331 self.check_expr('{f(x) for x in seq if condition(x)}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
332
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
333 def test_dict_comprehensions(self):
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
334 self.check_expr('{x:x for x in seq}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
335 self.check_expr('{x**2:x[3] for x in seq if condition(x)}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
336 self.check_expr('{x:x for x in seq1 for y in seq2 if condition(x, y)}')
129289144dfb Issue #14697: Fix missing parser module support for set displays and set comprehensions.
Mark Dickinson <mdickinson@enthought.com>
parents: 76818
diff changeset
337
40450
cc992d75d5b3 Four months of trunk changes (including a few releases...)
Thomas Wouters <thomas@python.org>
parents: 39782
diff changeset
338
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
339 #
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
340 # Second, we take *invalid* trees and make sure we get ParserError
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
341 # rejections for them.
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
342 #
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
343
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
344 class IllegalSyntaxTestCase(unittest.TestCase):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
345
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
346 def check_bad_tree(self, tree, label):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
347 try:
18670
384b9113a2e0 Use the "st" versions of the "ast" calls in the parser module -- there is
Fred Drake <fdrake@acm.org>
parents: 18647
diff changeset
348 parser.sequence2st(tree)
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
349 except parser.ParserError:
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
350 pass
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
351 else:
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
352 self.fail("did not detect invalid tree for %r" % label)
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
353
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
354 def test_junk(self):
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
355 # not even remotely valid:
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
356 self.check_bad_tree((1, 2, 3), "<junk>")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
357
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
358 def test_illegal_yield_1(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
359 # Illegal yield statement: def f(): return 1; yield 1
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
360 tree = \
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
361 (257,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
362 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
363 (285,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
364 (259,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
365 (1, 'def'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
366 (1, 'f'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
367 (260, (7, '('), (8, ')')),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
368 (11, ':'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
369 (291,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
370 (4, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
371 (5, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
372 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
373 (265,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
374 (266,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
375 (272,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
376 (275,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
377 (1, 'return'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
378 (313,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
379 (292,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
380 (293,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
381 (294,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
382 (295,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
383 (297,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
384 (298,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
385 (299,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
386 (300,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
387 (301,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
388 (302, (303, (304, (305, (2, '1')))))))))))))))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
389 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
390 (265,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
391 (266,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
392 (272,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
393 (276,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
394 (1, 'yield'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
395 (313,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
396 (292,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
397 (293,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
398 (294,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
399 (295,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
400 (297,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
401 (298,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
402 (299,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
403 (300,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
404 (301,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
405 (302,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
406 (303, (304, (305, (2, '1')))))))))))))))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
407 (4, ''))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
408 (6, ''))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
409 (4, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
410 (0, ''))))
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
411 self.check_bad_tree(tree, "def f():\n return 1\n yield 1")
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
412
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
413 def test_illegal_yield_2(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
414 # Illegal return in generator: def f(): return 1; yield 1
18647
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
415 tree = \
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
416 (257,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
417 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
418 (265,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
419 (266,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
420 (278,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
421 (1, 'from'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
422 (281, (1, '__future__')),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
423 (1, 'import'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
424 (279, (1, 'generators')))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
425 (4, ''))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
426 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
427 (285,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
428 (259,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
429 (1, 'def'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
430 (1, 'f'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
431 (260, (7, '('), (8, ')')),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
432 (11, ':'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
433 (291,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
434 (4, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
435 (5, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
436 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
437 (265,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
438 (266,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
439 (272,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
440 (275,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
441 (1, 'return'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
442 (313,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
443 (292,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
444 (293,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
445 (294,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
446 (295,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
447 (297,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
448 (298,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
449 (299,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
450 (300,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
451 (301,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
452 (302, (303, (304, (305, (2, '1')))))))))))))))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
453 (264,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
454 (265,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
455 (266,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
456 (272,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
457 (276,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
458 (1, 'yield'),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
459 (313,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
460 (292,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
461 (293,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
462 (294,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
463 (295,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
464 (297,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
465 (298,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
466 (299,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
467 (300,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
468 (301,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
469 (302,
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
470 (303, (304, (305, (2, '1')))))))))))))))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
471 (4, ''))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
472 (6, ''))))),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
473 (4, ''),
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
474 (0, ''))))
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
475 self.check_bad_tree(tree, "def f():\n return 1\n yield 1")
ad82cafe45ac Added tests for the new yield support in the parser module.
Fred Drake <fdrake@acm.org>
parents: 18027
diff changeset
476
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
477 def test_a_comma_comma_c(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
478 # Illegal input: a,,c
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
479 tree = \
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
480 (258,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
481 (311,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
482 (290,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
483 (291,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
484 (292,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
485 (293,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
486 (295,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
487 (296,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
488 (297,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
489 (298, (299, (300, (301, (302, (303, (1, 'a')))))))))))))),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
490 (12, ','),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
491 (12, ','),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
492 (290,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
493 (291,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
494 (292,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
495 (293,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
496 (295,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
497 (296,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
498 (297,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
499 (298, (299, (300, (301, (302, (303, (1, 'c'))))))))))))))),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
500 (4, ''),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
501 (0, ''))
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
502 self.check_bad_tree(tree, "a,,c")
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
503
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
504 def test_illegal_operator(self):
24957
dc66eb4cd17a Standardize behavior: no docstrings in test functions.
Guido van Rossum <guido@python.org>
parents: 24364
diff changeset
505 # Illegal input: a $= b
18027
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
506 tree = \
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
507 (257,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
508 (264,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
509 (265,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
510 (266,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
511 (267,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
512 (312,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
513 (291,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
514 (292,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
515 (293,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
516 (294,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
517 (296,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
518 (297,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
519 (298,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
520 (299,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
521 (300, (301, (302, (303, (304, (1, 'a'))))))))))))))),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
522 (268, (37, '$=')),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
523 (312,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
524 (291,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
525 (292,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
526 (293,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
527 (294,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
528 (296,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
529 (297,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
530 (298,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
531 (299,
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
532 (300, (301, (302, (303, (304, (1, 'b'))))))))))))))))),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
533 (4, ''))),
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
534 (0, ''))
5391b9d022ac Convert the parser module test to use PyUnit.
Fred Drake <fdrake@acm.org>
parents: 15966
diff changeset
535 self.check_bad_tree(tree, "a $= b")
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
536
27777
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
537 def test_malformed_global(self):
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
538 #doesn't have global keyword in ast
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
539 tree = (257,
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
540 (264,
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
541 (265,
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
542 (266,
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
543 (282, (1, 'foo'))), (4, ''))),
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
544 (4, ''),
27963
226463445697 Whitespace normalization.
Tim Peters <tim.peters@gmail.com>
parents: 27777
diff changeset
545 (0, ''))
27777
5f6931b8352e Add tests and news entry about parser errors from bug #678518.
Neal Norwitz <nnorwitz@gmail.com>
parents: 27517
diff changeset
546 self.check_bad_tree(tree, "malformed global ast")
14111
87b8f0ea50e8 Add a minimal test suite for the parser module.
Fred Drake <fdrake@acm.org>
parents:
diff changeset
547
62789
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
548 def test_missing_import_source(self):
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
549 # from import fred
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
550 tree = \
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
551 (257,
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
552 (268,
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
553 (269,
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
554 (270,
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
555 (282,
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
556 (284, (1, 'from'), (1, 'import'),
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
557 (287, (285, (1, 'fred')))))),
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
558 (4, ''))),
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
559 (4, ''), (0, ''))
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
560 self.check_bad_tree(tree, "from import fred")
692b7989cd92 Merged revisions 82552-82553 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 62774
diff changeset
561
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
562
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
563 class CompileTestCase(unittest.TestCase):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
564
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
565 # These tests are very minimal. :-(
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
566
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
567 def test_compile_expr(self):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
568 st = parser.expr('2 + 3')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
569 code = parser.compilest(st)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
570 self.assertEqual(eval(code), 5)
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
571
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
572 def test_compile_suite(self):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
573 st = parser.suite('x = 2; y = x + 3')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
574 code = parser.compilest(st)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
575 globs = {}
39782
c94f37054f19 Patch #1550800: make exec a function.
Georg Brandl <georg@python.org>
parents: 37879
diff changeset
576 exec(code, globs)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
577 self.assertEqual(globs['y'], 5)
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
578
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
579 def test_compile_error(self):
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
580 st = parser.suite('1 = 3 + 4')
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
581 self.assertRaises(SyntaxError, parser.compilest, st)
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
582
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40788
diff changeset
583 def test_compile_badunicode(self):
42312
007ed6cdd1f7 Make test_parser pass after merge.
Guido van Rossum <guido@python.org>
parents: 42309
diff changeset
584 st = parser.suite('a = "\\U12345678"')
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40788
diff changeset
585 self.assertRaises(SyntaxError, parser.compilest, st)
42312
007ed6cdd1f7 Make test_parser pass after merge.
Guido van Rossum <guido@python.org>
parents: 42309
diff changeset
586 st = parser.suite('a = "\\u1"')
42309
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40788
diff changeset
587 self.assertRaises(SyntaxError, parser.compilest, st)
bd6acfdb47d2 Merged revisions 56301-56442 via svnmerge from
Guido van Rossum <guido@python.org>
parents: 40788
diff changeset
588
62373
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
589 def test_issue_9011(self):
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
590 # Issue 9011: compilation of an unary minus expression changed
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
591 # the meaning of the ST, so that a second compilation produced
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
592 # incorrect results.
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
593 st = parser.expr('-3')
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
594 code1 = parser.compilest(st)
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
595 self.assertEqual(eval(code1), -3)
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
596 code2 = parser.compilest(st)
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
597 self.assertEqual(eval(code2), -3)
cb4997b6aa8b Issue #9011: Remove buggy and unnecessary ST->AST compilation code
Mark Dickinson <dickinsm@gmail.com>
parents: 59615
diff changeset
598
45446
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
599 class ParserStackLimitTestCase(unittest.TestCase):
62374
2cc09f06950b Merged revisions 82043 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 55593
diff changeset
600 """try to push the parser to/over its limits.
45446
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
601 see http://bugs.python.org/issue1881 for a discussion
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
602 """
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
603 def _nested_expression(self, level):
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
604 return "["*level+"]"*level
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
605
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
606 def test_deeply_nested_list(self):
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
607 # XXX used to be 99 levels in 2.x
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
608 e = self._nested_expression(93)
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
609 st = parser.expr(e)
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
610 st.compile()
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
611
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
612 def test_trigger_memory_error(self):
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
613 e = self._nested_expression(100)
45852
30c4e1ca8421 Merged revisions 61431,61433-61436,61439,61444,61449-61450,61453,61458,61465,61468,61471-61474,61480,61483-61484,61488,61495-61496,61498,61503-61504,61507,61509-61510,61515-61518 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45446
diff changeset
614 print("Expecting 's_push: parser stack overflow' in next line",
30c4e1ca8421 Merged revisions 61431,61433-61436,61439,61444,61449-61450,61453,61458,61465,61468,61471-61474,61480,61483-61484,61488,61495-61496,61498,61503-61504,61507,61509-61510,61515-61518 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 45446
diff changeset
615 file=sys.stderr)
54967
8f23bd1092fc Merged revisions 73072 via svnmerge from
Antoine Pitrou <solipsis@pitrou.net>
parents: 54338
diff changeset
616 sys.stderr.flush()
45446
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
617 self.assertRaises(MemoryError, parser.expr, e)
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
618
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
619 class STObjectTestCase(unittest.TestCase):
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
620 """Test operations on ST objects themselves"""
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
621
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
622 def test_comparisons(self):
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
623 # ST objects should support order and equality comparisons
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
624 st1 = parser.expr('2 + 3')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
625 st2 = parser.suite('x = 2; y = x + 3')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
626 st3 = parser.expr('list(x**3 for x in range(20))')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
627 st1_copy = parser.expr('2 + 3')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
628 st2_copy = parser.suite('x = 2; y = x + 3')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
629 st3_copy = parser.expr('list(x**3 for x in range(20))')
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
630
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
631 # exercise fast path for object identity
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
632 self.assertEqual(st1 == st1, True)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
633 self.assertEqual(st2 == st2, True)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
634 self.assertEqual(st3 == st3, True)
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
635 # slow path equality
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
636 self.assertEqual(st1, st1_copy)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
637 self.assertEqual(st2, st2_copy)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
638 self.assertEqual(st3, st3_copy)
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
639 self.assertEqual(st1 == st2, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
640 self.assertEqual(st1 == st3, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
641 self.assertEqual(st2 == st3, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
642 self.assertEqual(st1 != st1, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
643 self.assertEqual(st2 != st2, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
644 self.assertEqual(st3 != st3, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
645 self.assertEqual(st1 != st1_copy, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
646 self.assertEqual(st2 != st2_copy, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
647 self.assertEqual(st3 != st3_copy, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
648 self.assertEqual(st2 != st1, True)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
649 self.assertEqual(st1 != st3, True)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
650 self.assertEqual(st3 != st2, True)
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
651 # we don't particularly care what the ordering is; just that
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
652 # it's usable and self-consistent
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
653 self.assertEqual(st1 < st2, not (st2 <= st1))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
654 self.assertEqual(st1 < st3, not (st3 <= st1))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
655 self.assertEqual(st2 < st3, not (st3 <= st2))
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
656 self.assertEqual(st1 < st2, st2 > st1)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
657 self.assertEqual(st1 < st3, st3 > st1)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
658 self.assertEqual(st2 < st3, st3 > st2)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
659 self.assertEqual(st1 <= st2, st2 >= st1)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
660 self.assertEqual(st3 <= st1, st1 >= st3)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
661 self.assertEqual(st2 <= st3, st3 >= st2)
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
662 # transitivity
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
663 bottom = min(st1, st2, st3)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
664 top = max(st1, st2, st3)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
665 mid = sorted([st1, st2, st3])[1]
55593
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
666 self.assertTrue(bottom < mid)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
667 self.assertTrue(bottom < top)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
668 self.assertTrue(mid < top)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
669 self.assertTrue(bottom <= mid)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
670 self.assertTrue(bottom <= top)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
671 self.assertTrue(mid <= top)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
672 self.assertTrue(bottom <= bottom)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
673 self.assertTrue(mid <= mid)
0bb232078b8c Merged revisions 73715 via svnmerge from
Georg Brandl <georg@python.org>
parents: 54338
diff changeset
674 self.assertTrue(top <= top)
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
675 # interaction with other types
66340
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
676 self.assertEqual(st1 == 1588.602459, False)
2beb25369289 Merged revisions 86596 via svnmerge from
Ezio Melotti <ezio.melotti@gmail.com>
parents: 62791
diff changeset
677 self.assertEqual('spanish armada' != st2, True)
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
678 self.assertRaises(TypeError, operator.ge, st3, None)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
679 self.assertRaises(TypeError, operator.le, False, st1)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
680 self.assertRaises(TypeError, operator.lt, st1, 1815)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
681 self.assertRaises(TypeError, operator.gt, b'waterloo', st2)
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
682
78391
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
683 check_sizeof = support.check_sizeof
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
684
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
685 @support.cpython_only
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
686 def test_sizeof(self):
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
687 def XXXROUNDUP(n):
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
688 if n <= 1:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
689 return n
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
690 if n <= 128:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
691 return (n + 3) & ~3
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
692 return 1 << (n - 1).bit_length()
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
693
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
694 basesize = support.calcobjsize('Pii')
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
695 nodesize = struct.calcsize('hP3iP0h')
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
696 def sizeofchildren(node):
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
697 if node is None:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
698 return 0
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
699 res = 0
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
700 hasstr = len(node) > 1 and isinstance(node[-1], str)
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
701 if hasstr:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
702 res += len(node[-1]) + 1
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
703 children = node[1:-1] if hasstr else node[1:]
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
704 if children:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
705 res += XXXROUNDUP(len(children)) * nodesize
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
706 for child in children:
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
707 res += sizeofchildren(child)
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
708 return res
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
709
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
710 def check_st_sizeof(st):
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
711 self.check_sizeof(st, basesize + nodesize +
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
712 sizeofchildren(st.totuple()))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
713
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
714 check_st_sizeof(parser.expr('2 + 3'))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
715 check_st_sizeof(parser.expr('2 + 3 + 4'))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
716 check_st_sizeof(parser.suite('x = 2 + 3'))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
717 check_st_sizeof(parser.suite(''))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
718 check_st_sizeof(parser.suite('# -*- coding: utf-8 -*-'))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
719 check_st_sizeof(parser.expr('[' + '2,' * 1000 + ']'))
91884d04de06 Closes #15512: Correct __sizeof__ support for parser
Jesus Cea <jcea@jcea.es>
parents: 76824
diff changeset
720
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
721
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
722 # XXX tests for pickling and unpickling of ST objects should go here
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
723
70638
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
724 class OtherParserCase(unittest.TestCase):
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
725
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
726 def test_two_args_to_expr(self):
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
727 # See bug #12264
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
728 with self.assertRaises(TypeError):
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
729 parser.expr("a", "b")
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
730
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18670
diff changeset
731 def test_main():
47201
9c930a32cebb #2621 rename test.test_support to test.support
Benjamin Peterson <benjamin@python.org>
parents: 45852
diff changeset
732 support.run_unittest(
28917
1741af48fd9f Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents: 27963
diff changeset
733 RoundtripLegalSyntaxTestCase,
35742
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
734 IllegalSyntaxTestCase,
1c4d192f1568 Merge ast-branch to head
Jeremy Hylton <jeremy@alum.mit.edu>
parents: 35298
diff changeset
735 CompileTestCase,
45446
5e0772ed20d1 Merged revisions 60481,60485,60489-60492,60494-60496,60498-60499,60501-60503,60505-60506,60508-60509,60523-60524,60532,60543,60545,60547-60548,60552,60554,60556-60559,60561-60562,60569,60571-60572,60574,60576-60583,60585-60586,60589,60591,60594-60595,60597-60598,60600-60601,60606-60612,60615,60617,60619-60621,60623-60625,60627-60629,60631,60633,60635,60647,60650,60652,60654,60656,60658-60659,60664-60666,60668-60670,60672,60676,60678,60680-60683,60685-60686,60688,60690,60692-60694,60697-60700,60705-60706,60708,60711,60714,60720,60724-60730,60732,60736,60742,60744,60746,60748,60750-60751,60753,60756-60757,60759-60761,60763-60764,60766,60769-60770,60774-60784,60787-60789,60793,60796,60799-60809,60812-60813,60815-60821,60823-60826,60828-60829,60831-60834,60836,60838-60839,60846-60849,60852-60854,60856-60859,60861-60870,60874-60875,60880-60881,60886,60888-60890,60892,60894-60898,60900,60902-60906,60908,60911-60917,60919-60920,60922,60926,60929-60931,60933-60935,60937,60939-60941,60943-60954,60959-60961,60963-60969,60971-60976 via svnmerge from
Christian Heimes <christian@cheimes.de>
parents: 43862
diff changeset
736 ParserStackLimitTestCase,
51244
e9675d72e3e3 Merged revisions 69181 via svnmerge from
Mark Dickinson <dickinsm@gmail.com>
parents: 50079
diff changeset
737 STObjectTestCase,
70638
3ffd8dea77bf only clear the parser error if it's set (closes #12264)
Benjamin Peterson <benjamin@python.org>
parents: 68257
diff changeset
738 OtherParserCase,
28917
1741af48fd9f Combine the functionality of test_support.run_unittest()
Walter Dörwald <walter@livinglogic.de>
parents: 27963
diff changeset
739 )
20013
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18670
diff changeset
740
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18670
diff changeset
741
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18670
diff changeset
742 if __name__ == "__main__":
e3184e46303b Change the PyUnit-based tests to use the test_main() approach. This
Fred Drake <fdrake@acm.org>
parents: 18670
diff changeset
743 test_main()