fix syntax tests after formatting change

This commit is contained in:
Benjamin Peterson 2009-04-07 15:15:04 +00:00
parent ee42545884
commit 52b9620c19
2 changed files with 88 additions and 44 deletions

View File

@ -137,12 +137,14 @@ Verify that syntax error's are raised for genexps used as lvalues
>>> (y for y in (1,2)) = 10 >>> (y for y in (1,2)) = 10
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to generator expression (<doctest test.test_genexps.__test__.doctests[40]>, line 1) File "<doctest test.test_genexps.__test__.doctests[40]>", line 1
SyntaxError: can't assign to generator expression
>>> (y for y in (1,2)) += 10 >>> (y for y in (1,2)) += 10
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: augmented assignment to generator expression not possible (<doctest test.test_genexps.__test__.doctests[41]>, line 1) File "<doctest test.test_genexps.__test__.doctests[41]>", line 1
SyntaxError: augmented assignment to generator expression not possible
########### Tests borrowed from or inspired by test_generators.py ############ ########### Tests borrowed from or inspired by test_generators.py ############

View File

@ -29,11 +29,13 @@ Errors from set_context():
>>> obj.None = 1 >>> obj.None = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[1]>, line 1) File "<doctest test.test_syntax[1]>", line 1
SyntaxError: cannot assign to None
>>> None = 1 >>> None = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[2]>, line 1) File "<doctest test.test_syntax[2]>", line 1
SyntaxError: cannot assign to None
It's a syntax error to assign to the empty tuple. Why isn't it an It's a syntax error to assign to the empty tuple. Why isn't it an
error to assign to the empty list? It will always raise some error at error to assign to the empty list? It will always raise some error at
@ -41,35 +43,43 @@ runtime.
>>> () = 1 >>> () = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to () (<doctest test.test_syntax[3]>, line 1) File "<doctest test.test_syntax[3]>", line 1
SyntaxError: can't assign to ()
>>> f() = 1 >>> f() = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to function call (<doctest test.test_syntax[4]>, line 1) File "<doctest test.test_syntax[4]>", line 1
SyntaxError: can't assign to function call
>>> del f() >>> del f()
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't delete function call (<doctest test.test_syntax[5]>, line 1) File "<doctest test.test_syntax[5]>", line 1
SyntaxError: can't delete function call
>>> a + 1 = 2 >>> a + 1 = 2
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to operator (<doctest test.test_syntax[6]>, line 1) File "<doctest test.test_syntax[6]>", line 1
SyntaxError: can't assign to operator
>>> (x for x in x) = 1 >>> (x for x in x) = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to generator expression (<doctest test.test_syntax[7]>, line 1) File "<doctest test.test_syntax[7]>", line 1
SyntaxError: can't assign to generator expression
>>> 1 = 1 >>> 1 = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to literal (<doctest test.test_syntax[8]>, line 1) File "<doctest test.test_syntax[8]>", line 1
SyntaxError: can't assign to literal
>>> "abc" = 1 >>> "abc" = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to literal (<doctest test.test_syntax[9]>, line 1) File "<doctest test.test_syntax[8]>", line 1
SyntaxError: can't assign to literal
>>> `1` = 1 >>> `1` = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to repr (<doctest test.test_syntax[10]>, line 1) File "<doctest test.test_syntax[10]>", line 1
SyntaxError: can't assign to repr
If the left-hand side of an assignment is a list or tuple, an illegal If the left-hand side of an assignment is a list or tuple, an illegal
expression inside that contain should still cause a syntax error. expression inside that contain should still cause a syntax error.
@ -78,22 +88,26 @@ them.
>>> (a, "b", c) = (1, 2, 3) >>> (a, "b", c) = (1, 2, 3)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to literal (<doctest test.test_syntax[11]>, line 1) File "<doctest test.test_syntax[11]>", line 1
SyntaxError: can't assign to literal
>>> [a, b, c + 1] = [1, 2, 3] >>> [a, b, c + 1] = [1, 2, 3]
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to operator (<doctest test.test_syntax[12]>, line 1) File "<doctest test.test_syntax[12]>", line 1
SyntaxError: can't assign to operator
>>> a if 1 else b = 1 >>> a if 1 else b = 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: can't assign to conditional expression (<doctest test.test_syntax[13]>, line 1) File "<doctest test.test_syntax[13]>", line 1
SyntaxError: can't assign to conditional expression
From compiler_complex_args(): From compiler_complex_args():
>>> def f(None=1): >>> def f(None=1):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[14]>, line 1) File "<doctest test.test_syntax[14]>", line 1
SyntaxError: cannot assign to None
From ast_for_arguments(): From ast_for_arguments():
@ -101,22 +115,26 @@ From ast_for_arguments():
>>> def f(x, y=1, z): >>> def f(x, y=1, z):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: non-default argument follows default argument (<doctest test.test_syntax[15]>, line 1) File "<doctest test.test_syntax[15]>", line 1
SyntaxError: non-default argument follows default argument
>>> def f(x, None): >>> def f(x, None):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[16]>, line 1) File "<doctest test.test_syntax[16]>", line 1
SyntaxError: cannot assign to None
>>> def f(*None): >>> def f(*None):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[17]>, line 1) File "<doctest test.test_syntax[17]>", line 1
SyntaxError: cannot assign to None
>>> def f(**None): >>> def f(**None):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[18]>, line 1) File "<doctest test.test_syntax[18]>", line 1
SyntaxError: cannot assign to None
From ast_for_funcdef(): From ast_for_funcdef():
@ -124,7 +142,8 @@ From ast_for_funcdef():
>>> def None(x): >>> def None(x):
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[19]>, line 1) File "<doctest test.test_syntax[19]>", line 1
SyntaxError: cannot assign to None
From ast_for_call(): From ast_for_call():
@ -136,7 +155,8 @@ From ast_for_call():
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
>>> f(x for x in L, 1) >>> f(x for x in L, 1)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: Generator expression must be parenthesized if not sole argument (<doctest test.test_syntax[23]>, line 1) File "<doctest test.test_syntax[23]>", line 1
SyntaxError: Generator expression must be parenthesized if not sole argument
>>> f((x for x in L), 1) >>> f((x for x in L), 1)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] [0, 1, 2, 3, 4, 5, 6, 7, 8, 9]
@ -168,7 +188,8 @@ SyntaxError: Generator expression must be parenthesized if not sole argument (<d
... i244, i245, i246, i247, i248, i249, i250, i251, i252, ... i244, i245, i246, i247, i248, i249, i250, i251, i252,
... i253, i254, i255) ... i253, i254, i255)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: more than 255 arguments (<doctest test.test_syntax[25]>, line 1) File "<doctest test.test_syntax[25]>", line 1
SyntaxError: more than 255 arguments
The actual error cases counts positional arguments, keyword arguments, The actual error cases counts positional arguments, keyword arguments,
and generator expression arguments separately. This test combines the and generator expression arguments separately. This test combines the
@ -202,37 +223,45 @@ three.
... (x for x in i244), i245, i246, i247, i248, i249, i250, i251, ... (x for x in i244), i245, i246, i247, i248, i249, i250, i251,
... i252=1, i253=1, i254=1, i255=1) ... i252=1, i253=1, i254=1, i255=1)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: more than 255 arguments (<doctest test.test_syntax[26]>, line 1) File "<doctest test.test_syntax[26]>", line 1
SyntaxError: more than 255 arguments
>>> f(lambda x: x[0] = 3) >>> f(lambda x: x[0] = 3)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: lambda cannot contain assignment (<doctest test.test_syntax[27]>, line 1) File "<doctest test.test_syntax[27]>", line 1
SyntaxError: lambda cannot contain assignment
The grammar accepts any test (basically, any expression) in the The grammar accepts any test (basically, any expression) in the
keyword slot of a call site. Test a few different options. keyword slot of a call site. Test a few different options.
>>> f(x()=2) >>> f(x()=2)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: keyword can't be an expression (<doctest test.test_syntax[28]>, line 1) File "<doctest test.test_syntax[28]>", line 1
SyntaxError: keyword can't be an expression
>>> f(a or b=1) >>> f(a or b=1)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: keyword can't be an expression (<doctest test.test_syntax[29]>, line 1) File "<doctest test.test_syntax[29]>", line 1
SyntaxError: keyword can't be an expression
>>> f(x.y=1) >>> f(x.y=1)
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: keyword can't be an expression (<doctest test.test_syntax[30]>, line 1) File "<doctest test.test_syntax[30]>", line 1
SyntaxError: keyword can't be an expression
From ast_for_expr_stmt(): From ast_for_expr_stmt():
>>> (x for x in x) += 1 >>> (x for x in x) += 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: augmented assignment to generator expression not possible (<doctest test.test_syntax[31]>, line 1) File "<doctest test.test_syntax[31]>", line 1
SyntaxError: augmented assignment to generator expression not possible
>>> None += 1 >>> None += 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: cannot assign to None (<doctest test.test_syntax[32]>, line 1) File "<doctest test.test_syntax[32]>", line 1
SyntaxError: cannot assign to None
>>> f() += 1 >>> f() += 1
Traceback (most recent call last): Traceback (most recent call last):
SyntaxError: illegal expression for augmented assignment (<doctest test.test_syntax[33]>, line 1) File "<doctest test.test_syntax[33]>", line 1
SyntaxError: illegal expression for augmented assignment
Test continue in finally in weird combinations. Test continue in finally in weird combinations.
@ -259,7 +288,8 @@ Start simple, a continue in a finally should not be allowed.
... continue ... continue
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[36]>, line 6) File "<doctest test.test_syntax[36]>", line 6
SyntaxError: 'continue' not supported inside 'finally' clause
This is essentially a continue in a finally which should not be allowed. This is essentially a continue in a finally which should not be allowed.
@ -274,7 +304,8 @@ This is essentially a continue in a finally which should not be allowed.
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[37]>, line 7) File "<doctest test.test_syntax[37]>", line 6
SyntaxError: 'continue' not supported inside 'finally' clause
>>> def foo(): >>> def foo():
... try: ... try:
@ -283,7 +314,8 @@ This is essentially a continue in a finally which should not be allowed.
... continue ... continue
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[38]>, line 5) File "<doctest test.test_syntax[38]>", line 5
SyntaxError: 'continue' not supported inside 'finally' clause
>>> def foo(): >>> def foo():
... for a in (): ... for a in ():
@ -293,7 +325,8 @@ This is essentially a continue in a finally which should not be allowed.
... continue ... continue
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[39]>, line 6) File "<doctest test.test_syntax[39]>", line 6
SyntaxError: 'continue' not supported inside 'finally' clause
>>> def foo(): >>> def foo():
... for a in (): ... for a in ():
@ -306,7 +339,8 @@ This is essentially a continue in a finally which should not be allowed.
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[40]>, line 7) File "<doctest test.test_syntax[40]>", line 7
SyntaxError: 'continue' not supported inside 'finally' clause
>>> def foo(): >>> def foo():
... for a in (): ... for a in ():
@ -318,7 +352,8 @@ This is essentially a continue in a finally which should not be allowed.
... continue ... continue
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'continue' not supported inside 'finally' clause (<doctest test.test_syntax[41]>, line 8) File "<doctest test.test_syntax[41]>", line 8
SyntaxError: 'continue' not supported inside 'finally' clause
There is one test for a break that is not in a loop. The compiler There is one test for a break that is not in a loop. The compiler
uses a single data structure to keep track of try-finally and loops, uses a single data structure to keep track of try-finally and loops,
@ -333,7 +368,8 @@ isn't, there should be a syntax error.
... print 3 ... print 3
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: 'break' outside loop (<doctest test.test_syntax[42]>, line 3) File "<doctest test.test_syntax[42]>", line 3
SyntaxError: 'break' outside loop
This should probably raise a better error than a SystemError (or none at all). This should probably raise a better error than a SystemError (or none at all).
In 2.5 there was a missing exception and an assert was triggered in a debug In 2.5 there was a missing exception and an assert was triggered in a debug
@ -375,7 +411,8 @@ leading to spurious errors.
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to function call (<doctest test.test_syntax[44]>, line 2) File "<doctest test.test_syntax[44]>", line 2
SyntaxError: can't assign to function call
>>> if 1: >>> if 1:
... pass ... pass
@ -383,7 +420,8 @@ leading to spurious errors.
... x() = 1 ... x() = 1
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to function call (<doctest test.test_syntax[45]>, line 4) File "<doctest test.test_syntax[45]>", line 4
SyntaxError: can't assign to function call
>>> if 1: >>> if 1:
... x() = 1 ... x() = 1
@ -393,7 +431,8 @@ leading to spurious errors.
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to function call (<doctest test.test_syntax[46]>, line 2) File "<doctest test.test_syntax[46]>", line 2
SyntaxError: can't assign to function call
>>> if 1: >>> if 1:
... pass ... pass
@ -403,7 +442,8 @@ leading to spurious errors.
... pass ... pass
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to function call (<doctest test.test_syntax[47]>, line 4) File "<doctest test.test_syntax[47]>", line 4
SyntaxError: can't assign to function call
>>> if 1: >>> if 1:
... pass ... pass
@ -413,12 +453,14 @@ leading to spurious errors.
... x() = 1 ... x() = 1
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: can't assign to function call (<doctest test.test_syntax[48]>, line 6) File "<doctest test.test_syntax[48]>", line 6
SyntaxError: can't assign to function call
>>> f(a=23, a=234) >>> f(a=23, a=234)
Traceback (most recent call last): Traceback (most recent call last):
... ...
SyntaxError: keyword argument repeated (<doctest test.test_syntax[49]>, line 1) File "<doctest test.test_syntax[49]>", line 1
SyntaxError: keyword argument repeated
""" """