Files
git/t/unit-tests/unit-test.c
Seyi Kuforiji a16a2ee312 t/unit-tests: implement clar specific oid helper functions
`get_oid_arbitrary_hex()` and `init_hash_algo()` are both required for
oid-related tests to run without errors. In the current implementation,
both functions are defined and declared in the
`t/unit-tests/lib-oid.{c,h}` which is utilized by oid-related tests in
the homegrown unit tests structure.

Adapt functions in lib-oid.{c,h} to use clar. Both these functions
become available for oid-related test files implemented using the clar
testing framework, which requires them. This will be used by subsequent
commits.

Mentored-by: Patrick Steinhardt <ps@pks.im>
Signed-off-by: Seyi Kuforiji <kuforiji98@gmail.com>
Signed-off-by: Junio C Hamano <gitster@pobox.com>
2025-02-25 10:31:22 -08:00

67 lines
1.9 KiB
C

#include "unit-test.h"
#include "hex.h"
#include "parse-options.h"
#include "strbuf.h"
#include "string-list.h"
#include "strvec.h"
static const char * const unit_test_usage[] = {
N_("unit-test [<options>]"),
NULL,
};
int cmd_main(int argc, const char **argv)
{
struct string_list run_args = STRING_LIST_INIT_NODUP;
struct string_list exclude_args = STRING_LIST_INIT_NODUP;
int immediate = 0;
struct option options[] = {
OPT_BOOL('i', "immediate", &immediate,
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(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;
int ret;
argc = parse_options(argc, argv, NULL, options,
unit_test_usage, PARSE_OPT_KEEP_ARGV0);
if (argc > 1)
usagef(_("extra command line parameter '%s'"), argv[0]);
strvec_push(&args, argv[0]);
strvec_push(&args, "-t");
if (immediate)
strvec_push(&args, "-Q");
for (size_t i = 0; i < run_args.nr; i++)
strvec_pushf(&args, "-s%s", run_args.items[i].string);
for (size_t i = 0; i < exclude_args.nr; i++)
strvec_pushf(&args, "-x%s", exclude_args.items[i].string);
ret = clar_test(args.nr, (char **) args.v);
string_list_clear(&run_args, 0);
strvec_clear(&args);
return ret;
}