From: "Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
To: "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>, "Rae Moar" <rmoar@google.com>,
"Shuah Khan" <shuah@kernel.org>,
"Jonathan Corbet" <corbet@lwn.net>,
"Nicolas Schier" <nicolas.schier@linux.dev>
Cc: "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,
"Thomas Weißschuh" <thomas.weissschuh@linutronix.de>
Subject: [PATCH v4 08/15] kunit: tool: Don't overwrite test status based on subtest counts
Date: Thu, 26 Jun 2025 08:10:16 +0200 [thread overview]
Message-ID: <20250626-kunit-kselftests-v4-8-48760534fef5@linutronix.de> (raw)
In-Reply-To: <20250626-kunit-kselftests-v4-0-48760534fef5@linutronix.de>
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>
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
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
next prev parent reply other threads:[~2025-06-26 6:10 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 ` Thomas Weißschuh [this message]
2025-07-01 21:11 ` [PATCH v4 08/15] kunit: tool: Don't overwrite test status based on subtest counts Rae Moar
2025-07-03 15:29 ` Thomas Weißschuh
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=20250626-kunit-kselftests-v4-8-48760534fef5@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