diff --git a/Lib/test/libregrtest/main.py b/Lib/test/libregrtest/main.py index 899ddf9d8d4b2f..84888654063c22 100644 --- a/Lib/test/libregrtest/main.py +++ b/Lib/test/libregrtest/main.py @@ -380,15 +380,11 @@ def run_tests_sequentially(self, runtests): msg += " (timeout: %s)" % format_duration(runtests.timeout) self.log(msg) - previous_test = None tests_iter = runtests.iter_tests() for test_index, test_name in enumerate(tests_iter, 1): start_time = time.perf_counter() - text = test_name - if previous_test: - text = '%s -- %s' % (text, previous_test) - self.logger.display_progress(test_index, text) + self.logger.display_progress(test_index, test_name) result = self.run_test(test_name, runtests, tracer) @@ -405,19 +401,14 @@ def run_tests_sequentially(self, runtests): except (KeyError, AttributeError): pass - if result.must_stop(self.fail_fast, self.fail_env_changed): - break - - previous_test = str(result) + text = str(result) test_time = time.perf_counter() - start_time if test_time >= PROGRESS_MIN_TIME: - previous_test = "%s in %s" % (previous_test, format_duration(test_time)) - elif result.state == State.PASSED: - # be quiet: say nothing if the test passed shortly - previous_test = None + text = f"{text} in {format_duration(test_time)}" + self.logger.display_progress(test_index, text) - if previous_test: - print(previous_test) + if result.must_stop(self.fail_fast, self.fail_env_changed): + break return tracer diff --git a/Lib/test/test_regrtest.py b/Lib/test/test_regrtest.py index 6c97f5e0d2188e..0e8ec60c60ab38 100644 --- a/Lib/test/test_regrtest.py +++ b/Lib/test/test_regrtest.py @@ -39,6 +39,17 @@ ROOT_DIR = os.path.join(os.path.dirname(__file__), '..', '..') ROOT_DIR = os.path.abspath(os.path.normpath(ROOT_DIR)) LOG_PREFIX = r'[0-9]+:[0-9]+:[0-9]+ (?:load avg: [0-9]+\.[0-9]{2} )?' +RESULT_REGEX = ( + 'passed', + 'failed', + 'skipped', + 'interrupted', + 'env changed', + 'timed out', + 'ran no tests', + 'worker non-zero exit code', +) +RESULT_REGEX = fr'(?:{"|".join(RESULT_REGEX)})' EXITCODE_BAD_TEST = 2 EXITCODE_ENV_CHANGED = 3 @@ -543,8 +554,8 @@ def check_line(self, output, pattern, full=False, regex=True): self.assertRegex(output, regex) def parse_executed_tests(self, output): - regex = (r'^%s\[ *[0-9]+(?:/ *[0-9]+)*\] (%s)' - % (LOG_PREFIX, self.TESTNAME_REGEX)) + regex = (fr'^{LOG_PREFIX}\[ *[0-9]+(?:/ *[0-9]+)*\] ' + fr'({self.TESTNAME_REGEX}) {RESULT_REGEX}') parser = re.finditer(regex, output, re.MULTILINE) return list(match.group(1) for match in parser)