Message ID | 20240425020308.25367-2-wegao@suse.com |
---|---|
State | New |
Headers | show |
Series | lib: Add TST_EXP_PASS_PTR_{NULL,VOID} macros | expand |
Hi Wei, > Signed-off-by: Wei Gao <wegao@suse.com> > --- > include/tst_test_macros.h | 45 +++++++++++++++++++++++++++++++++------ > 1 file changed, 39 insertions(+), 6 deletions(-) > diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h > index 22b39fb14..1fb133dd3 100644 > --- a/include/tst_test_macros.h > +++ b/include/tst_test_macros.h > @@ -178,6 +178,28 @@ extern void *TST_RET_PTR; > \ > } while (0) > +#define TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) \ > + do { \ > + TESTPTR(SCALL); \ > + \ > + TST_PASS = 0; \ > + \ > + if (TST_RET_PTR == FAIL_PTR_VAL) { \ > + TST_MSG_(TFAIL | TTERRNO, " failed", \ > + SSCALL, ##__VA_ARGS__); \ > + break; \ > + } \ > + \ > + if (TST_RET != 0) { \ > + TST_MSGP_(TFAIL | TTERRNO, " invalid retval %ld", \ > + TST_RET, SSCALL, ##__VA_ARGS__); \ > + break; \ > + } \ > + \ > + TST_PASS = 1; \ > + \ > + } while (0) > + > #define TST_EXP_PASS_SILENT(SCALL, ...) TST_EXP_PASS_SILENT_(SCALL, #SCALL, ##__VA_ARGS__) > #define TST_EXP_PASS(SCALL, ...) \ > @@ -188,6 +210,21 @@ extern void *TST_RET_PTR; > TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ > } while (0) \ > +#define TST_EXP_PASS_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) \ > + do { \ > + TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, \ > + FAIL_PTR_VAL, ##__VA_ARGS__); \ > + \ > + if (TST_PASS) \ > + TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ > + } while (0) > + > +#define TST_EXP_PASS_PTR_NULL(SCALL, ...) \ > + TST_EXP_PASS_PTR_(SCALL, #SCALL, NULL, ##__VA_ARGS__); I'm still not sure whether add TST_EXP_PASS_PTR_NULL, which is not used. I wonder what others think (it can be removed before merge). > + > +#define TST_EXP_PASS_PTR_VOID(SCALL, ...) \ > + TST_EXP_PASS_PTR_(SCALL, #SCALL, (void *)-1, ##__VA_ARGS__); > + > /* > * Returns true if err is in the exp_err array. > */ > @@ -301,10 +338,8 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); > } while (0) > #define TST_EXP_FAIL_PTR_NULL_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ > - do { \ > TST_EXP_FAIL_PTR_(SCALL, #SCALL, NULL, \ > - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ > - } while (0) > + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); +1 > #define TST_EXP_FAIL_PTR_VOID(SCALL, EXP_ERR, ...) \ > do { \ > @@ -314,10 +349,8 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); > } while (0) > #define TST_EXP_FAIL_PTR_VOID_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ > - do { \ > TST_EXP_FAIL_PTR_(SCALL, #SCALL, (void *)-1, \ > - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ > - } while (0) > + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); +1 Reviewed-by: Petr Vorel <pvorel@suse.cz> Kind regards, Petr > #define TST_EXP_FAIL2(SCALL, EXP_ERR, ...) \ > do { \
On Thursday, April 25, 2024 1:40:13 PM GMT+2 Petr Vorel wrote: > Hi Wei, > > > Signed-off-by: Wei Gao <wegao@suse.com> > > --- > > > > include/tst_test_macros.h | 45 +++++++++++++++++++++++++++++++++------ > > 1 file changed, 39 insertions(+), 6 deletions(-) > > > > diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h > > index 22b39fb14..1fb133dd3 100644 > > --- a/include/tst_test_macros.h > > +++ b/include/tst_test_macros.h > > @@ -178,6 +178,28 @@ extern void *TST_RET_PTR; > > > > \ > > > > } while (0) > > > > +#define TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) > > \ + do { > > \ + TESTPTR(SCALL); > > \ + \ > > + TST_PASS = 0; \ + > > \ + if > > (TST_RET_PTR == FAIL_PTR_VAL) { \ > > + TST_MSG_(TFAIL | TTERRNO, " failed", \ > > + SSCALL, ##__VA_ARGS__); \ > > + break; \ > > + } \ > > + \ > > + if (TST_RET != 0) { \ > > + TST_MSGP_(TFAIL | TTERRNO, " invalid retval %ld", \ > > + TST_RET, SSCALL, ##__VA_ARGS__); \ > > + break; \ > > + } \ > > + > > \ + TST_PASS = 1; > > \ + > > \ + } while (0) > > + > > > > #define TST_EXP_PASS_SILENT(SCALL, ...) TST_EXP_PASS_SILENT_(SCALL, > > #SCALL, ##__VA_ARGS__) > > > > #define TST_EXP_PASS(SCALL, ...) > > \> > > @@ -188,6 +210,21 @@ extern void *TST_RET_PTR; > > > > TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ > > > > } while (0) \ > > > > +#define TST_EXP_PASS_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) > > \ + do { > > \ + TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, > > \ + FAIL_PTR_VAL, ##__VA_ARGS__); \ > > + \ > > + if (TST_PASS) \ > > + TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ > > + } while (0) > > + > > +#define TST_EXP_PASS_PTR_NULL(SCALL, ...) > > \ + TST_EXP_PASS_PTR_(SCALL, #SCALL, NULL, > > ##__VA_ARGS__); > I'm still not sure whether add TST_EXP_PASS_PTR_NULL, which is not used. > I wonder what others think (it can be removed before merge). I too think we should add this macro only with another patch where it is being used. Also, I want to mention I find these macro names a little bit confusing. We have TST_EXP_FAIL_PTR_VOID(), which expects a syscall to fail and return (void *) -1. so maybe we should name TST_EXP_PASS_PTR_NONVOID() for expecting a syscall to pass and return any pointer value != (void *) -1. If it is just me confused with these names, please disregard this comment. > > > + > > +#define TST_EXP_PASS_PTR_VOID(SCALL, ...) > > \ + TST_EXP_PASS_PTR_(SCALL, #SCALL, (void *)-1, > > ##__VA_ARGS__); + > > > > /* > > > > * Returns true if err is in the exp_err array. > > */ > > > > @@ -301,10 +338,8 @@ const char *tst_errno_names(char *buf, const int > > *exp_errs, int exp_errs_cnt);> > > } while (0) > > > > #define TST_EXP_FAIL_PTR_NULL_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) > > \> > > - do { \ > > > > TST_EXP_FAIL_PTR_(SCALL, #SCALL, NULL, \ > > > > - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ > > - } while (0) > > + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); > > +1 > > > #define TST_EXP_FAIL_PTR_VOID(SCALL, EXP_ERR, ...) > > \> > > do { \ > > > > @@ -314,10 +349,8 @@ const char *tst_errno_names(char *buf, const int > > *exp_errs, int exp_errs_cnt);> > > } while (0) > > > > #define TST_EXP_FAIL_PTR_VOID_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) > > \> > > - do { \ > > > > TST_EXP_FAIL_PTR_(SCALL, #SCALL, (void *)-1, \ > > > > - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ > > - } while (0) > > + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); > > +1 > > Reviewed-by: Petr Vorel <pvorel@suse.cz> > > Kind regards, > Petr > > > #define TST_EXP_FAIL2(SCALL, EXP_ERR, ...) > > \> > > do { \ Regards, Avinesh
diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h index 22b39fb14..1fb133dd3 100644 --- a/include/tst_test_macros.h +++ b/include/tst_test_macros.h @@ -178,6 +178,28 @@ extern void *TST_RET_PTR; \ } while (0) +#define TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) \ + do { \ + TESTPTR(SCALL); \ + \ + TST_PASS = 0; \ + \ + if (TST_RET_PTR == FAIL_PTR_VAL) { \ + TST_MSG_(TFAIL | TTERRNO, " failed", \ + SSCALL, ##__VA_ARGS__); \ + break; \ + } \ + \ + if (TST_RET != 0) { \ + TST_MSGP_(TFAIL | TTERRNO, " invalid retval %ld", \ + TST_RET, SSCALL, ##__VA_ARGS__); \ + break; \ + } \ + \ + TST_PASS = 1; \ + \ + } while (0) + #define TST_EXP_PASS_SILENT(SCALL, ...) TST_EXP_PASS_SILENT_(SCALL, #SCALL, ##__VA_ARGS__) #define TST_EXP_PASS(SCALL, ...) \ @@ -188,6 +210,21 @@ extern void *TST_RET_PTR; TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ } while (0) \ +#define TST_EXP_PASS_PTR_(SCALL, SSCALL, FAIL_PTR_VAL, ...) \ + do { \ + TST_EXP_PASS_SILENT_PTR_(SCALL, SSCALL, \ + FAIL_PTR_VAL, ##__VA_ARGS__); \ + \ + if (TST_PASS) \ + TST_MSG_(TPASS, " passed", #SCALL, ##__VA_ARGS__); \ + } while (0) + +#define TST_EXP_PASS_PTR_NULL(SCALL, ...) \ + TST_EXP_PASS_PTR_(SCALL, #SCALL, NULL, ##__VA_ARGS__); + +#define TST_EXP_PASS_PTR_VOID(SCALL, ...) \ + TST_EXP_PASS_PTR_(SCALL, #SCALL, (void *)-1, ##__VA_ARGS__); + /* * Returns true if err is in the exp_err array. */ @@ -301,10 +338,8 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } while (0) #define TST_EXP_FAIL_PTR_NULL_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ - do { \ TST_EXP_FAIL_PTR_(SCALL, #SCALL, NULL, \ - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ - } while (0) + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); #define TST_EXP_FAIL_PTR_VOID(SCALL, EXP_ERR, ...) \ do { \ @@ -314,10 +349,8 @@ const char *tst_errno_names(char *buf, const int *exp_errs, int exp_errs_cnt); } while (0) #define TST_EXP_FAIL_PTR_VOID_ARR(SCALL, EXP_ERRS, EXP_ERRS_CNT, ...) \ - do { \ TST_EXP_FAIL_PTR_(SCALL, #SCALL, (void *)-1, \ - EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); \ - } while (0) + EXP_ERRS, EXP_ERRS_CNT, ##__VA_ARGS__); #define TST_EXP_FAIL2(SCALL, EXP_ERR, ...) \ do { \
Signed-off-by: Wei Gao <wegao@suse.com> --- include/tst_test_macros.h | 45 +++++++++++++++++++++++++++++++++------ 1 file changed, 39 insertions(+), 6 deletions(-)