aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPaolo Bonzini <pbonzini@redhat.com>2021-01-14 11:00:12 +0100
committerPaolo Bonzini <pbonzini@redhat.com>2021-01-15 10:03:54 +0100
commitc1c1408fae067d0a24c30c72a1e310c4a09a62be (patch)
tree47d1e8ca64888e1fbc012214b7646a94e1821346
parent1f52e2fa45396046d1694fcbccf15ba2f8381ce2 (diff)
downloadmeson-c1c1408fae067d0a24c30c72a1e310c4a09a62be.zip
meson-c1c1408fae067d0a24c30c72a1e310c4a09a62be.tar.gz
meson-c1c1408fae067d0a24c30c72a1e310c4a09a62be.tar.bz2
mtest: introduce ConsoleUser
This new enum can be used by TestSubprocess and TestHarness to understand (at a higher level) how SingleTestRunner sets up stdout/stderr redirection.
-rw-r--r--mesonbuild/mtest.py24
1 files changed, 22 insertions, 2 deletions
diff --git a/mesonbuild/mtest.py b/mesonbuild/mtest.py
index 63fa5b4..8b132a9 100644
--- a/mesonbuild/mtest.py
+++ b/mesonbuild/mtest.py
@@ -181,6 +181,19 @@ class TestException(MesonException):
@enum.unique
+class ConsoleUser(enum.Enum):
+
+ # the logger can use the console
+ LOGGER = 0
+
+ # the console is used by gdb
+ GDB = 1
+
+ # the console is used to write stdout/stderr
+ STDOUT = 2
+
+
+@enum.unique
class TestResult(enum.Enum):
PENDING = 'PENDING'
@@ -1105,6 +1118,13 @@ class SingleTestRunner:
self.runobj = TestRun(test, test_env, name, timeout)
+ if self.options.gdb:
+ self.console_mode = ConsoleUser.GDB
+ elif self.options.verbose and not self.runobj.needs_parsing:
+ self.console_mode = ConsoleUser.STDOUT
+ else:
+ self.console_mode = ConsoleUser.LOGGER
+
def _get_cmd(self) -> T.Optional[T.List[str]]:
if self.test.fname[0].endswith('.jar'):
return ['java', '-jar'] + self.test.fname
@@ -1203,7 +1223,7 @@ class SingleTestRunner:
if self.runobj.needs_parsing:
stdout = asyncio.subprocess.PIPE
stderr = None if self.options.verbose else asyncio.subprocess.PIPE
- elif not self.options.verbose:
+ elif self.console_mode is ConsoleUser.LOGGER:
stdout = asyncio.subprocess.PIPE
stderr = asyncio.subprocess.PIPE if self.options.split else asyncio.subprocess.STDOUT
@@ -1231,7 +1251,7 @@ class SingleTestRunner:
while not reader.at_eof():
line = decode(await reader.readline())
stdo_lines.append(line)
- if self.options.verbose:
+ if self.console_mode is ConsoleUser.STDOUT:
print(line, end='')
yield line