summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorIrit Katriel <1055913+iritkatriel@users.noreply.github.com>2021-07-03 15:33:35 (GMT)
committerGitHub <noreply@github.com>2021-07-03 15:33:35 (GMT)
commitd968a638fcbf9030c999cfacd4c9bf0656e779c4 (patch)
tree28ba4651a7a3c0b9b4396b19144ac8aacde8c9fa
parent556d5ad11fb380868c19beeba53d49f89c27f32d (diff)
downloadcpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.zip
cpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.tar.gz
cpython-d968a638fcbf9030c999cfacd4c9bf0656e779c4.tar.bz2
bpo-34266: [pdb] handle ValueError from shlex.split() (GH-26656)
-rwxr-xr-xLib/pdb.py6
-rw-r--r--Lib/test/test_pdb.py15
-rw-r--r--Misc/NEWS.d/next/Library/2021-06-10-21-53-46.bpo-34266.k3fxnm.rst1
3 files changed, 21 insertions, 1 deletions
diff --git a/Lib/pdb.py b/Lib/pdb.py
index ff40f7b..1b4ff54 100755
--- a/Lib/pdb.py
+++ b/Lib/pdb.py
@@ -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.