mirror of
https://github.com/python/cpython.git
synced 2025-08-03 16:39:00 +00:00
[3.9] bpo-38964: Print correct filename on a SyntaxError in an fstring (GH-20399) (GH-20404)
When a `SyntaxError` in the expression part of a fstring is found,
the filename attribute of the `SyntaxError` is always `<fstring>`.
With this commit, it gets changed to always have the name of the file
the fstring resides in.
Co-authored-by: Pablo Galindo <Pablogsal@gmail.com>.
(cherry picked from commit f7b1e46156
)
This commit is contained in:
parent
6cb0ad2039
commit
791a46ed58
3 changed files with 16 additions and 6 deletions
|
@ -8,10 +8,12 @@
|
|||
# Unicode identifiers in tests is allowed by PEP 3131.
|
||||
|
||||
import ast
|
||||
import os
|
||||
import types
|
||||
import decimal
|
||||
import unittest
|
||||
from test.support import use_old_parser
|
||||
from test.support import temp_cwd, use_old_parser
|
||||
from test.support.script_helper import assert_python_failure
|
||||
|
||||
a_global = 'global variable'
|
||||
|
||||
|
@ -1050,6 +1052,16 @@ non-important content
|
|||
r"f'{1000:j}'",
|
||||
])
|
||||
|
||||
@unittest.skipIf(use_old_parser(), "The old parser only supports <fstring> as the filename")
|
||||
def test_filename_in_syntaxerror(self):
|
||||
# see issue 38964
|
||||
with temp_cwd() as cwd:
|
||||
file_path = os.path.join(cwd, 't.py')
|
||||
with open(file_path, 'w') as f:
|
||||
f.write('f"{a b}"') # This generates a SyntaxError
|
||||
_, _, stderr = assert_python_failure(file_path)
|
||||
self.assertIn(file_path, stderr.decode('utf-8'))
|
||||
|
||||
def test_loop(self):
|
||||
for i in range(1000):
|
||||
self.assertEqual(f'i:{i}', 'i:' + str(i))
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue