Message ID | 20220217142730.19726-1-chrubis@suse.cz |
---|---|
State | Superseded |
Headers | show |
Series | test_macros: TST_EXP_EXPR() add auto stringification | expand |
Hi Cyril,
Reviewed-by: Petr Vorel <pvorel@suse.cz>
Good idea.
BTW I'm thinking to add some comments to "top level" macros.
because it's getting hard to read these macros.
Kind regards,
Petr
Hi! > Reviewed-by: Petr Vorel <pvorel@suse.cz> > Good idea. It occured to me that this is probably not the best result though, since in the case of the failure it does not print the expected and actual value. So maybe it would be better to add TST_EXP_EQ() macro instead. I will send a patch later on. > BTW I'm thinking to add some comments to "top level" macros. > because it's getting hard to read these macros. Well yes, it's getting a bit hard to read indeed.
Hi Cyril, > Hi! > > Reviewed-by: Petr Vorel <pvorel@suse.cz> > > Good idea. > It occured to me that this is probably not the best result though, since > in the case of the failure it does not print the expected and actual > value. So maybe it would be better to add TST_EXP_EQ() macro instead. I > will send a patch later on. I wonder can't we have both - print stringified parameters and also their values? Would it be too confusing? > > BTW I'm thinking to add some comments to "top level" macros. > > because it's getting hard to read these macros. > Well yes, it's getting a bit hard to read indeed. I mean it's good to have documented in our wiki. But even we document all macros most of us will endup reading the header, thus why useful to document at least end user ("top level") macros. Kind regards, Petr
Hi! > > It occured to me that this is probably not the best result though, since > > in the case of the failure it does not print the expected and actual > > value. So maybe it would be better to add TST_EXP_EQ() macro instead. I > > will send a patch later on. > > I wonder can't we have both - print stringified parameters and also their > values? Would it be too confusing? Couldn't be done unless you know the types beforehand. I've send another patch that adds TST_EXP_EQ_*() macros please have a look at that one instead.
diff --git a/include/tst_test_macros.h b/include/tst_test_macros.h index 8893dbf0e..3b3b1b17e 100644 --- a/include/tst_test_macros.h +++ b/include/tst_test_macros.h @@ -211,7 +211,10 @@ extern void *TST_RET_PTR; #define TST_EXP_FAIL2_SILENT(SCALL, ERRNO, ...) \ TST_EXP_FAIL_SILENT_(TST_RET >= 0, SCALL, #SCALL, ERRNO, ##__VA_ARGS__) -#define TST_EXP_EXPR(EXPR, FMT, ...) \ - tst_res_(__FILE__, __LINE__, (EXPR) ? TPASS : TFAIL, "Expect: " FMT, ##__VA_ARGS__); +#define TST_EXP_EXPR_(EXPR, SEXPR, ...) \ + tst_res_(__FILE__, __LINE__, (EXPR) ? TPASS : TFAIL, \ + TST_FMT_("Expect: " TST_2_(dummy, ##__VA_ARGS__, SEXPR), __VA_ARGS__)) + +#define TST_EXP_EXPR(EXPR, ...) TST_EXP_EXPR_(EXPR, #EXPR, ##__VA_ARGS__) #endif /* TST_TEST_MACROS_H__ */
This unifies the behavior with the rest of the TST_EXP_*() macros that auto-stringify their parameters in case that no format string is supplied. It's actually useful in cases where there is clear from the variables what has been asserted such as: static void run(void) { siginfo_t infop; ... TST_EXP_EXPR(infop.si_pid == child_pid); ... } Signed-off-by: Cyril Hrubis <chrubis@suse.cz> --- include/tst_test_macros.h | 7 +++++-- 1 file changed, 5 insertions(+), 2 deletions(-)