mtest: refactor common condition into a property of TestRun

For a test to be displayed to stdout without buffering, it has to be
1) in verbose mode 2) not executed in parallel with others
3) not parsed, i.e. not TAP or Rust.  Include these three
conditions in a new property of stdout and use it in the
three places where it matters: when printing the initial
and final delimiters of the output, and when deciding the
console mode to use.

Suggested-by: Jussi Pakkanen <jpakkane@gmail.com>
Signed-off-by: Paolo Bonzini <pbonzini@redhat.com>
pull/10004/head
Paolo Bonzini 3 years ago
parent c3f145ca2b
commit 02b739feae
  1. 14
      mesonbuild/mtest.py

@ -606,11 +606,9 @@ class ConsoleLogger(TestLogger):
max_left_width=self.max_left_width,
right=test.res.get_text(mlog.colorize_console())))
print(test.res.get_command_marker() + test.cmdline)
if test.needs_parsing:
pass
elif not test.is_parallel:
if test.direct_stdout:
print(self.output_start, flush=True)
else:
elif not test.needs_parsing:
print(flush=True)
self.started_tests += 1
@ -665,7 +663,7 @@ class ConsoleLogger(TestLogger):
if not harness.options.quiet or not result.res.is_ok():
self.flush()
if result.verbose and not result.is_parallel and result.cmdline and not result.needs_parsing:
if result.cmdline and result.direct_stdout:
print(self.output_end)
print(harness.format(result, mlog.colorize_console(), max_left_width=self.max_left_width))
else:
@ -898,6 +896,10 @@ class TestRun:
self._num = TestRun.TEST_NUM
return self._num
@property
def direct_stdout(self) -> bool:
return self.verbose and not self.is_parallel and not self.needs_parsing
@property
def detail(self) -> str:
if self.res is TestResult.PENDING:
@ -1340,7 +1342,7 @@ class SingleTestRunner:
if self.options.gdb:
self.console_mode = ConsoleUser.GDB
elif self.runobj.verbose and not is_parallel and not self.runobj.needs_parsing:
elif self.runobj.direct_stdout:
self.console_mode = ConsoleUser.STDOUT
else:
self.console_mode = ConsoleUser.LOGGER

Loading…
Cancel
Save