diff options
| author | Serhiy Storchaka <storchaka@gmail.com> | 2019-01-12 09:46:50 +0200 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-01-12 09:46:50 +0200 |
| commit | 58159ef856846d0235e0779aeb6013d70499570d (patch) | |
| tree | 9d9ff0b5ec89a41567549475b0c8e64d9feb1655 /Lib/test/test_fstring.py | |
| parent | 44cc4822bb3799858201e61294c5863f93ec12e2 (diff) | |
| download | cpython-git-58159ef856846d0235e0779aeb6013d70499570d.tar.gz | |
bpo-35494: Improve syntax error messages for unbalanced parentheses in f-string. (GH-11161)
Diffstat (limited to 'Lib/test/test_fstring.py')
| -rw-r--r-- | Lib/test/test_fstring.py | 36 |
1 files changed, 23 insertions, 13 deletions
diff --git a/Lib/test/test_fstring.py b/Lib/test/test_fstring.py index fe3804b221..9e45770f80 100644 --- a/Lib/test/test_fstring.py +++ b/Lib/test/test_fstring.py @@ -368,9 +368,27 @@ non-important content ]) def test_mismatched_parens(self): - self.assertAllRaise(SyntaxError, 'f-string: mismatched', + self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + r"does not match opening parenthesis '\('", ["f'{((}'", ]) + self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\)' " + r"does not match opening parenthesis '\['", + ["f'{a[4)}'", + ]) + self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\]' " + r"does not match opening parenthesis '\('", + ["f'{a(4]}'", + ]) + self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + r"does not match opening parenthesis '\['", + ["f'{a[4}'", + ]) + self.assertAllRaise(SyntaxError, r"f-string: closing parenthesis '\}' " + r"does not match opening parenthesis '\('", + ["f'{a(4}'", + ]) + self.assertRaises(SyntaxError, eval, "f'{" + "("*500 + "}'") def test_double_braces(self): self.assertEqual(f'{{', '{') @@ -448,7 +466,9 @@ non-important content ["f'{1#}'", # error because the expression becomes "(1#)" "f'{3(#)}'", "f'{#}'", - "f'{)#}'", # When wrapped in parens, this becomes + ]) + self.assertAllRaise(SyntaxError, r"f-string: unmatched '\)'", + ["f'{)#}'", # When wrapped in parens, this becomes # '()#)'. Make sure that doesn't compile. ]) @@ -577,7 +597,7 @@ non-important content "f'{,}'", # this is (,), which is an error ]) - self.assertAllRaise(SyntaxError, "f-string: expecting '}'", + self.assertAllRaise(SyntaxError, r"f-string: unmatched '\)'", ["f'{3)+(4}'", ]) @@ -1003,16 +1023,6 @@ non-important content self.assertEqual('{d[a]}'.format(d=d), 'string') self.assertEqual('{d[0]}'.format(d=d), 'integer') - def test_invalid_expressions(self): - self.assertAllRaise(SyntaxError, - r"closing parenthesis '\)' does not match " - r"opening parenthesis '\[' \(<fstring>, line 1\)", - [r"f'{a[4)}'"]) - self.assertAllRaise(SyntaxError, - r"closing parenthesis '\]' does not match " - r"opening parenthesis '\(' \(<fstring>, line 1\)", - [r"f'{a(4]}'"]) - def test_errors(self): # see issue 26287 self.assertAllRaise(TypeError, 'unsupported', |
