Message ID | 20241211-pks-meson-ci-v1-7-28d18b494374@pks.im (mailing list archive) |
---|---|
State | Superseded |
Headers | show |
Series | ci: wire up support for Meson | expand |
Patrick Steinhardt <ps@pks.im> writes: > Our unit tests that don't yet use the clar unit testing framework ignore > any option that they do not understand. It is thus fine to just pass > test options we set up globally to those unit tests as they are simply > ignored. This makes our life easier because we don't have to special > case those options with Meson, where test options are set up globally > via `meson test --test-args=`. > > But our clar-based unit testing framework is way stricter here and will > fail in case it is passed an unknown option. Stub out these options with > no-ops to make our life a bit easier. > > Signed-off-by: Patrick Steinhardt <ps@pks.im> > --- > parse-options.h | 12 ++++++++++++ > t/unit-tests/unit-test.c | 19 ++++++++++++++++++- > 2 files changed, 30 insertions(+), 1 deletion(-) > > diff --git a/parse-options.h b/parse-options.h > index f0801d4532a175b65783689f2a68fb56da2c8e87..d01361ca97fd7227a0005b5c447d954fea472ca0 100644 > --- a/parse-options.h > +++ b/parse-options.h > @@ -353,6 +353,18 @@ struct option { > .callback = parse_opt_noop_cb, \ > } > > +static char *parse_options_noop_ignored_value MAYBE_UNUSED; > +#define OPT_NOOP_ARG(s, l) { \ > + .type = OPTION_CALLBACK, \ > + .short_name = (s), \ > + .long_name = (l), \ > + .value = &parse_options_noop_ignored_value, \ > + .argh = "ignored", \ > + .help = N_("no-op (backward compatibility)"), \ > + .flags = PARSE_OPT_HIDDEN, \ > + .callback = parse_opt_noop_cb, \ > +} > + > #define OPT_ALIAS(s, l, source_long_name) { \ > .type = OPTION_ALIAS, \ > .short_name = (s), \ > diff --git a/t/unit-tests/unit-test.c b/t/unit-tests/unit-test.c > index a474cdcfd351d9d624178a769329252237f951b7..fa8818842a42478c7a8fa6f6ecbee0777bdf472f 100644 > --- a/t/unit-tests/unit-test.c > +++ b/t/unit-tests/unit-test.c > @@ -18,8 +18,25 @@ int cmd_main(int argc, const char **argv) > N_("immediately exit upon the first failed test")), > OPT_STRING_LIST('r', "run", &run_args, N_("suite[::test]"), > N_("run only test suite or individual test <suite[::test]>")), > - OPT_STRING_LIST('x', "exclude", &exclude_args, N_("suite"), > + OPT_STRING_LIST(0, "exclude", &exclude_args, N_("suite"), Could you please explain in the commit message why it's safe to unassign `-x` from `--exclude`?
diff --git a/parse-options.h b/parse-options.h index f0801d4532a175b65783689f2a68fb56da2c8e87..d01361ca97fd7227a0005b5c447d954fea472ca0 100644 --- a/parse-options.h +++ b/parse-options.h @@ -353,6 +353,18 @@ struct option { .callback = parse_opt_noop_cb, \ } +static char *parse_options_noop_ignored_value MAYBE_UNUSED; +#define OPT_NOOP_ARG(s, l) { \ + .type = OPTION_CALLBACK, \ + .short_name = (s), \ + .long_name = (l), \ + .value = &parse_options_noop_ignored_value, \ + .argh = "ignored", \ + .help = N_("no-op (backward compatibility)"), \ + .flags = PARSE_OPT_HIDDEN, \ + .callback = parse_opt_noop_cb, \ +} + #define OPT_ALIAS(s, l, source_long_name) { \ .type = OPTION_ALIAS, \ .short_name = (s), \ diff --git a/t/unit-tests/unit-test.c b/t/unit-tests/unit-test.c index a474cdcfd351d9d624178a769329252237f951b7..fa8818842a42478c7a8fa6f6ecbee0777bdf472f 100644 --- a/t/unit-tests/unit-test.c +++ b/t/unit-tests/unit-test.c @@ -18,8 +18,25 @@ int cmd_main(int argc, const char **argv) N_("immediately exit upon the first failed test")), OPT_STRING_LIST('r', "run", &run_args, N_("suite[::test]"), N_("run only test suite or individual test <suite[::test]>")), - OPT_STRING_LIST('x', "exclude", &exclude_args, N_("suite"), + OPT_STRING_LIST(0, "exclude", &exclude_args, N_("suite"), N_("exclude test suite <suite>")), + /* + * Compatibility wrappers so that we don't have to filter + * options understood by integration tests. + */ + OPT_NOOP_NOARG('d', "debug"), + OPT_NOOP_NOARG(0, "github-workflow-markup"), + OPT_NOOP_NOARG(0, "no-bin-wrappers"), + OPT_NOOP_ARG(0, "root"), + OPT_NOOP_ARG(0, "stress"), + OPT_NOOP_NOARG(0, "tee"), + OPT_NOOP_NOARG(0, "with-dashes"), + OPT_NOOP_ARG(0, "valgrind"), + OPT_NOOP_ARG(0, "valgrind-only"), + OPT_NOOP_NOARG('v', "verbose"), + OPT_NOOP_NOARG('V', "verbose-log"), + OPT_NOOP_ARG(0, "verbose-only"), + OPT_NOOP_NOARG('x', NULL), OPT_END(), }; struct strvec args = STRVEC_INIT;
Our unit tests that don't yet use the clar unit testing framework ignore any option that they do not understand. It is thus fine to just pass test options we set up globally to those unit tests as they are simply ignored. This makes our life easier because we don't have to special case those options with Meson, where test options are set up globally via `meson test --test-args=`. But our clar-based unit testing framework is way stricter here and will fail in case it is passed an unknown option. Stub out these options with no-ops to make our life a bit easier. Signed-off-by: Patrick Steinhardt <ps@pks.im> --- parse-options.h | 12 ++++++++++++ t/unit-tests/unit-test.c | 19 ++++++++++++++++++- 2 files changed, 30 insertions(+), 1 deletion(-)