TEMPDIR = os.path.abspath(TEMPDIR)
+def format_duration(seconds):
+ if seconds < 1.0:
+ return '%.0f ms' % (seconds * 1e3)
+ if seconds < 60.0:
+ return '%.0f sec' % seconds
+
+ minutes, seconds = divmod(seconds, 60.0)
+ return '%.0f min %.0f sec' % (minutes, seconds)
+
+
class Regrtest:
"""Execute a test suite.
self.skipped.append(test)
self.resource_denieds.append(test)
- def time_delta(self, ceil=False):
- seconds = time.monotonic() - self.start_time
- if ceil:
- seconds = math.ceil(seconds)
- else:
- seconds = int(seconds)
- return datetime.timedelta(seconds=seconds)
-
def display_progress(self, test_index, test):
if self.ns.quiet:
return
fmt = "{time} [{test_index:{count_width}}{test_count}/{nbad}] {test_name}"
else:
fmt = "{time} [{test_index:{count_width}}{test_count}] {test_name}"
+ test_time = time.monotonic() - self.start_time
+ test_time = datetime.timedelta(seconds=int(test_time))
line = fmt.format(count_width=self.test_count_width,
test_index=test_index,
test_count=self.test_count,
nbad=len(self.bad),
test_name=test,
- time=self.time_delta())
+ time=test_time)
print(line, flush=True)
def parse_args(self, kwargs):
if self.ns.print_slow:
self.test_times.sort(reverse=True)
+ print()
print("10 slowest tests:")
for time, test in self.test_times[:10]:
- print("%s: %.1fs" % (test, time))
+ print("- %s: %s" % (test, format_duration(time)))
if self.bad:
print(count(len(self.bad), "test"), "failed:")
previous_test = format_test_result(test, result[0])
test_time = time.monotonic() - start_time
if test_time >= PROGRESS_MIN_TIME:
- previous_test = "%s in %.0f sec" % (previous_test, test_time)
+ previous_test = "%s in %s" % (previous_test, format_duration(test_time))
elif result[0] == PASSED:
# be quiet: say nothing if the test passed shortly
previous_test = None
r.write_results(show_missing=True, summary=True,
coverdir=self.ns.coverdir)
- print("Total duration: %s" % self.time_delta(ceil=True))
+ print()
+ duration = time.monotonic() - self.start_time
+ print("Total duration: %s" % format_duration(duration))
if self.ns.runleaks:
os.system("leaks %d" % os.getpid())
output = self.run_tests(test, exitcode=1)
self.check_executed_tests(output, test, omitted=test)
- def test_slow(self):
+ def test_slowest(self):
# test --slowest
tests = [self.create_test() for index in range(3)]
output = self.run_tests("--slowest", *tests)
self.check_executed_tests(output, tests)
regex = ('10 slowest tests:\n'
- '(?:%s: [0-9]+\.[0-9]+s\n){%s}'
+ '(?:- %s: .*\n){%s}'
% (self.TESTNAME_REGEX, len(tests)))
self.check_line(output, regex)