mirror of
https://github.com/python/cpython.git
synced 2025-12-04 16:43:27 +00:00
gh-113548: Allow CLI arguments to pdb -m (#113557)
This commit is contained in:
parent
48c0b05cf0
commit
b3e8c78ed7
3 changed files with 25 additions and 9 deletions
24
Lib/pdb.py
24
Lib/pdb.py
|
|
@ -2250,15 +2250,19 @@ def main():
|
||||||
import argparse
|
import argparse
|
||||||
|
|
||||||
parser = argparse.ArgumentParser(prog="pdb",
|
parser = argparse.ArgumentParser(prog="pdb",
|
||||||
|
usage="%(prog)s [-h] [-c command] (-m module | pyfile) [args ...]",
|
||||||
description=_usage,
|
description=_usage,
|
||||||
formatter_class=argparse.RawDescriptionHelpFormatter,
|
formatter_class=argparse.RawDescriptionHelpFormatter,
|
||||||
allow_abbrev=False)
|
allow_abbrev=False)
|
||||||
|
|
||||||
parser.add_argument('-c', '--command', action='append', default=[], metavar='command')
|
# We need to maunally get the script from args, because the first positional
|
||||||
group = parser.add_mutually_exclusive_group(required=True)
|
# arguments could be either the script we need to debug, or the argument
|
||||||
group.add_argument('-m', metavar='module')
|
# to the -m module
|
||||||
group.add_argument('pyfile', nargs='?')
|
parser.add_argument('-c', '--command', action='append', default=[], metavar='command', dest='commands',
|
||||||
parser.add_argument('args', nargs="*")
|
help='pdb commands to execute as if given in a .pdbrc file')
|
||||||
|
parser.add_argument('-m', metavar='module', dest='module')
|
||||||
|
parser.add_argument('args', nargs='*',
|
||||||
|
help="when -m is not specified, the first arg is the script to debug")
|
||||||
|
|
||||||
if len(sys.argv) == 1:
|
if len(sys.argv) == 1:
|
||||||
# If no arguments were given (python -m pdb), print the whole help message.
|
# If no arguments were given (python -m pdb), print the whole help message.
|
||||||
|
|
@ -2268,11 +2272,13 @@ def main():
|
||||||
|
|
||||||
opts = parser.parse_args()
|
opts = parser.parse_args()
|
||||||
|
|
||||||
if opts.m:
|
if opts.module:
|
||||||
file = opts.m
|
file = opts.module
|
||||||
target = _ModuleTarget(file)
|
target = _ModuleTarget(file)
|
||||||
else:
|
else:
|
||||||
file = opts.pyfile
|
if not opts.args:
|
||||||
|
parser.error("no module or script to run")
|
||||||
|
file = opts.args.pop(0)
|
||||||
target = _ScriptTarget(file)
|
target = _ScriptTarget(file)
|
||||||
|
|
||||||
target.check()
|
target.check()
|
||||||
|
|
@ -2284,7 +2290,7 @@ def main():
|
||||||
# changed by the user from the command line. There is a "restart" command
|
# changed by the user from the command line. There is a "restart" command
|
||||||
# which allows explicit specification of command line arguments.
|
# which allows explicit specification of command line arguments.
|
||||||
pdb = Pdb()
|
pdb = Pdb()
|
||||||
pdb.rcLines.extend(opts.command)
|
pdb.rcLines.extend(opts.commands)
|
||||||
while True:
|
while True:
|
||||||
try:
|
try:
|
||||||
pdb._run(target)
|
pdb._run(target)
|
||||||
|
|
|
||||||
|
|
@ -3057,6 +3057,15 @@ def bœr():
|
||||||
stdout, stderr = self.run_pdb_module(script, commands)
|
stdout, stderr = self.run_pdb_module(script, commands)
|
||||||
self.assertTrue(any("SUCCESS" in l for l in stdout.splitlines()), stdout)
|
self.assertTrue(any("SUCCESS" in l for l in stdout.splitlines()), stdout)
|
||||||
|
|
||||||
|
def test_run_module_with_args(self):
|
||||||
|
commands = """
|
||||||
|
continue
|
||||||
|
"""
|
||||||
|
self._run_pdb(["calendar", "-m"], commands, expected_returncode=2)
|
||||||
|
|
||||||
|
stdout, _ = self._run_pdb(["-m", "calendar", "1"], commands)
|
||||||
|
self.assertIn("December", stdout)
|
||||||
|
|
||||||
def test_breakpoint(self):
|
def test_breakpoint(self):
|
||||||
script = """
|
script = """
|
||||||
if __name__ == '__main__':
|
if __name__ == '__main__':
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
:mod:`pdb` now allows CLI arguments to ``pdb -m``.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue