mirror of
https://github.com/python/cpython.git
synced 2025-11-11 14:44:57 +00:00
gh-84461: Add ability for multiprocessed libregrtest to use a different Python executable (GH-91930)
This commit is contained in:
parent
b04e02c57f
commit
aff8c4f488
3 changed files with 12 additions and 2 deletions
|
|
@ -206,6 +206,8 @@ def _create_parser():
|
||||||
group.add_argument('-S', '--start', metavar='START',
|
group.add_argument('-S', '--start', metavar='START',
|
||||||
help='the name of the test at which to start.' +
|
help='the name of the test at which to start.' +
|
||||||
more_details)
|
more_details)
|
||||||
|
group.add_argument('-p', '--python', metavar='PYTHON',
|
||||||
|
help='Command to run Python test subprocesses with.')
|
||||||
|
|
||||||
group = parser.add_argument_group('Verbosity')
|
group = parser.add_argument_group('Verbosity')
|
||||||
group.add_argument('-v', '--verbose', action='count',
|
group.add_argument('-v', '--verbose', action='count',
|
||||||
|
|
@ -370,6 +372,8 @@ def _parse_args(args, **kwargs):
|
||||||
parser.error("-s and -f don't go together!")
|
parser.error("-s and -f don't go together!")
|
||||||
if ns.use_mp is not None and ns.trace:
|
if ns.use_mp is not None and ns.trace:
|
||||||
parser.error("-T and -j don't go together!")
|
parser.error("-T and -j don't go together!")
|
||||||
|
if ns.python is not None and ns.use_mp is None:
|
||||||
|
parser.error("-p requires -j!")
|
||||||
if ns.failfast and not (ns.verbose or ns.verbose3):
|
if ns.failfast and not (ns.verbose or ns.verbose3):
|
||||||
parser.error("-G/--failfast needs either -v or -W")
|
parser.error("-G/--failfast needs either -v or -W")
|
||||||
if ns.pgo and (ns.verbose or ns.verbose2 or ns.verbose3):
|
if ns.pgo and (ns.verbose or ns.verbose2 or ns.verbose3):
|
||||||
|
|
|
||||||
|
|
@ -2,6 +2,7 @@ import faulthandler
|
||||||
import json
|
import json
|
||||||
import os
|
import os
|
||||||
import queue
|
import queue
|
||||||
|
import shlex
|
||||||
import signal
|
import signal
|
||||||
import subprocess
|
import subprocess
|
||||||
import sys
|
import sys
|
||||||
|
|
@ -55,8 +56,12 @@ def run_test_in_subprocess(testname: str, ns: Namespace) -> subprocess.Popen:
|
||||||
ns_dict = vars(ns)
|
ns_dict = vars(ns)
|
||||||
worker_args = (ns_dict, testname)
|
worker_args = (ns_dict, testname)
|
||||||
worker_args = json.dumps(worker_args)
|
worker_args = json.dumps(worker_args)
|
||||||
|
if ns.python is not None:
|
||||||
cmd = [sys.executable, *support.args_from_interpreter_flags(),
|
# The "executable" may be two or more parts, e.g. "node python.js"
|
||||||
|
executable = shlex.split(ns.python)
|
||||||
|
else:
|
||||||
|
executable = [sys.executable]
|
||||||
|
cmd = [*executable, *support.args_from_interpreter_flags(),
|
||||||
'-u', # Unbuffered stdout and stderr
|
'-u', # Unbuffered stdout and stderr
|
||||||
'-m', 'test.regrtest',
|
'-m', 'test.regrtest',
|
||||||
'--worker-args', worker_args]
|
'--worker-args', worker_args]
|
||||||
|
|
|
||||||
|
|
@ -0,0 +1 @@
|
||||||
|
When multiprocessing is enabled, libregrtest can now use a Python executable other than :code:`sys.executable` via the ``--python`` flag.
|
||||||
Loading…
Add table
Add a link
Reference in a new issue