]> git.ipfire.org Git - thirdparty/linux.git/commitdiff
selftests: net: lib: Do not overwrite error messages
authorIdo Schimmel <idosch@nvidia.com>
Sun, 16 Nov 2025 08:10:29 +0000 (10:10 +0200)
committerJakub Kicinski <kuba@kernel.org>
Tue, 18 Nov 2025 03:32:12 +0000 (19:32 -0800)
ret_set_ksft_status() calls ksft_status_merge() with the current return
status and the last one. It treats a non-zero return code from
ksft_status_merge() as an indication that the return status was
overwritten by the last one and therefore overwrites the return message
with the last one.

Currently, ksft_status_merge() returns a non-zero return code even if
the current return status and the last one are equal. This results in
return messages being overwritten which is counter-productive since we
are more interested in the first failure message and not the last one.

Fix by changing ksft_status_merge() to only return a non-zero return
code if the current return status was actually changed.

Add a test case which checks that the first error message is not
overwritten.

Before:

 # ./lib_sh_test.sh
 [...]
 TEST: RET tfail2 tfail -> fail                                      [FAIL]
        retmsg=tfail expected tfail2
 [...]
 # echo $?
 1

After:

 # ./lib_sh_test.sh
 [...]
 TEST: RET tfail2 tfail -> fail                                      [ OK ]
 [...]
 # echo $?
 0

Fixes: 596c8819cb78 ("selftests: forwarding: Have RET track kselftest framework constants")
Reviewed-by: Petr Machata <petrm@nvidia.com>
Signed-off-by: Ido Schimmel <idosch@nvidia.com>
Link: https://patch.msgid.link/20251116081029.69112-1-idosch@nvidia.com
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
tools/testing/selftests/net/forwarding/lib_sh_test.sh
tools/testing/selftests/net/lib.sh

index ff2accccaf4d438e51c0ab77cdf12bda0636beeb..b4eda6c6199ed46c2c9b186ca857ee5dad0871f2 100755 (executable)
@@ -30,6 +30,11 @@ tfail()
        do_test "tfail" false
 }
 
+tfail2()
+{
+       do_test "tfail2" false
+}
+
 txfail()
 {
        FAIL_TO_XFAIL=yes do_test "txfail" false
@@ -132,6 +137,8 @@ test_ret()
        ret_subtest $ksft_fail "tfail" txfail tfail
 
        ret_subtest $ksft_xfail "txfail" txfail txfail
+
+       ret_subtest $ksft_fail "tfail2" tfail2 tfail
 }
 
 exit_status_tests_run()
index feba4ef69a5496412bf507eb8c776a9aa6efac0d..f448bafb3f208ee8b947bfdafeabe06652ad51fa 100644 (file)
@@ -43,7 +43,7 @@ __ksft_status_merge()
                weights[$i]=$((weight++))
        done
 
-       if [[ ${weights[$a]} > ${weights[$b]} ]]; then
+       if [[ ${weights[$a]} -ge ${weights[$b]} ]]; then
                echo "$a"
                return 0
        else