kunit: tool: print failed tests only

Add flag --failed to kunit.py to print only failed tests. This printing
is done after running is over.

This patch also adds the method print_test() that will also print your
Test object. Before, all printing of tests occurred during parsing. This
method could be useful in the future when converting to/from KTAP to this
pretty-print output.

Link: https://lore.kernel.org/r/20241113222406.1590372-2-rmoar@google.com
Signed-off-by: Rae Moar <rmoar@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
This commit is contained in:
Rae Moar
2024-11-13 22:24:06 +00:00
committed by Shuah Khan
parent 062a9dd9ba
commit 3c67a2c09b
3 changed files with 40 additions and 5 deletions

View File

@@ -574,7 +574,32 @@ def print_test_footer(test: Test, printer: Printer) -> None:
printer.print_with_timestamp(format_test_divider(message,
len(message) - printer.color_len()))
def print_test(test: Test, failed_only: bool, printer: Printer) -> None:
"""
Prints Test object to given printer. For a child test, the result line is
printed. For a parent test, the test header, all child test results, and
the test footer are all printed. If failed_only is true, only failed/crashed
tests will be printed.
Parameters:
test - Test object to print
failed_only - True if only failed/crashed tests should be printed.
printer - Printer object to output results
"""
if test.name == "main":
printer.print_with_timestamp(DIVIDER)
for subtest in test.subtests:
print_test(subtest, failed_only, printer)
printer.print_with_timestamp(DIVIDER)
elif test.subtests != []:
if not failed_only or not test.ok_status():
print_test_header(test, printer)
for subtest in test.subtests:
print_test(subtest, failed_only, printer)
print_test_footer(test, printer)
else:
if not failed_only or not test.ok_status():
print_test_result(test, printer)
def _summarize_failed_tests(test: Test) -> str:
"""Tries to summarize all the failing subtests in `test`."""