mirror of
https://git.kernel.org/pub/scm/linux/kernel/git/torvalds/linux.git
synced 2026-07-22 04:37:32 -04:00
kunit:tool: Don't write to stdout when it should be disabled
The kunit_parser module accepts a 'printer' object which is used as a
destination for all output. This is typically set to stdout, so that the
parsed results are visible, but can be set to a special 'null_printer' to
implement options where not all results are always printed.
However, there are a few places where use of stdout is hardcoded, notably
in handling crashed tests and in outputting the colour escape sequences.
Properly use the specified printer for all output. This is okay for the
colour handling (as this is already gated behind isatty() anyway), and also
for the crash handling, as cases where printer != stdout are separately
printed afterwards.
Link: https://lore.kernel.org/r/20260606020317.264178-1-david@davidgow.net
Fixes: 062a9dd9ba ("kunit: tool: Only print the summary")
Signed-off-by: David Gow <david@davidgow.net>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
@@ -17,7 +17,7 @@ import textwrap
|
||||
from enum import Enum, auto
|
||||
from typing import Iterable, Iterator, List, Optional, Tuple
|
||||
|
||||
from kunit_printer import Printer, stdout
|
||||
from kunit_printer import Printer
|
||||
|
||||
class Test:
|
||||
"""
|
||||
@@ -58,7 +58,7 @@ class Test:
|
||||
def add_error(self, printer: Printer, error_message: str) -> None:
|
||||
"""Records an error that occurred while parsing this test."""
|
||||
self.counts.errors += 1
|
||||
printer.print_with_timestamp(stdout.red('[ERROR]') + f' Test: {self.name}: {error_message}')
|
||||
printer.print_with_timestamp(printer.red('[ERROR]') + f' Test: {self.name}: {error_message}')
|
||||
|
||||
def ok_status(self) -> bool:
|
||||
"""Returns true if the status was ok, i.e. passed or skipped."""
|
||||
@@ -549,7 +549,7 @@ def format_test_result(test: Test, printer: Printer) -> str:
|
||||
return printer.yellow('[NO TESTS RUN] ') + test.name
|
||||
if test.status == TestStatus.TEST_CRASHED:
|
||||
print_log(test.log, printer)
|
||||
return stdout.red('[CRASHED] ') + test.name
|
||||
return printer.red('[CRASHED] ') + test.name
|
||||
print_log(test.log, printer)
|
||||
return printer.red('[FAILED] ') + test.name
|
||||
|
||||
@@ -656,11 +656,11 @@ def print_summary_line(test: Test, printer: Printer) -> None:
|
||||
printer - Printer object to output results
|
||||
"""
|
||||
if test.status == TestStatus.SUCCESS:
|
||||
color = stdout.green
|
||||
color = printer.green
|
||||
elif test.status in (TestStatus.SKIPPED, TestStatus.NO_TESTS):
|
||||
color = stdout.yellow
|
||||
color = printer.yellow
|
||||
else:
|
||||
color = stdout.red
|
||||
color = printer.red
|
||||
printer.print_with_timestamp(color(f'Testing complete. {test.counts}'))
|
||||
|
||||
# Summarize failures that might have gone off-screen since we had a lot
|
||||
|
||||
Reference in New Issue
Block a user