mirror of
https://github.com/python/cpython.git
synced 2025-07-24 11:44:31 +00:00
[3.13] gh-129363: Change regrtest sequential mode output (GH-129476) (#130405)
gh-129363: Change regrtest sequential mode output (GH-129476)
First, write the test name without color. Then, write the test name
and the result with color. Each test is displayed twice.
(cherry picked from commit f1b81c408f
)
Co-authored-by: Victor Stinner <vstinner@python.org>
Co-authored-by: Hugo van Kemenade <1324225+hugovk@users.noreply.github.com>
This commit is contained in:
parent
2a978e16d6
commit
8ce48c8ebc
2 changed files with 19 additions and 17 deletions
|
@ -387,15 +387,11 @@ class Regrtest:
|
|||
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)
|
||||
|
||||
|
@ -412,19 +408,14 @@ class Regrtest:
|
|||
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
|
||||
|
||||
def get_state(self) -> str:
|
||||
state = self.results.get_state(self.fail_env_changed)
|
||||
|
|
|
@ -39,6 +39,17 @@ if not support.has_subprocess_support:
|
|||
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
|
||||
|
@ -552,8 +563,8 @@ class BaseTestCase(unittest.TestCase):
|
|||
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)
|
||||
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue