tests: harness: add AtLeastVersion, ExactVersion and MaxVersion options

Signed-off-by: Ariadne Conill <ariadne@ariadne.space>
This commit is contained in:
Ariadne Conill 2026-01-18 21:29:06 -08:00
parent 4a49b50e3b
commit e574c85325

View File

@ -66,6 +66,10 @@ typedef struct test_case_ {
pkgconf_list_t define_variables;
int verbosity;
pkgconf_buffer_t atleast_version;
pkgconf_buffer_t exact_version;
pkgconf_buffer_t max_version;
} pkgconf_test_case_t;
typedef struct test_state_ {
@ -456,14 +460,17 @@ test_keyword_set_environment(pkgconf_test_case_t *testcase, const char *keyword,
}
static const pkgconf_test_keyword_pair_t test_keyword_pairs[] = {
{"AtLeastVersion", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, atleast_version)},
{"DefineVariable", test_keyword_extend_bufferset, offsetof(pkgconf_test_case_t, define_variables)},
{"Environment", test_keyword_set_environment, offsetof(pkgconf_test_case_t, env_vars)},
{"ExactVersion", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, exact_version)},
{"ExpectedExitCode", test_keyword_set_int, offsetof(pkgconf_test_case_t, exitcode)},
{"ExpectedStderr", test_keyword_extend_bufferset, offsetof(pkgconf_test_case_t, expected_stderr)},
{"ExpectedStdout", test_keyword_extend_bufferset, offsetof(pkgconf_test_case_t, expected_stdout)},
{"FragmentFilter", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, fragment_filter)},
{"MatchStderr", test_keyword_set_match_strategy, offsetof(pkgconf_test_case_t, match_stderr)},
{"MatchStdout", test_keyword_set_match_strategy, offsetof(pkgconf_test_case_t, match_stdout)},
{"MaxVersion", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, max_version)},
{"PackageSearchPath", test_keyword_set_path_list, offsetof(pkgconf_test_case_t, search_path)},
{"Query", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, query)},
{"SkipPlatforms", test_keyword_set_buffer, offsetof(pkgconf_test_case_t, skip_platforms)},
@ -704,6 +711,9 @@ run_test_case(const pkgconf_test_case_t *testcase)
.cli_state.want_env_prefix = pkgconf_buffer_str(&testcase->want_env_prefix),
.cli_state.want_variable = pkgconf_buffer_str(&testcase->want_variable),
.cli_state.want_fragment_filter = pkgconf_buffer_str(&testcase->fragment_filter),
.cli_state.required_module_version = pkgconf_buffer_str(&testcase->atleast_version),
.cli_state.required_exact_module_version = pkgconf_buffer_str(&testcase->exact_version),
.cli_state.required_max_module_version = pkgconf_buffer_str(&testcase->max_version),
.cli_state.verbosity = testcase->verbosity,
.testcase = testcase,
};
@ -791,6 +801,9 @@ free_test_case(pkgconf_test_case_t *testcase)
pkgconf_buffer_finalize(&testcase->want_variable);
pkgconf_buffer_finalize(&testcase->fragment_filter);
pkgconf_buffer_finalize(&testcase->skip_platforms);
pkgconf_buffer_finalize(&testcase->atleast_version);
pkgconf_buffer_finalize(&testcase->exact_version);
pkgconf_buffer_finalize(&testcase->max_version);
free(testcase->name);
free(testcase);