]> git.ipfire.org Git - thirdparty/kernel/linux.git/commitdiff
selftests: kselftest: Add ksft_test_result_xpass
authorStefano Pigozzi <me@steffo.eu>
Sat, 7 Dec 2024 01:23:25 +0000 (02:23 +0100)
committerShuah Khan <skhan@linuxfoundation.org>
Wed, 15 Jan 2025 00:06:31 +0000 (17:06 -0700)
The functions ksft_test_result_pass, ksft_test_result_fail,
ksft_test_result_xfail, and ksft_test_result_skip already exist and are
available for use in selftests, but no XPASS equivalent is
available.

This adds a new function to that family that outputs XPASS, so that it's
available for future test writers.

Link: https://lore.kernel.org/r/20241207012325.56611-1-me@steffo.eu
Signed-off-by: Stefano Pigozzi <me@steffo.eu>
Signed-off-by: Shuah Khan <skhan@linuxfoundation.org>
tools/testing/selftests/kselftest.h

index 29fedf609611a675f4a01dd41a17a960ab409348..685d9f9554fcb383e8a5de1138a011eebbc615aa 100644 (file)
@@ -18,7 +18,8 @@
  *     ksft_print_msg(fmt, ...);
  *     ksft_perror(msg);
  *
- * and finally report the pass/fail/skip/xfail state of the test with one of:
+ * and finally report the pass/fail/skip/xfail/xpass state of the test
+ * with one of:
  *
  *     ksft_test_result(condition, fmt, ...);
  *     ksft_test_result_report(result, fmt, ...);
@@ -26,6 +27,7 @@
  *     ksft_test_result_fail(fmt, ...);
  *     ksft_test_result_skip(fmt, ...);
  *     ksft_test_result_xfail(fmt, ...);
+ *     ksft_test_result_xpass(fmt, ...);
  *     ksft_test_result_error(fmt, ...);
  *     ksft_test_result_code(exit_code, test_name, fmt, ...);
  *
@@ -227,6 +229,20 @@ static inline __printf(1, 2) void ksft_test_result_xfail(const char *msg, ...)
        va_end(args);
 }
 
+static inline __printf(1, 2) void ksft_test_result_xpass(const char *msg, ...)
+{
+       int saved_errno = errno;
+       va_list args;
+
+       ksft_cnt.ksft_xpass++;
+
+       va_start(args, msg);
+       printf("ok %u # XPASS ", ksft_test_num());
+       errno = saved_errno;
+       vprintf(msg, args);
+       va_end(args);
+}
+
 static inline __printf(1, 2) void ksft_test_result_skip(const char *msg, ...)
 {
        int saved_errno = errno;
@@ -318,6 +334,9 @@ void ksft_test_result_code(int exit_code, const char *test_name,
        case KSFT_XFAIL:                                        \
                ksft_test_result_xfail(fmt, ##__VA_ARGS__);     \
                break;                                          \
+       case KSFT_XPASS:                                        \
+               ksft_test_result_xpass(fmt, ##__VA_ARGS__);     \
+               break;                                          \
        case KSFT_SKIP:                                         \
                ksft_test_result_skip(fmt, ##__VA_ARGS__);      \
                break;                                          \