[<prev] [next>] [<thread-prev] [thread-next>] [day] [month] [year] [list]
Message-ID: <20240216004122.2004689-4-kuba@kernel.org>
Date: Thu, 15 Feb 2024 16:41:18 -0800
From: Jakub Kicinski <kuba@...nel.org>
To: jakub@...udflare.com
Cc: shuah@...nel.org,
keescook@...omium.org,
linux-kselftest@...r.kernel.org,
netdev@...r.kernel.org,
Jakub Kicinski <kuba@...nel.org>
Subject: [RFC 3/7] selftests: kselftest_harness: use exit code to store skip and xfail
We always use skip / xfail with combination of exit_code being 0
(KSFT_PASS). This are just basic KSFT / KTAP semantics.
Store the right KSFT_* code in exit_code directly.
Signed-off-by: Jakub Kicinski <kuba@...nel.org>
---
tools/testing/selftests/kselftest_harness.h | 35 ++++++---------------
1 file changed, 9 insertions(+), 26 deletions(-)
diff --git a/tools/testing/selftests/kselftest_harness.h b/tools/testing/selftests/kselftest_harness.h
index 70366864ffd9..6923cd7060fc 100644
--- a/tools/testing/selftests/kselftest_harness.h
+++ b/tools/testing/selftests/kselftest_harness.h
@@ -136,8 +136,7 @@
fprintf(TH_LOG_STREAM, "# SKIP %s\n", \
_metadata->results->reason); \
} \
- _metadata->exit_code = KSFT_PASS; \
- _metadata->skip = 1; \
+ _metadata->exit_code = KSFT_SKIP; \
_metadata->trigger = 0; \
statement; \
} while (0)
@@ -163,8 +162,7 @@
fprintf(TH_LOG_STREAM, "# XFAIL %s\n", \
_metadata->results->reason); \
} \
- _metadata->exit_code = KSFT_PASS; \
- _metadata->xfail = 1; \
+ _metadata->exit_code = KSFT_XFAIL; \
_metadata->trigger = 0; \
statement; \
} while (0)
@@ -416,7 +414,7 @@
if (setjmp(_metadata->env) == 0) { \
fixture_name##_setup(_metadata, &self, variant->data); \
/* Let setup failure terminate early. */ \
- if (!__test_passed(_metadata) || _metadata->skip) \
+ if (_metadata->exit_code) \
return; \
_metadata->setup_completed = true; \
fixture_name##_##test_name(_metadata, &self, variant->data); \
@@ -861,8 +859,6 @@ struct __test_metadata {
struct __fixture_metadata *fixture;
int termsig;
int exit_code;
- int skip; /* did SKIP get used? */
- int xfail; /* did XFAIL get used? */
int trigger; /* extra handler after the evaluation */
int timeout; /* seconds to wait for test timeout */
bool timed_out; /* did this test timeout instead of exiting? */
@@ -972,13 +968,9 @@ void __wait_for_test(struct __test_metadata *t)
fprintf(TH_LOG_STREAM,
"# %s: Test terminated by timeout\n", t->name);
} else if (WIFEXITED(status)) {
- if (WEXITSTATUS(status) == KSFT_SKIP) {
- /* SKIP */
- t->exit_code = KSFT_PASS;
- t->skip = 1;
- } else if (WEXITSTATUS(status) == KSFT_XFAIL) {
- t->exit_code = KSFT_PASS;
- t->xfail = 1;
+ if (WEXITSTATUS(status) == KSFT_SKIP ||
+ WEXITSTATUS(status) == KSFT_XFAIL) {
+ t->exit_code = WEXITSTATUS(status);
} else if (t->termsig != -1) {
t->exit_code = KSFT_FAIL;
fprintf(TH_LOG_STREAM,
@@ -1151,8 +1143,6 @@ void __run_test(struct __fixture_metadata *f,
/* reset test struct */
t->exit_code = KSFT_PASS;
- t->skip = 0;
- t->xfail = 0;
t->trigger = 0;
t->no_print = 0;
memset(t->results->reason, 0, sizeof(t->results->reason));
@@ -1174,24 +1164,17 @@ void __run_test(struct __fixture_metadata *f,
} else if (t->pid == 0) {
setpgrp();
t->fn(t, variant);
- if (t->skip)
- _exit(KSFT_SKIP);
- if (t->xfail)
- _exit(KSFT_XFAIL);
- if (__test_passed(t))
- _exit(KSFT_PASS);
- /* Something else happened. */
- _exit(KSFT_FAIL);
+ _exit(t->exit_code);
} else {
__wait_for_test(t);
}
ksft_print_msg(" %4s %s\n",
__test_passed(t) ? "OK" : "FAIL", test_name);
- if (t->skip)
+ if (t->exit_code == KSFT_SKIP)
ksft_test_result_skip("%s\n", t->results->reason[0] ?
t->results->reason : "unknown");
- else if (t->xfail)
+ else if (t->exit_code == KSFT_XFAIL)
ksft_test_result_xfail("%s\n", t->results->reason[0] ?
t->results->reason : "unknown");
else
--
2.43.0
Powered by blists - more mailing lists