[PATCH v3 4/4] test_macros*.c: Simplify with macros macros
Petr Vorel <[email protected]>
| Newsgroups | gmane.linux.ltp |
|---|---|
| Message-ID | <[email protected]> |
Use similar macros as is used in test_macros02.c in other tests to reduce duplicity (and slightly degrease readability). Also * Merge test_macros04.c into test_macros01.c * Increase coverage by skipping msg parameter * Test also TST_EXP_FD_OR_FAIL() Signed-off-by: Petr Vorel <[email protected]> --- lib/newlib_tests/test_macros01.c | 57 +++++++++++++++++++------------ lib/newlib_tests/test_macros03.c | 43 ++++++++++++----------- lib/newlib_tests/test_macros04.c | 58 -------------------------------- lib/newlib_tests/test_macros06.c | 32 +++++++++++------- 4 files changed, 76 insertions(+), 114 deletions(-) delete mode 100644 lib/newlib_tests/test_macros04.c diff --git a/lib/newlib_tests/test_macros01.c b/lib/newlib_tests/test_macros01.c index c04c943637..d6fdac7bd9 100644 --- a/lib/newlib_tests/test_macros01.c +++ b/lib/newlib_tests/test_macros01.c @@ -1,21 +1,30 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2020 Cyril Hrubis <[email protected]> + * Copyright (c) 2021 Yang Xu <[email protected]> + * Copyright (c) Linux Test Project, 2026 */ /* - * Test TST_EXP_FD and TST_EXP_FD_SILENT macro. + * Test macros: + * + * - TST_EXP_PASS + * - TST_EXP_PASS_SILENT + * - TST_EXP_FD + * - TST_EXP_FD_SILENT + * - TST_EXP_PID + * - TST_EXP_PID_SILENT */ #include "tst_test.h" -static int fail_fd(void) +static int fail_fn(void) { errno = EINVAL; return -1; } -static int pass_fd(void) +static int pass_fn(void) { return 42; } @@ -30,27 +39,31 @@ static int zero_val(void) return 0; } +#define TEST_MACRO(macro, fail_fn, pass_fn, inval_fn, zero_val_fn) \ + do { \ + tst_res(TINFO, "* Testing " #macro "() macro"); \ + macro(fail_fn(), #fail_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(fail_fn()); /* skip msg parameter */ \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(pass_fn(), #pass_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(inval_fn(), #inval_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(zero_val_fn(), #zero_val_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + } while (0) + static void do_test(void) { - tst_res(TINFO, "Testing TST_EXP_FD macro"); - TST_EXP_FD(fail_fd(), "fail_fd()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_FD(pass_fd(), "pass_fd()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_FD(inval_val(), "inval_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_FD(zero_val(), "zero_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - - tst_res(TINFO, "Testing TST_EXP_FD_SILENT macro"); - TST_EXP_FD_SILENT(fail_fd(), "fail_fd()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_FD_SILENT(pass_fd(), "%s", "pass_fd()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_FD_SILENT(pass_fd, ...)", TST_PASS); - TST_EXP_FD_SILENT(inval_val(), "inval_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_FD_SILENT(zero_val(), "zero_val()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_FD_SILENT(zero_val, ...)", TST_PASS); + TEST_MACRO(TST_EXP_PASS, fail_fn, pass_fn, inval_val, zero_val); + TEST_MACRO(TST_EXP_PASS_SILENT, fail_fn, pass_fn, inval_val, zero_val); + + TEST_MACRO(TST_EXP_FD, fail_fn, pass_fn, inval_val, zero_val); + TEST_MACRO(TST_EXP_FD_SILENT, fail_fn, pass_fn, inval_val, zero_val); + + TEST_MACRO(TST_EXP_PID, fail_fn, pass_fn, inval_val, zero_val); + TEST_MACRO(TST_EXP_PID_SILENT, fail_fn, pass_fn, inval_val, zero_val); } static struct tst_test test = { diff --git a/lib/newlib_tests/test_macros03.c b/lib/newlib_tests/test_macros03.c index 2a281bafcd..536240620d 100644 --- a/lib/newlib_tests/test_macros03.c +++ b/lib/newlib_tests/test_macros03.c @@ -1,10 +1,14 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2020 Cyril Hrubis <[email protected]> + * Copyright (c) Linux Test Project, 2026 */ /* - * Test TST_EXP_PASS and TST_EXP_PASS_SILENT macro. + * Test macros: + * + * - TST_EXP_PASS_OR_FAIL + * - TST_EXP_FD_OR_FAIL */ #include "tst_test.h" @@ -22,33 +26,28 @@ static int pass_fn(void) return 0; } -static int inval_ret_fn(void) +static int pass_fd(void) { return 42; } +#define TEST_MACRO(macro, fail_fn, pass_fn, fail_err) \ + do { \ + tst_res(TINFO, "* Testing " #macro "() macro"); \ + macro(fail_fn(), fail_err, #fail_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(fail_fn(), fail_err); /* skip msg parameter */ \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(pass_fn(), 0, #pass_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(fail_fn(), 0); /* skip msg parameter */ \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + } while (0) + static void do_test(void) { - tst_res(TINFO, "Testing TST_EXP_PASS macro"); - TST_EXP_PASS(fail_fn(), "fail_fn()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PASS(pass_fn(), "pass_fn()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PASS(inval_ret_fn(), "inval_ret_fn()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - - tst_res(TINFO, "Testing TST_EXP_PASS_SILENT macro"); - TST_EXP_PASS_SILENT(fail_fn(), "fail_fn()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PASS_SILENT(pass_fn(), "pass_fn()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_PASS_SILENT(pass_fn, ...)", TST_PASS); - TST_EXP_PASS_SILENT(inval_ret_fn(), "inval_ret_fn()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - - tst_res(TINFO, "Testing TST_EXP_PASS_OR_FAIL() macro (pass)"); - TST_EXP_PASS_OR_FAIL(pass_fn(), 0, "pass_fn()"); - tst_res(TINFO, "Testing TST_EXP_PASS_OR_FAIL() macro (fail)"); - TST_EXP_PASS_OR_FAIL(fail_fn(), ERR_ERRNO, "fail_fn()"); + TEST_MACRO(TST_EXP_PASS_OR_FAIL, fail_fn, pass_fn, ERR_ERRNO); + TEST_MACRO(TST_EXP_FD_OR_FAIL, fail_fn, pass_fd, ERR_ERRNO); } static struct tst_test test = { diff --git a/lib/newlib_tests/test_macros04.c b/lib/newlib_tests/test_macros04.c deleted file mode 100644 index e0111807fe..0000000000 --- a/lib/newlib_tests/test_macros04.c +++ /dev/null @@ -1,58 +0,0 @@ -// SPDX-License-Identifier: GPL-2.0-or-later -/* - * Copyright (c) 2021 Yang Xu <[email protected]> - */ - -/* - * Test TST_EXP_PID and TST_EXP_PID_SILENT macro. - */ - -#include "tst_test.h" - -static int fail_pid(void) -{ - errno = EINVAL; - return -1; -} - -static int pass_pid(void) -{ - return 42; -} - -static int inval_val(void) -{ - return -42; -} - -static int zero_val(void) -{ - return 0; -} - -static void do_test(void) -{ - tst_res(TINFO, "Testing TST_EXP_PID macro"); - TST_EXP_PID(fail_pid(), "fail_pid()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PID(pass_pid(), "pass_pid()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PID(inval_val(), "inval_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PID(zero_val(), "zero_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - - tst_res(TINFO, "Testing TST_EXP_PID_SILENT macro"); - TST_EXP_PID_SILENT(fail_pid(), "fail_pid()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PID_SILENT(pass_pid(), "%s", "pass_pid()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_PID_SILENT(pass_pid, ...)", TST_PASS); - TST_EXP_PID_SILENT(inval_val(), "inval_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_PID_SILENT(zero_val(), "zero_val()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_PID_SILENT(zero_val, ...)", TST_PASS); -} - -static struct tst_test test = { - .test_all = do_test, -}; diff --git a/lib/newlib_tests/test_macros06.c b/lib/newlib_tests/test_macros06.c index 4d300d7977..621014a72a 100644 --- a/lib/newlib_tests/test_macros06.c +++ b/lib/newlib_tests/test_macros06.c @@ -1,10 +1,14 @@ // SPDX-License-Identifier: GPL-2.0-or-later /* * Copyright (c) 2021 zhanglianjie <zhanglianjie-xX5NlYq76+e1Z/[email protected]> + * Copyright (c) Linux Test Project, 2026 */ /* - * Test TST_EXP_VAL and TST_EXP_VAL_SILENT macro. + * Test macros: + * + * - TST_EXP_VAL + * - TST_EXP_VAL_SILENT */ #include "tst_test.h" @@ -20,19 +24,23 @@ static int pass_val(void) return 42; } +#define TEST_MACRO(macro, fail_fn, pass_fn, pass_val, fail_err) \ + do { \ + tst_res(TINFO, "* Testing " #macro "() macro"); \ + macro(fail_fn(), fail_err, #fail_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(fail_fn(), fail_err); /* skip msg parameter */ \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(pass_fn(), pass_val, #pass_fn"()"); \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + macro(fail_fn(), pass_val); /* skip msg parameter */ \ + tst_res(TINFO, "TST_PASS = %i", TST_PASS); \ + } while (0) + static void do_test(void) { - tst_res(TINFO, "Testing TST_EXP_VAL macro"); - TST_EXP_VAL(fail_val(), 40, "fail_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - TST_EXP_VAL(pass_val(), 42, "pass_val()"); - tst_res(TINFO, "TST_PASS = %i", TST_PASS); - - tst_res(TINFO, "Testing TST_EXP_VAL_SILENT macro"); - TST_EXP_VAL_SILENT(fail_val(), 40, "fail_val()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_VAL_SILENT(fail_val, ...)", TST_PASS); - TST_EXP_VAL_SILENT(pass_val(), 42, "pass_val()"); - tst_res(TINFO, "TST_PASS = %i from TST_EXP_VAL_SILENT(pass_val, ...)", TST_PASS); + TEST_MACRO(TST_EXP_VAL, fail_val, pass_val, 42, 40); + TEST_MACRO(TST_EXP_VAL_SILENT, fail_val, pass_val, 42, 40); } static struct tst_test test = { -- 2.55.0 -- Mailing list info: https://lists.linux.it/listinfo/ltp