diff --git a/Lib/test/libregrtest/cmdline.py b/Lib/test/libregrtest/cmdline.py index ebe57920d9185c..1ac63af734c412 100644 --- a/Lib/test/libregrtest/cmdline.py +++ b/Lib/test/libregrtest/cmdline.py @@ -1,6 +1,5 @@ import argparse import os -import shlex import sys from test.support import os_helper @@ -373,11 +372,8 @@ def _parse_args(args, **kwargs): 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: - if ns.use_mp is None: - parser.error("-p requires -j!") - # The "executable" may be two or more parts, e.g. "node python.js" - ns.python = shlex.split(ns.python) + 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): diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index 655e4d2e56f8f0..cc8ba05d39ca7d 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -306,22 +306,13 @@ def list_cases(self): printlist(self.skipped, file=sys.stderr) def rerun_failed_tests(self): - self.log() - - if self.ns.python: - # Temp patch for https://github.com/python/cpython/issues/94052 - self.log( - "Re-running failed tests is not supported with --python " - "host runner option." - ) - return - self.ns.verbose = True self.ns.failfast = False self.ns.verbose3 = False self.first_result = self.get_tests_result() + self.log() self.log("Re-running failed tests in verbose mode") rerun_list = list(self.need_rerun) self.need_rerun.clear() diff --git a/Lib/test/libregrtest/runtest_mp.py b/Lib/test/libregrtest/runtest_mp.py index 8f8c8dd918807b..39fab5566a089a 100644 --- a/Lib/test/libregrtest/runtest_mp.py +++ b/Lib/test/libregrtest/runtest_mp.py @@ -2,6 +2,7 @@ import json import os import queue +import shlex import signal import subprocess import sys @@ -56,7 +57,8 @@ def run_test_in_subprocess(testname: str, ns: Namespace) -> subprocess.Popen: worker_args = (ns_dict, testname) worker_args = json.dumps(worker_args) if ns.python is not None: - executable = ns.python + # 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(),