From: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
To: Rae Moar <rmoar@google.com>
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>,
"David Gow" <davidgow@google.com>,
"Shuah Khan" <shuah@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Nicolas Schier" <nicolas.schier@linux.dev>,
"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, workflows@vger.kernel.org
Subject: Re: [PATCH v4 08/15] kunit: tool: Don't overwrite test status based on subtest counts
Date: Thu, 3 Jul 2025 17:29:56 +0200 [thread overview]
Message-ID: <20250703170653-0747ad3a-ee33-4ce9-9f69-1118b0d8260a@linutronix.de> (raw)
In-Reply-To: <CA+GJov45CF67nKJ7AC=g0fPL68pLdJbvJBwG8ecn9OUZ7hCewA@mail.gmail.com>
On Tue, Jul 01, 2025 at 05:11:59PM -0400, Rae Moar wrote:
> On Thu, Jun 26, 2025 at 2:10 AM 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.
>
> This is a very exciting patch series! However, I have a few concerns
> with this patch.
Thanks for the review!
> When I parse the following KTAP with this change:
>
> KTAP version 1
> 1..2
> KTAP version 1
> 1..2
> ok 1 test 1
> not ok 2 test 2
> not ok 1 subtest 1
> KTAP version 1
> 1..1
> not ok 1 subsubtest 1
> not ok 2 subtest 2
>
> The output is:
>
> [20:54:12] ============================================================
> [20:54:12] ======================= (2 subtests) =======================
> [20:54:12] [PASSED] test 1
> [20:54:12] [FAILED] test 2
> [20:54:12] ==================== [FAILED] subtest 1 ====================
> [20:54:12] ======================= (1 subtest) ========================
> [20:54:12] [FAILED] subsubtest 1
> [20:54:12] ==================== [FAILED] subtest 2 ====================
> [20:54:12] ============================================================
> [20:54:12] Testing complete. Ran 6 tests: passed: 1, failed: 5
>
> This reports a total of 6 tests, which is not equivalent to the three
> subtests plus the two suites. I believe this is because the change to
> bubble_up_test_results below double counts the failed test case.
>
> Historically, the KUnit parser only counts the results of test cases,
> not the suites. I would like to stay as close to this as possible so
> as to not inflate existing testing numbers. However, I believe the
> main concern here is the case where if there is a suite reporting
> failure but all subtests pass, it will not appear in the summary line.
> For example,
>
> KTAP version 1
> 1..1
> KTAP version 1
> 1..1
> ok 1 test 1
> not ok 1 subtest 1
>
> Reporting: All passing: Tests run: 1, passed: 1
>
> This is absolutely an important edge case to cover. Therefore, we
> should add 1 failure count to the suite count if the bubbled up
> results indicate it should instead pass.
Makes sense.
> >
> > Signed-off-by: Thomas Weißschuh <thomas.weissschuh@linutronix.de>
> > Reviewed-by: David Gow <davidgow@google.com>
> > ---
> > tools/testing/kunit/kunit_parser.py | 5 +++++
> > tools/testing/kunit/kunit_tool_test.py | 3 ++-
> > tools/testing/kunit/test_data/test_is_test_passed-failure-nested.log | 3 +++
> > 3 files changed, 10 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
>
> Here instead I recommend checking if not test.ok_status() and
> test.counts.get_status() == TestStatus.SUCCESS and if so
> counts.add_status(status)
Thanks for the recommendation. I tried this and it works well for this specific
testcase, but unfortunately all kinds of othes tests are now broken.
I'll look into it some more, but any hints are highly appreciated.
It has been a while since I looked at the code.
> > 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 b74dc05fc2fe5b3ff629172fc7aafeb5c3d29fb3..48a0dd0f9c87caf9f018aade161db90a613fc407 100755
> > --- a/tools/testing/kunit/kunit_tool_test.py
> > +++ b/tools/testing/kunit/kunit_tool_test.py
> > @@ -170,8 +170,9 @@ 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)
> > + self.assertEqual(kunit_parser.TestStatus.SUCCESS, result.subtests[0].subtests[0].status)
> > self.assertEqual(kunit_parser.TestStatus.FAILURE, result.subtests[1].status)
> > 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 2e528da39ab5b2be0fca6cf9160c10929fba3c9e..5498dfd0b0db24663e1a1e9bf78c587de6746522 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.50.0
> >
> > --
> > You received this message because you are subscribed to the Google Groups "KUnit Development" group.
> > To unsubscribe from this group and stop receiving emails from it, send an email to kunit-dev+unsubscribe@googlegroups.com.
> > To view this discussion visit https://groups.google.com/d/msgid/kunit-dev/20250626-kunit-kselftests-v4-8-48760534fef5%40linutronix.de.
next prev parent reply other threads:[~2025-07-03 15:30 UTC|newest]
Thread overview: 38+ messages / expand[flat|nested] mbox.gz Atom feed top
2025-06-26 6:10 [PATCH v4 00/15] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 01/15] kbuild: userprogs: avoid duplication of flags inherited from kernel Thomas Weißschuh
2025-07-03 13:59 ` Nicolas Schier
2025-07-04 21:51 ` Masahiro Yamada
2025-06-26 6:10 ` [PATCH v4 02/15] kbuild: userprogs: also inherit byte order and ABI " Thomas Weißschuh
2025-07-03 14:00 ` Nicolas Schier
2025-07-04 21:51 ` Masahiro Yamada
2025-06-26 6:10 ` [PATCH v4 03/15] kbuild: doc: add label for userprogs section Thomas Weißschuh
2025-07-03 14:00 ` Nicolas Schier
2025-07-04 21:55 ` Masahiro Yamada
2025-06-26 6:10 ` [PATCH v4 04/15] init: re-add CONFIG_CC_CAN_LINK_STATIC Thomas Weißschuh
2025-07-03 14:00 ` Nicolas Schier
2025-07-04 21:55 ` Masahiro Yamada
2025-06-26 6:10 ` [PATCH v4 05/15] init: add nolibc build support Thomas Weißschuh
2025-07-03 14:01 ` Nicolas Schier
2025-06-26 6:10 ` [PATCH v4 06/15] fs,fork,exit: export symbols necessary for KUnit UAPI support Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 07/15] kunit: tool: Add test for nested test result reporting Thomas Weißschuh
2025-07-01 21:26 ` Rae Moar
2025-06-26 6:10 ` [PATCH v4 08/15] kunit: tool: Don't overwrite test status based on subtest counts Thomas Weißschuh
2025-07-01 21:11 ` Rae Moar
2025-07-03 15:29 ` Thomas Weißschuh [this message]
2025-07-04 12:55 ` Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 09/15] kunit: tool: Parse skipped tests from kselftest.h Thomas Weißschuh
2025-07-01 21:22 ` Rae Moar
2025-07-03 15:59 ` Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 10/15] kunit: Always descend into kunit directory during build Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 11/15] kunit: qemu_configs: loongarch: Enable LSX/LSAX Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 12/15] kunit: Introduce UAPI testing framework Thomas Weißschuh
2025-06-26 18:11 ` Benjamin Berg
2025-06-27 4:20 ` Thomas Weißschuh
2025-06-27 6:58 ` Benjamin Berg
2025-06-27 8:27 ` Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 13/15] kunit: uapi: Add example for UAPI tests Thomas Weißschuh
2025-06-26 6:10 ` [PATCH v4 14/15] kunit: uapi: Introduce preinit executable Thomas Weißschuh
2025-07-12 9:49 ` Muhammad Usama Anjum
2025-06-26 6:10 ` [PATCH v4 15/15] kunit: uapi: Validate usability of /proc Thomas Weißschuh
2025-07-07 18:18 ` [PATCH v4 00/15] kunit: Introduce UAPI testing framework Jonathan Corbet
2025-07-08 5:51 ` 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=20250703170653-0747ad3a-ee33-4ce9-9f69-1118b0d8260a@linutronix.de \
--to=thomas.weissschuh@linutronix.de \
--cc=akpm@linux-foundation.org \
--cc=brendan.higgins@linux.dev \
--cc=christophe.leroy@csgroup.eu \
--cc=corbet@lwn.net \
--cc=davidgow@google.com \
--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@weissschuh.net \
--cc=masahiroy@kernel.org \
--cc=nathan@kernel.org \
--cc=nicolas.schier@linux.dev \
--cc=rmoar@google.com \
--cc=shuah@kernel.org \
--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