diff options
author | Miss Islington (bot) <31488909+miss-islington@users.noreply.github.com> | 2021-07-03 16:05:33 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-03 16:05:33 (GMT) |
commit | 21be6cb0304ba143980b7e4c875cb5b9db30952b (patch) | |
tree | 50ab657176911d4e26f3b189d102db12fa98e2f8 | |
parent | 91db097358bcb00832e53d410035a8b7fcfdd9c3 (diff) | |
download | cpython-21be6cb0304ba143980b7e4c875cb5b9db30952b.zip cpython-21be6cb0304ba143980b7e4c875cb5b9db30952b.tar.gz cpython-21be6cb0304ba143980b7e4c875cb5b9db30952b.tar.bz2 |
bpo-34266: [pdb] handle ValueError from shlex.split() (GH-26656) (GH-27005)
(cherry picked from commit d968a638fcbf9030c999cfacd4c9bf0656e779c4)
Co-authored-by: Irit Katriel <1055913+iritkatriel@users.noreply.github.com>
-rwxr-xr-x | Lib/pdb.py | 6 | ||||
-rw-r--r-- | Lib/test/test_pdb.py | 15 | ||||
-rw-r--r-- | Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst | 1 |
3 files changed, 21 insertions, 1 deletions
@@ -1026,7 +1026,11 @@ class Pdb(bdb.Bdb, cmd.Cmd): 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 diff --git a/Lib/test/test_pdb.py b/Lib/test/test_pdb.py index 1c007a2..193207a 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1736,6 +1736,21 @@ def bœr(): '(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''' diff --git a/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst b/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst new file mode 100644 index 0000000..22ef84e --- /dev/null +++ b/Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst @@ -0,0 +1 @@ +Handle exceptions from parsing the arg of :mod:`pdb`'s run/restart command. |