Issue #16180: Exit pdb if file has syntax error, instead of trapping user

in an infinite loop.  Patch by Xavier de Gaye.
This commit is contained in:
Terry Jan Reedy 2015-09-05 19:13:26 -04:00
parent 6fb5bae252
commit ca3f435fe6
3 changed files with 18 additions and 0 deletions

View File

@ -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")

View File

@ -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)

View File

@ -81,6 +81,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 #21112: Fix regression in unittest.expectedFailure on subclasses.
Patch from Berker Peksag.