2022-11-11 03:42:00

by Daniel Latypov

[permalink] [raw]
Subject: [PATCH] kunit: tool: tweak error message when no KTAP found

We currently tell people we "couldn't find any KTAP output" with no
indication as to what this might mean.

After this patch, we get:

$ ./tools/testing/kunit/kunit.py parse /dev/null
============================================================
[ERROR] Test: <missing>: Could not find any KTAP output. Did any KUnit tests run?
============================================================
Testing complete. Ran 0 tests: errors: 1

Note: we could try and generate a more verbose message like
> Please check .kunit/test.log to see the raw kernel output.
or the like, but we'd need to know what the build dir was to know where
test.log actually lives.

This patch tries to make a more minimal improvement.

Signed-off-by: Daniel Latypov <[email protected]>
---
tools/testing/kunit/kunit_parser.py | 2 +-
tools/testing/kunit/kunit_tool_test.py | 4 ++--
2 files changed, 3 insertions(+), 3 deletions(-)

diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py
index a56c75a973b5..d0ed5dd5cfc4 100644
--- a/tools/testing/kunit/kunit_parser.py
+++ b/tools/testing/kunit/kunit_parser.py
@@ -782,7 +782,7 @@ def parse_run_tests(kernel_output: Iterable[str]) -> Test:
test = Test()
if not lines:
test.name = '<missing>'
- test.add_error('could not find any KTAP output!')
+ test.add_error('Could not find any KTAP output. Did any KUnit tests run?')
test.status = TestStatus.FAILURE_TO_PARSE_TESTS
else:
test = parse_test(lines, 0, [])
diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
index 90c65b072be9..84a08cf07242 100755
--- a/tools/testing/kunit/kunit_tool_test.py
+++ b/tools/testing/kunit/kunit_tool_test.py
@@ -207,7 +207,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('could not find any KTAP output!'))
+ print_mock.assert_any_call(StrContains('Could not find any KTAP output.'))
print_mock.stop()
self.assertEqual(0, len(result.subtests))
self.assertEqual(result.counts.errors, 1)
@@ -588,7 +588,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('could not find any KTAP output!'))
+ 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'])

base-commit: 870f63b7cd78d0055902d839a60408f7428b4e84
--
2.38.1.431.g37b22c650d-goog



2022-11-19 08:44:44

by David Gow

[permalink] [raw]
Subject: Re: [PATCH] kunit: tool: tweak error message when no KTAP found

On Fri, Nov 11, 2022 at 11:19 AM Daniel Latypov <[email protected]> wrote:
>
> We currently tell people we "couldn't find any KTAP output" with no
> indication as to what this might mean.
>
> After this patch, we get:
>
> $ ./tools/testing/kunit/kunit.py parse /dev/null
> ============================================================
> [ERROR] Test: <missing>: Could not find any KTAP output. Did any KUnit tests run?
> ============================================================
> Testing complete. Ran 0 tests: errors: 1
>
> Note: we could try and generate a more verbose message like
> > Please check .kunit/test.log to see the raw kernel output.
> or the like, but we'd need to know what the build dir was to know where
> test.log actually lives.
>
> This patch tries to make a more minimal improvement.
>
> Signed-off-by: Daniel Latypov <[email protected]>
> ---

I agree that this is clearer.

One minor nitpick is that we still have the (useless) 'Test:
<missing>:' prefix, which also makes the error much longer than the
'===' dividers. I think the error would be more aesthetically pleasing
if we could fix that.

That's a very minor point, though, so regardless:

Reviewed-by: David Gow <[email protected]>

Cheers,
-- David

> tools/testing/kunit/kunit_parser.py | 2 +-
> tools/testing/kunit/kunit_tool_test.py | 4 ++--
> 2 files changed, 3 insertions(+), 3 deletions(-)
>
> diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py
> index a56c75a973b5..d0ed5dd5cfc4 100644
> --- a/tools/testing/kunit/kunit_parser.py
> +++ b/tools/testing/kunit/kunit_parser.py
> @@ -782,7 +782,7 @@ def parse_run_tests(kernel_output: Iterable[str]) -> Test:
> test = Test()
> if not lines:
> test.name = '<missing>'
> - test.add_error('could not find any KTAP output!')
> + test.add_error('Could not find any KTAP output. Did any KUnit tests run?')
> test.status = TestStatus.FAILURE_TO_PARSE_TESTS
> else:
> test = parse_test(lines, 0, [])
> diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
> index 90c65b072be9..84a08cf07242 100755
> --- a/tools/testing/kunit/kunit_tool_test.py
> +++ b/tools/testing/kunit/kunit_tool_test.py
> @@ -207,7 +207,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('could not find any KTAP output!'))
> + print_mock.assert_any_call(StrContains('Could not find any KTAP output.'))
> print_mock.stop()
> self.assertEqual(0, len(result.subtests))
> self.assertEqual(result.counts.errors, 1)
> @@ -588,7 +588,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('could not find any KTAP output!'))
> + 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'])
>
> base-commit: 870f63b7cd78d0055902d839a60408f7428b4e84
> --
> 2.38.1.431.g37b22c650d-goog
>


Attachments:
smime.p7s (3.91 kB)
S/MIME Cryptographic Signature