[3.12] gh-119727: Add --single-process option to regrtest (GH-119728) by hugovk · Pull Request #130359 · python/cpython
# Workers if ns.use_mp is None: num_workers = 0 # run sequentially self.single_process: bool = ns.single_process if self.single_process or ns.use_mp is None: num_workers = 0 # run sequentially in a single process elif ns.use_mp <= 0: num_workers = -1 # use the number of CPUs num_workers = -1 # run in parallel, use the number of CPUs else: num_workers = ns.use_mp num_workers = ns.use_mp # run in parallel self.num_workers: int = num_workers self.worker_json: StrJSON | None = ns.worker_json
def _rerun_failed_tests(self, runtests: RunTests): # Configure the runner to re-run tests if self.num_workers == 0: if self.num_workers == 0 and not self.single_process: # Always run tests in fresh processes to have more deterministic # initial state. Don't re-run tests in parallel but limit to a # single worker process to have side effects (on the system load
# Re-run failed tests self.log(f"Re-running {len(tests)} failed tests in verbose mode in subprocesses") runtests = runtests.copy( tests=tests, rerun=True,
msg = f"Re-running {len(tests)} failed tests in verbose mode" if not self.single_process: msg = f"{msg} in subprocesses" self.log(msg) self._run_tests_mp(runtests, self.num_workers) else: self.log(msg) self.run_tests_sequentially(runtests) return runtests
def rerun_failed_tests(self, runtests: RunTests):
if cross_compile and hostrunner: if self.num_workers == 0: if self.num_workers == 0 and not self.single_process: # For now use only two cores for cross-compiled builds; # hostrunner can be expensive. regrtest_opts.extend(['-j', '2'])