|
|
|
@ -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', |
|
|
|
|