From: Petr Vorel <pvorel@suse.cz>
To: Wei Gao <wegao@suse.com>
Cc: ltp@lists.linux.it
Subject: Re: [LTP] [PATCH v5 1/3] lib: TST_EXP_{FAIL,PASS}_PTR_{NULL,VOID}
Date: Thu, 28 Mar 2024 12:49:32 +0100 [thread overview]
Message-ID: <20240328114932.GC51940@pevik> (raw)
In-Reply-To: <20240327034923.30987-2-wegao@suse.com>
Hi Wei,
> --- /dev/null
> +++ b/lib/newlib_tests/test_macros07.c
> @@ -0,0 +1,61 @@
> +// SPDX-License-Identifier: GPL-2.0-or-later
> +/*
> + * Copyright (c) 2024 Wei Gao <wegao@suse.com>
> + */
> +
> +/*
> + * Test TST_EXP_FAIL_PTR_{NULL,VOID} and TST_EXP_FAIL_PTR_ARR{NULL,VOID} macro.
> + */
> +
> +#include "tst_test.h"
> +
> +static char *fail_fn_null(void)
> +{
> + errno = EINVAL;
> + return NULL;
> +}
> +
> +static char *fail_fn_void(void)
> +{
> + errno = EINVAL;
> + return (void *)-1;
> +}
> +
> +static char *pass_fn(void)
> +{
> + return "pass";
> +}
> +
> +static void do_test(void)
> +{
> + const int exp_errs_pass[] = {ENOTTY, EINVAL};
> + const int exp_errs_fail[] = {ENOTTY, EISDIR};
> +
> + tst_res(TINFO, "Testing TST_EXP_FAIL_PTR_NULL macro");
> + TST_EXP_FAIL_PTR_NULL(fail_fn_null(), EINVAL, "fail_fn_null()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_NULL(fail_fn_null(), ENOTTY, "fail_fn_null()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_NULL(pass_fn(), ENOTTY, "pass_fn()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_ARR_NULL(fail_fn_null(), exp_errs_pass, "fail_fn_null()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_ARR_NULL(fail_fn_null(), exp_errs_fail, "fail_fn()_null");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> +
> + tst_res(TINFO, "Testing TST_EXP_FAIL_PTR_VOID macro");
> + TST_EXP_FAIL_PTR_VOID(fail_fn_void(), EINVAL, "fail_fn_void()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_VOID(fail_fn_void(), ENOTTY, "fail_fn_void()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_VOID(pass_fn(), ENOTTY, "pass_fn()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_ARR_VOID(fail_fn_void(), exp_errs_pass, "fail_fn_void()");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> + TST_EXP_FAIL_PTR_ARR_VOID(fail_fn_void(), exp_errs_fail, "fail_fn()_void");
> + tst_res(TINFO, "TST_PASS = %i", TST_PASS);
> +}
> +
> +static struct tst_test test = {
> + .test_all = do_test,
> +};
How about extend test_macros02.c (add testing macro, renaming functions to avoid clash,
add inval_ret_fn_char() which was missing in your version):
static int fail_fn(void)
{
errno = EINVAL;
return -1;
}
static int pass_fn(void)
{
return 0;
}
static int inval_ret_fn(void)
{
return 42;
}
static char *fail_fn_null(void)
{
errno = EINVAL;
return NULL;
}
static char *fail_fn_void(void)
{
errno = EINVAL;
return (void *)-1;
}
static char *inval_ret_fn_char(void)
{
return (void *)-1;
}
static char *pass_fn_char(void)
{
return "pass";
}
#define TEST_MACRO(macro, macro_arr, fail_fn, pass_fn, inval_fn) \
do { \
tst_res(TINFO, "Testing macro macro"); \
macro(fail_fn(), EINVAL, "fail_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
macro(fail_fn(), ENOTTY, "fail_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
macro(pass_fn(), ENOTTY, "pass_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
macro(inval_fn(), ENOTTY, "inval_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
macro_arr(fail_fn(), exp_errs_pass, "fail_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
macro_arr(fail_fn(), exp_errs_fail, "fail_fn()"); \
tst_res(TINFO, "TST_PASS = %i", TST_PASS); \
} while (0)
static void do_test(void)
{
const int exp_errs_pass[] = {ENOTTY, EINVAL};
const int exp_errs_fail[] = {ENOTTY, EISDIR};
TEST_MACRO(TST_EXP_FAIL, TST_EXP_FAIL_ARR, fail_fn, pass_fn, inval_ret_fn);
TEST_MACRO(TST_EXP_FAIL2, TST_EXP_FAIL2_ARR, fail_fn, pass_fn, inval_ret_fn);
TEST_MACRO(TST_EXP_FAIL_PTR_NULL, TST_EXP_FAIL_PTR_ARR_NULL, fail_fn_null,
pass_fn_char, inval_ret_fn_char);
TEST_MACRO(TST_EXP_FAIL_PTR_VOID, TST_EXP_FAIL_PTR_ARR_VOID, fail_fn_void,
pass_fn_char, inval_ret_fn_char);
}
static struct tst_test test = {
.test_all = do_test,
};
--
Mailing list info: https://lists.linux.it/listinfo/ltp
next prev parent reply other threads:[~2024-03-28 11:50 UTC|newest]
Thread overview: 40+ messages / expand[flat|nested] mbox.gz Atom feed top
2024-01-11 1:26 [LTP] [PATCH v1] Add TST_EXP_FAIL_PTR Wei Gao via ltp
2024-01-16 17:49 ` Petr Vorel
2024-01-17 8:07 ` Wei Gao via ltp
2024-01-17 8:04 ` [LTP] [PATCH v2] " Wei Gao via ltp
2024-01-17 9:49 ` Petr Vorel
2024-01-30 12:21 ` Petr Vorel
2024-01-17 12:52 ` [LTP] [PATCH v3 0/2] lib: TST_EXP_FAIL_PTR Wei Gao via ltp
2024-01-17 12:52 ` [LTP] [PATCH v3 1/2] " Wei Gao via ltp
2024-01-23 8:45 ` Petr Vorel
2024-01-23 10:41 ` Cyril Hrubis
2024-01-30 12:20 ` Petr Vorel
2024-01-17 12:52 ` [LTP] [PATCH v3 2/2] getcwd01: Implement .test_variants Wei Gao via ltp
2024-01-23 9:45 ` Petr Vorel
2024-02-08 1:32 ` [LTP] [PATCH v4 0/3] lib: TST_EXP_{FAIL,PASS}_PTR_{NULL,VOID} Wei Gao via ltp
2024-02-08 1:32 ` [LTP] [PATCH v4 1/3] " Wei Gao via ltp
2024-03-20 10:47 ` Petr Vorel
2024-03-26 10:54 ` Cyril Hrubis
2024-02-08 1:32 ` [LTP] [PATCH v4 2/3] shmat02.c: Use TST_EXP_FAIL_PTR_VOID Wei Gao via ltp
2024-03-20 10:47 ` Petr Vorel
2024-02-08 1:32 ` [LTP] [PATCH v4 3/3] realpath01.c: use TST_EXP_FAIL_PTR_NULL Wei Gao via ltp
2024-03-20 10:47 ` Petr Vorel
2024-03-27 3:49 ` [LTP] [PATCH v5 0/3] lib: TST_EXP_{FAIL,PASS}_PTR_{NULL,VOID} Wei Gao via ltp
2024-03-27 3:49 ` [LTP] [PATCH v5 1/3] " Wei Gao via ltp
2024-03-28 11:29 ` Petr Vorel
2024-03-28 11:49 ` Petr Vorel [this message]
2024-03-28 11:57 ` Petr Vorel
2024-03-28 12:11 ` Petr Vorel
2024-03-27 3:49 ` [LTP] [PATCH v5 2/3] shmat02.c: Use TST_EXP_FAIL_PTR_VOID Wei Gao via ltp
2024-03-27 3:49 ` [LTP] [PATCH v5 3/3] realpath01.c: use TST_EXP_FAIL_PTR_NULL Wei Gao via ltp
2024-04-03 3:28 ` [LTP] [PATCH v6 0/3] lib: TST_EXP_{FAIL,PASS}_PTR_{NULL,VOID} Wei Gao via ltp
2024-04-03 3:28 ` [LTP] [PATCH v6 1/3] " Wei Gao via ltp
2024-04-04 13:51 ` Cyril Hrubis
2024-04-04 16:01 ` Petr Vorel
2024-04-05 8:53 ` Cyril Hrubis
2024-04-05 10:28 ` Petr Vorel
2024-04-05 11:23 ` Cyril Hrubis
2024-04-05 14:03 ` Petr Vorel
2024-04-07 23:31 ` Wei Gao via ltp
2024-04-03 3:28 ` [LTP] [PATCH v6 2/3] shmat02.c: Use TST_EXP_FAIL_PTR_VOID Wei Gao via ltp
2024-04-03 3:28 ` [LTP] [PATCH v6 3/3] realpath01.c: use TST_EXP_FAIL_PTR_NULL Wei Gao via ltp
Reply instructions:
You may reply publicly to this message via plain-text email
using any one of the following methods:
* Save the following mbox file, import it into your mail client,
and reply-to-all from there: mbox
Avoid top-posting and favor interleaved quoting:
https://en.wikipedia.org/wiki/Posting_style#Interleaved_style
* Reply using the --to, --cc, and --in-reply-to
switches of git-send-email(1):
git send-email \
--in-reply-to=20240328114932.GC51940@pevik \
--to=pvorel@suse.cz \
--cc=ltp@lists.linux.it \
--cc=wegao@suse.com \
/path/to/YOUR_REPLY
https://kernel.org/pub/software/scm/git/docs/git-send-email.html
* If your mail client supports setting the In-Reply-To header
via mailto: links, try the mailto: link
Be sure your reply has a Subject: header at the top and a blank line
before the message body.
This is an external index of several public inboxes,
see mirroring instructions on how to clone and mirror
all data and code used by this external index.