Commit e8731ecd authored by Stefano Pigozzi's avatar Stefano Pigozzi Committed by Shuah Khan
Browse files

selftests: kselftest: Add ksft_test_result_xpass

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: default avatarStefano Pigozzi <me@steffo.eu>
Signed-off-by: default avatarShuah Khan <skhan@linuxfoundation.org>
parent e0746bde
Loading
Loading
Loading
Loading
+20 −1
Original line number Diff line number Diff line
@@ -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;						\