bpo-34013: Move the Python 2 hints from the exception constructor to the parser (GH-27392)

This commit is contained in:
Pablo Galindo Salgado 2021-07-27 21:30:32 +01:00 committed by GitHub
parent 6948964ecf
commit ecc3c8e421
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
5 changed files with 28 additions and 224 deletions

View file

@ -140,21 +140,24 @@ class TestPy2MigrationHint(unittest.TestCase):
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print("Hello World")', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
def test_string_with_soft_space(self):
python2_print_str = 'print "Hello World",'
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print("Hello World", end=" ")', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
def test_string_with_excessive_whitespace(self):
python2_print_str = 'print "Hello World", '
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print("Hello World", end=" ")', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
def test_string_with_leading_whitespace(self):
python2_print_str = '''if 1:
@ -163,7 +166,8 @@ class TestPy2MigrationHint(unittest.TestCase):
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print("Hello World")', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
# bpo-32685: Suggestions for print statement should be proper when
# it is in the same line as the header of a compound statement
@ -173,14 +177,16 @@ class TestPy2MigrationHint(unittest.TestCase):
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print(p)', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
def test_string_in_loop_on_same_line(self):
python2_print_str = 'for i in s: print i'
with self.assertRaises(SyntaxError) as context:
exec(python2_print_str)
self.assertIn('print(i)', str(context.exception))
self.assertIn("Missing parentheses in call to 'print'. Did you mean print(...)",
str(context.exception))
def test_stream_redirection_hint_for_py2_migration(self):
# Test correct hint produced for Py2 redirection syntax