提交 fd74b79d 编写于 作者: D Domenico Cerasuolo 提交者: Andrii Nakryiko

selftests: Fix test group SKIPPED result

When showing the result of a test group, if one
of the subtests was skipped, while still having
passing subtests, the group result was marked as
SKIP. E.g.:

223/1   usdt/basic:SKIP
223/2   usdt/multispec:OK
223/3   usdt/urand_auto_attach:OK
223/4   usdt/urand_pid_attach:OK
223     usdt:SKIP

The test result of usdt in the example above
should be OK instead of SKIP, because the test
group did have passing tests and it would be
considered in "normal" state.

With this change, only if all of the subtests
were skipped, the group test is marked as SKIP.
When only some of the subtests are skipped, a
more detailed result is given, stating how
many of the subtests were skipped. E.g:

223/1   usdt/basic:SKIP
223/2   usdt/multispec:OK
223/3   usdt/urand_auto_attach:OK
223/4   usdt/urand_pid_attach:OK
223     usdt:OK (SKIP: 1/4)
Signed-off-by: NDomenico Cerasuolo <dceras@meta.com>
Signed-off-by: NAndrii Nakryiko <andrii@kernel.org>
Acked-by: NYonghong Song <yhs@fb.com>
Link: https://lore.kernel.org/bpf/20221109184039.3514033-1-cerasuolodomenico@gmail.com
上级 15157d2e
...@@ -222,6 +222,26 @@ static char *test_result(bool failed, bool skipped) ...@@ -222,6 +222,26 @@ static char *test_result(bool failed, bool skipped)
return failed ? "FAIL" : (skipped ? "SKIP" : "OK"); return failed ? "FAIL" : (skipped ? "SKIP" : "OK");
} }
#define TEST_NUM_WIDTH 7
static void print_test_result(const struct prog_test_def *test, const struct test_state *test_state)
{
int skipped_cnt = test_state->skip_cnt;
int subtests_cnt = test_state->subtest_num;
fprintf(env.stdout, "#%-*d %s:", TEST_NUM_WIDTH, test->test_num, test->test_name);
if (test_state->error_cnt)
fprintf(env.stdout, "FAIL");
else if (!skipped_cnt)
fprintf(env.stdout, "OK");
else if (skipped_cnt == subtests_cnt || !subtests_cnt)
fprintf(env.stdout, "SKIP");
else
fprintf(env.stdout, "OK (SKIP: %d/%d)", skipped_cnt, subtests_cnt);
fprintf(env.stdout, "\n");
}
static void print_test_log(char *log_buf, size_t log_cnt) static void print_test_log(char *log_buf, size_t log_cnt)
{ {
log_buf[log_cnt] = '\0'; log_buf[log_cnt] = '\0';
...@@ -230,18 +250,6 @@ static void print_test_log(char *log_buf, size_t log_cnt) ...@@ -230,18 +250,6 @@ static void print_test_log(char *log_buf, size_t log_cnt)
fprintf(env.stdout, "\n"); fprintf(env.stdout, "\n");
} }
#define TEST_NUM_WIDTH 7
static void print_test_name(int test_num, const char *test_name, char *result)
{
fprintf(env.stdout, "#%-*d %s", TEST_NUM_WIDTH, test_num, test_name);
if (result)
fprintf(env.stdout, ":%s", result);
fprintf(env.stdout, "\n");
}
static void print_subtest_name(int test_num, int subtest_num, static void print_subtest_name(int test_num, int subtest_num,
const char *test_name, char *subtest_name, const char *test_name, char *subtest_name,
char *result) char *result)
...@@ -307,8 +315,7 @@ static void dump_test_log(const struct prog_test_def *test, ...@@ -307,8 +315,7 @@ static void dump_test_log(const struct prog_test_def *test,
subtest_state->skipped)); subtest_state->skipped));
} }
print_test_name(test->test_num, test->test_name, print_test_result(test, test_state);
test_result(test_failed, test_state->skip_cnt));
} }
static void stdio_restore(void); static void stdio_restore(void);
...@@ -1070,8 +1077,7 @@ static void run_one_test(int test_num) ...@@ -1070,8 +1077,7 @@ static void run_one_test(int test_num)
state->tested = true; state->tested = true;
if (verbose() && env.worker_id == -1) if (verbose() && env.worker_id == -1)
print_test_name(test_num + 1, test->test_name, print_test_result(test, state);
test_result(state->error_cnt, state->skip_cnt));
reset_affinity(); reset_affinity();
restore_netns(); restore_netns();
......
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册