group.add_argument('-S', '--start', metavar='START',
help='the name of the test at which to start.' +
more_details)
+ group.add_argument('-p', '--python', metavar='PYTHON',
+ help='Command to run Python test subprocesses with.')
group = parser.add_argument_group('Verbosity')
group.add_argument('-v', '--verbose', action='count',
parser.error("-s and -f don't go together!")
if ns.use_mp is not None and ns.trace:
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):
parser.error("-G/--failfast needs either -v or -W")
if ns.pgo and (ns.verbose or ns.verbose2 or ns.verbose3):
import json
import os
import queue
+import shlex
import signal
import subprocess
import sys
ns_dict = vars(ns)
worker_args = (ns_dict, testname)
worker_args = json.dumps(worker_args)
-
- cmd = [sys.executable, *support.args_from_interpreter_flags(),
+ if ns.python is not None:
+ # 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
'-m', 'test.regrtest',
'--worker-args', worker_args]