summaryrefslogtreecommitdiff
path: root/Lib/test/test_fstring.py
diff options
context:
space:
mode:
authorSerhiy Storchaka <storchaka@gmail.com>2019-01-12 09:46:50 +0200
committerGitHub <noreply@github.com>2019-01-12 09:46:50 +0200
commit58159ef856846d0235e0779aeb6013d70499570d (patch)
tree9d9ff0b5ec89a41567549475b0c8e64d9feb1655 /Lib/test/test_fstring.py
parent44cc4822bb3799858201e61294c5863f93ec12e2 (diff)
downloadcpython-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.py36
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',