MCPcopy Create free account
hub / github.com/python/cpython / _run_tests

Method _run_tests

Lib/test/libregrtest/main.py:521–578  ·  view source on GitHub ↗
(self, selected: TestTuple, tests: TestList | None)

Source from the content-addressed store, hash-verified

519 )
520
521 def _run_tests(self, selected: TestTuple, tests: TestList | None) -> int:
522 if self.hunt_refleak and self.hunt_refleak.warmups < 3:
523 msg = ("WARNING: Running tests with --huntrleaks/-R and "
524 "less than 3 warmup repetitions can give false positives!")
525 print(msg, file=sys.stdout, flush=True)
526
527 if self.num_workers < 0:
528 # Use all CPUs + 2 extra worker processes for tests
529 # that like to sleep
530 #
531 # os.process.cpu_count() is new in Python 3.13;
532 # mypy doesn't know about it yet
533 self.num_workers = (os.process_cpu_count() or 1) + 2 # type: ignore[attr-defined]
534
535 # For a partial run, we do not need to clutter the output.
536 if (self.want_header
537 or not(self.pgo or self.quiet or self.single_test_run
538 or tests or self.cmdline_args)):
539 display_header(self.use_resources, self.python_cmd)
540
541 print("Using random seed:", self.random_seed)
542
543 runtests = self.create_run_tests(selected)
544 self.first_runtests = runtests
545 self.logger.set_tests(runtests)
546
547 if (runtests.hunt_refleak is not None) and (not self.num_workers):
548 # gh-109739: WindowsLoadTracker thread interferes with refleak check
549 use_load_tracker = False
550 else:
551 # WindowsLoadTracker is only needed on Windows
552 use_load_tracker = MS_WINDOWS
553
554 if use_load_tracker:
555 self.logger.start_load_tracker()
556 try:
557 if self.num_workers:
558 self._run_tests_mp(runtests, self.num_workers)
559 else:
560 self.run_tests_sequentially(runtests)
561
562 coverage = self.results.get_coverage_results()
563 self.display_result(runtests)
564
565 if self.want_rerun and self.results.need_rerun():
566 self.rerun_failed_tests(runtests)
567
568 if self.want_bisect and self.results.need_rerun():
569 self.run_bisect(runtests)
570 finally:
571 if use_load_tracker:
572 self.logger.stop_load_tracker()
573
574 self.display_summary()
575 self.finalize_tests(coverage)
576
577 return self.results.get_exitcode(self.fail_env_changed,
578 self.fail_rerun)

Callers 1

run_testsMethod · 0.95

Calls 15

create_run_testsMethod · 0.95
_run_tests_mpMethod · 0.95
display_resultMethod · 0.95
rerun_failed_testsMethod · 0.95
run_bisectMethod · 0.95
display_summaryMethod · 0.95
finalize_testsMethod · 0.95
display_headerFunction · 0.85
set_testsMethod · 0.80
start_load_trackerMethod · 0.80
get_coverage_resultsMethod · 0.80

Tested by

no test coverage detected