if arg:
import shlex
argv0 = sys.argv[0:1]
- sys.argv = shlex.split(arg)
+ try:
+ sys.argv = shlex.split(arg)
+ except ValueError as e:
+ self.error('Cannot run %s: %s' % (arg, e))
+ return
sys.argv[:0] = argv0
# this is caught in the main debugger loop
raise Restart
'(Pdb) ',
])
+ def test_issue34266(self):
+ '''do_run handles exceptions from parsing its arg'''
+ def check(bad_arg, msg):
+ commands = "\n".join([
+ f'run {bad_arg}',
+ 'q',
+ ])
+ stdout, _ = self.run_pdb_script('pass', commands + '\n')
+ self.assertEqual(stdout.splitlines()[1:], [
+ '-> pass',
+ f'(Pdb) *** Cannot run {bad_arg}: {msg}',
+ '(Pdb) ',
+ ])
+ check('\\', 'No escaped character')
+ check('"', 'No closing quotation')
def test_issue42384(self):
'''When running `python foo.py` sys.path[0] is an absolute path. `python -m pdb foo.py` should behave the same'''