diff options
| -rwxr-xr-x | Lib/pdb.py | 3 | ||||
| -rw-r--r-- | Lib/test/test_pdb.py | 12 | ||||
| -rw-r--r-- | Misc/NEWS | 3 |
3 files changed, 18 insertions, 0 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py index cf2edbf898..4cba8a0c74 100755 --- a/Lib/pdb.py +++ b/Lib/pdb.py @@ -1669,6 +1669,9 @@ def main(): # In most cases SystemExit does not warrant a post-mortem session. print("The program exited via sys.exit(). Exit status:", end=' ') print(sys.exc_info()[1]) + except SyntaxError: + traceback.print_exc() + sys.exit(1) except: traceback.print_exc() print("Uncaught exception. Entering post mortem debugging") diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index ec8346c5ee..35044ad2a1 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1043,6 +1043,18 @@ class PdbTestCase(unittest.TestCase): self.assertNotIn('Error', stdout.decode(), "Got an error running test script under PDB") + def test_issue16180(self): + # A syntax error in the debuggee. + script = "def f: pass\n" + commands = '' + expected = "SyntaxError:" + stdout, stderr = self.run_pdb(script, commands) + self.assertIn(expected, stdout, + '\n\nExpected:\n{}\nGot:\n{}\n' + 'Fail to handle a syntax error in the debuggee.' + .format(expected, stdout)) + + def tearDown(self): support.unlink(support.TESTFN) @@ -101,6 +101,9 @@ Core and Builtins Library ------- +- Issue #16180: Exit pdb if file has syntax error, instead of trapping user + in an infinite loop. Patch by Xavier de Gaye. + - Issue #24891: Fix a race condition at Python startup if the file descriptor of stdin (0), stdout (1) or stderr (2) is closed while Python is creating sys.stdin, sys.stdout and sys.stderr objects. These attributes are now set |
