selftests: kselftest_harness: print test name for SKIP
authorJakub Kicinski <kuba@kernel.org>
Thu, 29 Feb 2024 00:59:15 +0000 (16:59 -0800)
committerDavid S. Miller <davem@davemloft.net>
Fri, 1 Mar 2024 10:30:29 +0000 (10:30 +0000)
Jakub points out that for parsers it's rather useful to always
have the test name on the result line. Currently if we SKIP
(or soon XFAIL or XPASS), we will print:

ok 17 # SKIP SCTP doesn't support IP_BIND_ADDRESS_NO_PORT

     ^
     no test name

Always print the test name.
KTAP format seems to allow or even call for it, per:
https://docs.kernel.org/dev-tools/ktap.html

Suggested-by: Jakub Sitnicki <jakub@cloudflare.com>
Link: https://lore.kernel.org/all/87jzn6lnou.fsf@cloudflare.com/
Reviewed-by: Kees Cook <keescook@chromium.org>
Signed-off-by: Jakub Kicinski <kuba@kernel.org>
Signed-off-by: David S. Miller <davem@davemloft.net>
tools/testing/selftests/kselftest.h
tools/testing/selftests/kselftest_harness.h

index 12ad7f8dfe3ab1f72605251c846692b988a6c2be..25e29626566eca44c9a55132783e4956d20ebda9 100644 (file)
@@ -255,8 +255,9 @@ static inline __printf(1, 2) void ksft_test_result_error(const char *msg, ...)
        va_end(args);
 }
 
-static inline __printf(2, 3)
-void ksft_test_result_code(int exit_code, const char *msg, ...)
+static inline __printf(3, 4)
+void ksft_test_result_code(int exit_code, const char *test_name,
+                          const char *msg, ...)
 {
        const char *tap_code = "ok";
        const char *directive = "";
@@ -287,7 +288,7 @@ void ksft_test_result_code(int exit_code, const char *msg, ...)
        }
 
        va_start(args, msg);
-       printf("%s %u%s", tap_code, ksft_test_num(), directive);
+       printf("%s %u %s%s", tap_code, ksft_test_num(), test_name, directive);
        errno = saved_errno;
        vprintf(msg, args);
        va_end(args);
index 4fb30fcc77741c91e9a9e5cf6abe1bbc8bc3bb87..82377051aa54135136c36ff105bf23ad6ba4923c 100644 (file)
@@ -1147,7 +1147,8 @@ void __run_test(struct __fixture_metadata *f,
                diagnostic = "unknown";
 
        if (t->exit_code == KSFT_SKIP)
-               ksft_test_result_code(t->exit_code, "%s\n", diagnostic);
+               ksft_test_result_code(t->exit_code, test_name,
+                                     "%s\n", diagnostic);
        else
                ksft_test_result(__test_passed(t), "%s\n", test_name);
 }