diff options
author | Irit Katriel <1055913+iritkatriel@users.noreply.github.com> | 2021-07-03 15:33:35 (GMT) |
---|---|---|
committer | GitHub <noreply@github.com> | 2021-07-03 15:33:35 (GMT) |
commit | d968a638fcbf9030c999cfacd4c9bf0656e779c4 (patch) | |
tree | 28ba4651a7a3c0b9b4396b19144ac8aacde8c9fa | |
parent | 556d5ad11fb380868c19beeba53d49f89c27f32d (diff) | |
download | cpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.zip cpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.tar.gz cpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.tar.bz2 |
bpo-34266: [pdb] handle ValueError from shlex.split() (GH-26656)
-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 0724b66..63afb81 100644 --- a/Lib/test/test_pdb.py +++ b/Lib/test/test_pdb.py @@ -1800,6 +1800,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. |