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)
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)
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
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)