From: David Gow <davidgow@google.com>
To: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Cc: "Masahiro Yamada" <masahiroy@kernel.org>,
"Nathan Chancellor" <nathan@kernel.org>,
"Andrew Morton" <akpm@linux-foundation.org>,
"Willy Tarreau" <w@1wt.eu>,
"Thomas Weißschuh" <linux@weissschuh.net>,
"Brendan Higgins" <brendan.higgins@linux.dev>,
"Rae Moar" <rmoar@google.com>, "Shuah Khan" <shuah@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Nicolas Schier" <nicolas.schier@linux.dev>,
"Paul Walmsley" <paul.walmsley@sifive.com>,
"Palmer Dabbelt" <palmer@dabbelt.com>,
"Albert Ou" <aou@eecs.berkeley.edu>,
"Alexandre Ghiti" <alex@ghiti.fr>,
"Christophe Leroy" <christophe.leroy@csgroup.eu>,
linux-kbuild@vger.kernel.org, linux-kernel@vger.kernel.org,
linux-kselftest@vger.kernel.org, kunit-dev@googlegroups.com,
linux-doc@vger.kernel.org, linux-riscv@lists.infradead.org,
workflows@vger.kernel.org
Subject: Re: [PATCH v3 09/16] kunit: tool: Don't overwrite test status based on subtest counts
Date: Fri, 20 Jun 2025 17:37:44 +0800 [thread overview]
Message-ID: <CABVgOSkG3dY3THo5DQOvWj1xX8XFFnnk7CXvVE2opQJZg4nwXg@mail.gmail.com> (raw)
In-Reply-To: <20250611-kunit-kselftests-v3-9-55e3d148cbc6@linutronix.de>
[-- Attachment #1: Type: text/plain, Size: 4155 bytes --]
On Wed, 11 Jun 2025 at 15:38, Thomas Weißschuh
<thomas.weissschuh@linutronix.de> wrote:
>
> If a subtest itself reports success, but the outer testcase fails,
> the whole testcase should be reported as a failure.
> However the status is recalculated based on the test counts,
> overwriting the outer test result.
> Synthesize a failed test in this case to make sure the failure is not
> swallowed.
>
> Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> ---
Hmm... this is definitely a nasty edge-case. I don't completely like
this solution, but none of the other options seem drastically better.
I think the more obvious options are either to _always_ count tests
alongside their subtests, or to _never_ do so, but acknowledge that
"test failed, but failure count is 0" is a valid option. But neither
of those are especially satisfying, either greatly inflating test
counts, or creating obvious contradictions.
So I'm tentatively in favour of this, but if anyone has a nicer way of
doing it, I'm all ears.
The implementation looks good. If we can add the explicit checks for
the sub(sub)test results as mentioned in the previous patch, that'd be
even better.
Reviewed-by: David Gow <davidgow@google.com>
> tools/testing/kunit/kunit_parser.py | 5 +++++
> tools/testing/kunit/kunit_tool_test.py | 2 +-
> tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log | 3 +++
> 3 files changed, 9 insertions(+), 1 deletion(-)
>
> diff --git a/tools/testing/kunit/kunit_parser.py b/tools/testing/kunit/kunit_parser.py
> index c176487356e6c94882046b19ea696d750905b8d5..2478beb28fc3db825855ad46200340e884da7df1 100644
> --- a/tools/testing/kunit/kunit_parser.py
> +++ b/tools/testing/kunit/kunit_parser.py
> @@ -686,6 +686,11 @@ def bubble_up_test_results(test: Test) -> None:
> counts.add_status(status)
> elif test.counts.get_status() == TestStatus.TEST_CRASHED:
> test.status = TestStatus.TEST_CRASHED
> + if not test.ok_status():
> + for t in subtests:
> + if not t.ok_status():
> + counts.add_status(t.status)
> + break
>
> def parse_test(lines: LineStream, expected_num: int, log: List[str], is_subtest: bool, printer: Printer) -> Test:
> """
> diff --git a/tools/testing/kunit/kunit_tool_test.py b/tools/testing/kunit/kunit_tool_test.py
> index 691cde9b030f7729128490c1bdb42ccee1967ad6..c25f52650837e83325b06bddd2aa665fd29f91d9 100755
> --- a/tools/testing/kunit/kunit_tool_test.py
> +++ b/tools/testing/kunit/kunit_tool_test.py
> @@ -170,7 +170,7 @@ class KUnitParserTest(unittest.TestCase):
> 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(result.counts.failed, 3)
> self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[0].status)
Could we add:
self.assertEqual(kunit_parser.TestStatus.SUCCESS,
result.subtests[0].subtests[0].status)
> self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[1].status)
and
self.assertEqual(kunit_parser.TestStatus.FAILURE,
result.subtests[1].subtests[0].status)
>
> 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
> index 835816e0a07715a514f5f5afab1b6250037feaf4..cd9033c464792e6294905a5676346684182874ad 100644
> --- 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
> @@ -1,5 +1,8 @@
> KTAP version 1
> 1..2
> + KTAP version 1
> + 1..1
> + ok 1 test 1
> not ok 1 subtest 1
> KTAP version 1
> 1..1
>
> --
> 2.49.0
>
[-- Attachment #2: S/MIME Cryptographic Signature --]
[-- Type: application/pkcs7-signature, Size: 5281 bytes --]
next prev parent reply other threads:[~2025-06-20 9:37 UTC|newest]
Thread overview: 44+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-11 7:38 [PATCH v3 00/16] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 01/16] kbuild: userprogs: avoid duplicating of flags inherited from kernel Thomas Weißschuh
2025-06-11 13:52 ` Nicolas Schier
2025-06-11 7:38 ` [PATCH v3 02/16] kbuild: userprogs: also inherit byte order and ABI " Thomas Weißschuh
2025-06-11 13:53 ` Nicolas Schier
2025-06-16 14:49 ` Masahiro Yamada
2025-06-17 7:39 ` Thomas Weißschuh
2025-06-18 1:14 ` Masahiro Yamada
2025-06-11 7:38 ` [PATCH v3 03/16] init: re-add CONFIG_CC_CAN_LINK_STATIC Thomas Weißschuh
2025-06-11 14:04 ` Nicolas Schier
2025-06-11 7:38 ` [PATCH v3 04/16] kbuild: userprogs: add nolibc support Thomas Weißschuh
2025-06-11 14:09 ` Nicolas Schier
2025-06-16 15:35 ` Masahiro Yamada
2025-06-17 7:59 ` Thomas Weißschuh
2025-06-18 1:15 ` Masahiro Yamada
2025-06-11 7:38 ` [PATCH v3 05/16] kbuild: introduce CONFIG_ARCH_HAS_NOLIBC Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 06/16] kbuild: doc: add label for userprogs section Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 07/16] kbuild: introduce blob framework Thomas Weißschuh
2025-06-16 15:38 ` Masahiro Yamada
2025-06-17 7:50 ` Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 08/16] kunit: tool: Add test for nested test result reporting Thomas Weißschuh
2025-06-20 9:37 ` David Gow
2025-06-20 13:20 ` Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 09/16] kunit: tool: Don't overwrite test status based on subtest counts Thomas Weißschuh
2025-06-20 9:37 ` David Gow [this message]
2025-06-20 13:23 ` Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 10/16] kunit: tool: Parse skipped tests from kselftest.h Thomas Weißschuh
2025-06-20 9:37 ` David Gow
2025-06-11 7:38 ` [PATCH v3 11/16] kunit: Always descend into kunit directory during build Thomas Weißschuh
2025-06-20 9:47 ` David Gow
2025-06-11 7:38 ` [PATCH v3 12/16] kunit: qemu_configs: loongarch: Enable LSX/LSAX Thomas Weißschuh
2025-06-20 9:37 ` David Gow
2025-06-11 7:38 ` [PATCH v3 13/16] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-06-20 9:47 ` David Gow
2025-06-20 13:43 ` Thomas Weißschuh
2025-06-11 7:38 ` [PATCH v3 14/16] kunit: uapi: Add example for UAPI tests Thomas Weißschuh
2025-06-20 9:47 ` David Gow
2025-06-11 7:38 ` [PATCH v3 15/16] kunit: uapi: Introduce preinit executable Thomas Weißschuh
2025-06-20 9:48 ` David Gow
2025-06-11 7:38 ` [PATCH v3 16/16] kunit: uapi: Validate usability of /proc Thomas Weißschuh
2025-06-20 9:48 ` David Gow
2025-06-20 13:50 ` Thomas Weißschuh
2025-06-20 9:37 ` [PATCH v3 00/16] kunit: Introduce UAPI testing framework David Gow
2025-06-20 13:18 ` Thomas Weißschuh
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=CABVgOSkG3dY3THo5DQOvWj1xX8XFFnnk7CXvVE2opQJZg4nwXg@mail.gmail.com \
--to=davidgow@google.com \
--cc=akpm@linux-foundation.org \
--cc=alex@ghiti.fr \
--cc=aou@eecs.berkeley.edu \
--cc=brendan.higgins@linux.dev \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=kunit-dev@googlegroups.com \
--cc=linux-doc@vger.kernel.org \
--cc=linux-kbuild@vger.kernel.org \
--cc=linux-kernel@vger.kernel.org \
--cc=linux-kselftest@vger.kernel.org \
--cc=linux-riscv@lists.infradead.org \
--cc=linux@weissschuh.net \
--cc=masahiroy@kernel.org \
--cc=nathan@kernel.org \
--cc=nicolas.schier@linux.dev \
--cc=palmer@dabbelt.com \
--cc=paul.walmsley@sifive.com \
--cc=rmoar@google.com \
--cc=shuah@kernel.org \
--cc=thomas.weissschuh@linutronix.de \
--cc=w@1wt.eu \
--cc=workflows@vger.kernel.org \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for NNTP newsgroup(s).