test: add runner support for a global setup/teardown func

Part-of: <https://gitlab.freedesktop.org/libinput/libinput/-/merge_requests/1067>
This commit is contained in:
Peter Hutterer 2024-10-16 18:31:35 +10:00 committed by Marge Bot
parent 1fd3cefc60
commit b21fd3cfe7
2 changed files with 31 additions and 0 deletions

View file

@ -95,6 +95,12 @@ struct litest_runner {
time_t end;
uint64_t start_millis;
} times;
struct {
litest_runner_global_setup_func_t setup;
litest_runner_global_teardown_func_t teardown;
void *userdata;
} global;
};
@ -735,6 +741,17 @@ litest_runner_set_exit_on_fail(struct litest_runner *runner, bool do_exit)
runner->exit_on_fail = do_exit;
}
void
litest_runner_set_setup_funcs(struct litest_runner *runner,
litest_runner_global_setup_func_t setup,
litest_runner_global_teardown_func_t teardown,
void *userdata)
{
runner->global.setup = setup;
runner->global.teardown = teardown;
runner->global.userdata = userdata;
}
void
litest_runner_add_test(struct litest_runner *runner,
const struct litest_runner_test_description *desc)
@ -825,6 +842,9 @@ litest_runner_run_tests(struct litest_runner *runner)
global_runner = runner; /* sigh, need this for signal handling */
if (runner->global.setup)
runner->global.setup(runner->global.userdata);
setup_sighandler(SIGINT);
uint64_t now = 0;
@ -878,6 +898,8 @@ litest_runner_run_tests(struct litest_runner *runner)
litest_runner_check_finished_tests(runner);
}
if (runner->global.teardown)
runner->global.teardown(runner->global.userdata);
size_t npass = 0, nfail = 0, nskip = 0, nna = 0;
size_t ncomplete = 0;

View file

@ -82,4 +82,13 @@ void litest_runner_add_test(struct litest_runner *runner,
const struct litest_runner_test_description *t);
enum litest_runner_result litest_runner_run_tests(struct litest_runner *runner);
typedef enum litest_runner_result (*litest_runner_global_setup_func_t)(void *userdata);
typedef void (*litest_runner_global_teardown_func_t)(void *userdata);
void
litest_runner_set_setup_funcs(struct litest_runner *runner,
litest_runner_global_setup_func_t setup,
litest_runner_global_teardown_func_t teardown,
void *userdata);
void litest_runner_destroy(struct litest_runner *runner);