diff options
author | Paolo Bonzini <pbonzini@redhat.com> | 2021-01-14 11:00:12 +0100 |
---|---|---|
committer | Paolo Bonzini <pbonzini@redhat.com> | 2021-01-15 10:03:54 +0100 |
commit | c1c1408fae067d0a24c30c72a1e310c4a09a62be (patch) | |
tree | 47d1e8ca64888e1fbc012214b7646a94e1821346 | |
parent | 1f52e2fa45396046d1694fcbccf15ba2f8381ce2 (diff) | |
download | meson-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.py | 24 |
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 |