Currently this test always returs zero code and a child process returns non-zero code only if the last testcase failed.
v2: don't forget to return smth from ksft_exit() Cc: Michael Ellerman <m...@ellerman.id.au> Cc: Shuah Khan <shua...@osg.samsung.com> Cc: Cyrill Gorcunov <gorcu...@openvz.org> Signed-off-by: Andrey Vagin <ava...@openvz.org> --- tools/testing/selftests/kcmp/kcmp_test.c | 16 ++++++++++------ tools/testing/selftests/kselftest.h | 18 ++++++++++++++++++ 2 files changed, 28 insertions(+), 6 deletions(-) diff --git a/tools/testing/selftests/kcmp/kcmp_test.c b/tools/testing/selftests/kcmp/kcmp_test.c index a5a4da8..42a40c6 100644 --- a/tools/testing/selftests/kcmp/kcmp_test.c +++ b/tools/testing/selftests/kcmp/kcmp_test.c @@ -97,13 +97,17 @@ int main(int argc, char **argv) ksft_print_cnts(); - if (ret) - ksft_exit_fail(); - else - ksft_exit_pass(); + return ksft_exit(); + } + + status = -1; + if (waitpid(pid2, &status, 0) != pid2) { + perror("Unable to wait the child\n"); + return ksft_exit_fail(); } - waitpid(pid2, &status, P_ALL); + if (WIFEXITED(status)) + return WEXITSTATUS(status); - return ksft_exit_pass(); + return ksft_exit_fail(); } diff --git a/tools/testing/selftests/kselftest.h b/tools/testing/selftests/kselftest.h index 572c888..f23e56c 100644 --- a/tools/testing/selftests/kselftest.h +++ b/tools/testing/selftests/kselftest.h @@ -59,4 +59,22 @@ static inline int ksft_exit_skip(void) exit(4); } +static inline int ksft_exit(void) +{ + /* in order of disruptiveness from bad to good */ + if (ksft_cnt.ksft_fail) + return ksft_exit_fail(); + if (ksft_cnt.ksft_xpass) + return ksft_exit_xpass(); + if (ksft_cnt.ksft_xskip) + return ksft_exit_skip(); + if (ksft_cnt.ksft_xfail) + return ksft_exit_xfail(); + if (ksft_cnt.ksft_pass) + return ksft_exit_pass(); + + /* A test must do something */ + return ksft_exit_fail(); +} + #endif /* __KSELFTEST_H */ -- 2.1.0 -- To unsubscribe from this list: send the line "unsubscribe linux-kernel" in the body of a message to majord...@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.html Please read the FAQ at http://www.tux.org/lkml/