diff options
Diffstat (limited to 'Lib/test/test_syntax.py')
-rw-r--r-- | Lib/test/test_syntax.py | 24 |
1 files changed, 23 insertions, 1 deletions
diff --git a/Lib/test/test_syntax.py b/Lib/test/test_syntax.py index a9d3628..057441c 100644 --- a/Lib/test/test_syntax.py +++ b/Lib/test/test_syntax.py @@ -141,6 +141,9 @@ From ast_for_call(): >>> f(x for x in L, 1) Traceback (most recent call last): SyntaxError: Generator expression must be parenthesized if not sole argument +>>> f(x for x in L, y for y in L) +Traceback (most recent call last): +SyntaxError: Generator expression must be parenthesized if not sole argument >>> f((x for x in L), 1) [0, 1, 2, 3, 4, 5, 6, 7, 8, 9] @@ -413,6 +416,14 @@ TODO(jhylton): Figure out how to test SyntaxWarning with doctest. ## ... ## SyntaxWarning: name 'x' is assigned to before nonlocal declaration + From https://bugs.python.org/issue25973 + >>> class A: + ... def f(self): + ... nonlocal __x + Traceback (most recent call last): + ... + SyntaxError: no binding for nonlocal '_A__x' found + This tests assignment-context; there was a bug in Python 2.5 where compiling a complex 'if' (one with 'elif') would fail to notice an invalid suite, @@ -582,7 +593,18 @@ class SyntaxTestCase(unittest.TestCase): subclass=IndentationError) def test_kwargs_last(self): - self._check_error("int(base=10, '2')", "non-keyword arg") + self._check_error("int(base=10, '2')", + "positional argument follows keyword argument") + + def test_kwargs_last2(self): + self._check_error("int(**{base: 10}, '2')", + "positional argument follows " + "keyword argument unpacking") + + def test_kwargs_last3(self): + self._check_error("int(**{base: 10}, *['2'])", + "iterable argument unpacking follows " + "keyword argument unpacking") def test_main(): support.run_unittest(SyntaxTestCase) |