kunit: tool: print clearer error message when there's no TAP output
authorDaniel Latypov <dlatypov@google.com>
Tue, 29 Mar 2022 21:42:48 +0000 (14:42 -0700)
committerShuah Khan <skhan@linuxfoundation.org>
Thu, 12 May 2022 17:15:58 +0000 (11:15 -0600)
Before:
$ ./tools/testing/kunit/kunit.py parse /dev/null
...
[ERROR] Test : invalid KTAP input!

After:
$ ./tools/testing/kunit/kunit.py parse /dev/null
...
[ERROR] Test <missing>: could not find any KTAP output!

This error message gets printed out when extract_tap_output() yielded no
lines. So while it could be because of malformed KTAP output from KUnit,
it could also be due to not having any KTAP output at all.

Try and make the error message here more clear.

Signed-off-by: Daniel Latypov <dlatypov@google.com>
Reviewed-by: David Gow <davidgow@google.com>
Reviewed-by: Brendan Higgins <brendanhiggins@google.com>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/kunit/kunit_parser.py
tools/testing/kunit/kunit_tool_test.py

index de1c0b7e14ed97628e48528668ec786dd2f6075f..e16331a5bec4da76d993c832ae7b2d6621976f4d 100644 (file)
@@ -824,7 +824,8 @@ def parse_run_tests(kernel_output: Iterable[str]) -> Test:
        lines = extract_tap_lines(kernel_output)
        test = Test()
        if not lines:
-               test.add_error('invalid KTAP input!')
+               test.name = '<missing>'
+               test.add_error('could not find any KTAP output!')
                test.status = TestStatus.FAILURE_TO_PARSE_TESTS
        else:
                test = parse_test(lines, 0, [])
index 210df0f443e653029cef3f9df6165f517672f017..aebda46bcad8b2afaab0065c93e4c79368ab10ec 100755 (executable)
@@ -226,7 +226,7 @@ class KUnitParserTest(unittest.TestCase):
                with open(crash_log) as file:
                        result = kunit_parser.parse_run_tests(
                                kunit_parser.extract_tap_lines(file.readlines()))
-               print_mock.assert_any_call(StrContains('invalid KTAP input!'))
+               print_mock.assert_any_call(StrContains('could not find any KTAP output!'))
                print_mock.stop()
                self.assertEqual(0, len(result.subtests))
 
@@ -557,7 +557,7 @@ class KUnitMainTest(unittest.TestCase):
                self.assertEqual(e.exception.code, 1)
                self.assertEqual(self.linux_source_mock.build_reconfig.call_count, 1)
                self.assertEqual(self.linux_source_mock.run_kernel.call_count, 1)
-               self.print_mock.assert_any_call(StrContains('invalid KTAP input!'))
+               self.print_mock.assert_any_call(StrContains('could not find any KTAP output!'))
 
        def test_exec_no_tests(self):
                self.linux_source_mock.run_kernel = mock.Mock(return_value=['TAP version 14', '1..0'])