diff options
author | Terry Jan Reedy <tjreedy@udel.edu> | 2015-09-05 23:13:17 (GMT) |
---|---|---|
committer | Terry Jan Reedy <tjreedy@udel.edu> | 2015-09-05 23:13:17 (GMT) |
commit | 23ae488f23c7955a1b3448590d91b758e552764f (patch) | |
tree | b8a9af091401918460d9f1dce47a5a5e8cb302b8 /Lib | |
parent | bda9bd1d1ccd3d40af82e4ec0b7767fe4eb2ad96 (diff) | |
download | cpython-23ae488f23c7955a1b3448590d91b758e552764f.zip cpython-23ae488f23c7955a1b3448590d91b758e552764f.tar.gz cpython-23ae488f23c7955a1b3448590d91b758e552764f.tar.bz2 |
Issue #16180: Exit pdb if file has syntax error, instead of trapping user
in an infinite loop. Patch by Xavier de Gaye.
Diffstat (limited to 'Lib')
-rwxr-xr-x | Lib/pdb.py | 3 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 11 |
2 files changed, 14 insertions, 0 deletions
@@ -1322,6 +1322,9 @@ def main(): # In most cases SystemExit does not warrant a post-mortem session. print "The program exited via sys.exit(). Exit status: ", 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 b6dd2b7..b98fe19 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -69,6 +69,17 @@ class PdbTestCase(unittest.TestCase): any('main.py(5)foo()->None' in l for l in stdout.splitlines()), 'Fail to step into the caller after a return') + 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)) + class PdbTestInput(object): """Context manager that makes testing Pdb in doctests easier.""" |