Re: [PATCH 7/8] t: introduce compatibility options to clar-based tests
- From
Toon Claes <toon@iotcl.com>
- Date
- Dec 13, 2024, 10:00 UTC
- Message-ID
- <878qsjj412.fsf@iotcl.com>
- In-Reply-To
- <20241211-pks-meson-ci-v1-7-28d18b494374@pks.im>
Patrick Steinhardt <ps@pks.im> writes:
Show 50 quoted lines
> 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`?
-- Toon