[PATCH v3 08/16] kunit: tool: Add test for nested test result reporting

David Gow davidgow at google.com
Fri Jun 20 02:37:39 PDT 2025


On Wed, 11 Jun 2025 at 15:38, Thomas Weißschuh
<thomas.weissschuh at linutronix.de> wrote:
>
> Currently there is no test validating the result reporting from nested
> tests. Add one, it will also be used to validate upcoming changes to the
> nested test parsing.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh at linutronix.de>
> ---

This looks good, modulo a couple of minor suggestions below.

Regardless,
Reviewed-by: David Gow <davidgow at google.com>

Cheers,
-- David

>  tools/testing/kunit/kunit_tool_test.py                           | 9 +++++++++
>  .../kunit/test_data/test_is_test_passed-failure-nested.log       | 7 +++++++
>  2 files changed, 16 insertions(+)
>
> diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
> index bbba921e0eacb18663abfcabb2bccf330d8666f5..691cde9b030f7729128490c1bdb42ccee1967ad6 100755
> --- a/tools/testing/kunit/kunit_tool_test.py
> +++ b/tools/testing/kunit/kunit_tool_test.py
> @@ -165,6 +165,15 @@ class KUnitParserTest(unittest.TestCase):
>                 self.assertEqual(kunit_parser.TestStatus.FAILURE, result.status)
>                 self.assertEqual(result.counts.errors, 0)
>
> +       def test_parse_failed_nested_tests_log(self):
> +               nested_log = test_data_path('test_is_test_passed-failure-nested.log')
> +               with open(nested_log) as file:
> +                       result = kunit_parser.parse_run_tests(file.readlines(), stdout)
> +               self.assertEqual(kunit_parser.TestStatus.FAILURE, result.status)
> +               self.assertEqual(result.counts.failed, 2)
> +               self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[0].status)

Is it worth also testing the value of the nested test's result here? i.e.,
self.assertEqual(kunit_parser.TestStatus.FAILURE,
result.subtests[0].subtests[0].status)


> +               self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[1].status)
> +
>         def test_no_header(self):
>                 empty_log = test_data_path('test_is_test_passed-no_tests_run_no_header.log')
>                 with open(empty_log) as file:
> diff --git a/tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log b/tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log
> new file mode 100644
> index 0000000000000000000000000000000000000000..835816e0a07715a514f5f5afab1b6250037feaf4
> --- /dev/null
> +++ b/tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log
> @@ -0,0 +1,7 @@
> +KTAP version 1
> +1..2
> +not ok 1 subtest 1
> +    KTAP version 1
> +    1..1
> +        not ok 1 test 1
> +not ok 2 subtest 2

Having these named 'subtest 1' and 'test 1' is a bit confusing to me
(as it implies the outer tests are subtests of the inner ones, which
isn't right).

Could we either swap 'subtest' and 'test' here, or -- if we want to
preserve the match between 'subtest' here and the subtest in the
python code -- label the inner one something like 'subsubtest'?


>
> --
> 2.49.0
>
-------------- next part --------------
A non-text attachment was scrubbed...
Name: smime.p7s
Type: application/pkcs7-signature
Size: 5281 bytes
Desc: S/MIME Cryptographic Signature
URL: <http://lists.infradead.org/pipermail/linux-riscv/attachments/20250620/b7781269/attachment.p7s>


More information about the linux-riscv mailing list