aboutsummaryrefslogtreecommitdiff
path: root/mesonbuild/mtest.py
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2020-11-25 15:24:09 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2020-12-27 13:55:53 +0100
commit5d97bf615f9de1476910e084e3f580b44bc4f632 (patch)
tree28c9206efc3e15d5b3f384d6a537fc8f6ac485bd /mesonbuild/mtest.py
parent80ba69606693508804df0d8917051aaaef854665 (diff)
downloadmeson-5d97bf615f9de1476910e084e3f580b44bc4f632.zip
meson-5d97bf615f9de1476910e084e3f580b44bc4f632.tar.gz
meson-5d97bf615f9de1476910e084e3f580b44bc4f632.tar.bz2
mtest: flush progress report before warning
Diffstat (limited to 'mesonbuild/mtest.py')
-rw-r--r--mesonbuild/mtest.py18
1 files changed, 14 insertions, 4 deletions
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index 484f432..7e3ebea 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -355,6 +355,9 @@ class TAPParser:
class TestLogger:
+ def flush(self) -> None:
+ pass
+
def start(self, harness: 'TestHarness') -> None:
pass
@@ -398,7 +401,7 @@ class ConsoleLogger(TestLogger):
self.started_tests = 0
self.spinner_index = 0
- def clear_progress(self) -> None:
+ def flush(self) -> None:
if self.should_erase_line:
print(self.should_erase_line, end='')
self.should_erase_line = ''
@@ -412,7 +415,7 @@ class ConsoleLogger(TestLogger):
def emit_progress(self) -> None:
if self.progress_test is None:
- self.clear_progress()
+ self.flush()
return
if len(self.running_tests) == 1:
@@ -462,7 +465,7 @@ class ConsoleLogger(TestLogger):
self.running_tests.add(self.progress_test)
self.emit_progress()
- self.clear_progress()
+ self.flush()
self.test_count = harness.test_count
# In verbose mode, the progress report gets in the way of the tests'
@@ -479,7 +482,7 @@ class ConsoleLogger(TestLogger):
def log(self, harness: 'TestHarness', result: 'TestRun') -> None:
self.running_tests.remove(result)
if not harness.options.quiet or not result.res.is_ok():
- self.clear_progress()
+ self.flush()
print(harness.format(result, mlog.colorize_console()), flush=True)
self.request_update()
@@ -1305,6 +1308,10 @@ class TestHarness:
return tests
+ def flush_logfiles(self) -> None:
+ for l in self.loggers:
+ l.flush()
+
def open_logfiles(self) -> None:
if not self.options.logbase or self.options.verbose:
return
@@ -1388,6 +1395,7 @@ class TestHarness:
future = futures.popleft()
futures.append(future)
if warn:
+ self.flush_logfiles()
mlog.warning('CTRL-C detected, interrupting {}'.format(running_tests[future]))
del running_tests[future]
future.cancel()
@@ -1397,6 +1405,7 @@ class TestHarness:
if interrupted:
return
interrupted = True
+ self.flush_logfiles()
mlog.warning('Received SIGTERM, exiting')
while running_tests:
cancel_one_test(False)
@@ -1410,6 +1419,7 @@ class TestHarness:
if running_tests:
cancel_one_test(True)
else:
+ self.flush_logfiles()
mlog.warning('CTRL-C detected, exiting')
interrupted = True