Skip to content

Commit

Permalink
t: introduce compatibility options to clar-based tests
Browse files Browse the repository at this point in the history
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 are way stricter here and will
fail in case they are passed an unknown option. Stub out these options
with no-ops to make our life easier.

Signed-off-by: Patrick Steinhardt <[email protected]>
  • Loading branch information
pks-t committed Dec 4, 2024
1 parent 6867def commit a543d2c
Show file tree
Hide file tree
Showing 2 changed files with 29 additions and 1 deletion.
12 changes: 12 additions & 0 deletions parse-options.h
Original file line number Diff line number Diff line change
Expand Up @@ -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), \
Expand Down
18 changes: 17 additions & 1 deletion t/unit-tests/unit-test.c
Original file line number Diff line number Diff line change
Expand Up @@ -18,8 +18,24 @@ 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, "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;
Expand Down

0 comments on commit a543d2c

Please sign in to comment.