unit-tests: Pass test iteration to fixtures

This commit is contained in:
Tobias Brunner 2020-04-24 14:45:21 +02:00
parent 31e6ca78df
commit 4334f61284
2 changed files with 9 additions and 9 deletions

View File

@ -215,7 +215,7 @@ static bool run_test(test_function_t *tfun, int i)
/**
* Invoke fixture setup/teardown
*/
static bool call_fixture(test_case_t *tcase, bool up)
static bool call_fixture(test_case_t *tcase, bool up, int i)
{
enumerator_t *enumerator;
test_fixture_t *fixture;
@ -230,14 +230,14 @@ static bool call_fixture(test_case_t *tcase, bool up)
{
if (fixture->setup)
{
fixture->setup();
fixture->setup(i);
}
}
else
{
if (fixture->teardown)
{
fixture->teardown();
fixture->teardown(i);
}
}
}
@ -519,18 +519,18 @@ static bool run_case(test_case_t *tcase, test_runner_init_t init, char *cfg)
test_setup_timeout(tcase->timeout);
start_timing(&start);
if (call_fixture(tcase, TRUE))
if (call_fixture(tcase, TRUE, i))
{
if (run_test(tfun, i))
{
if (call_fixture(tcase, FALSE))
if (call_fixture(tcase, FALSE, i))
{
ok = TRUE;
}
}
else
{
call_fixture(tcase, FALSE);
call_fixture(tcase, FALSE, i);
}
}
if (!post_test(init, ok, failures, tfun->name, i, &leaks))

View File

@ -51,7 +51,7 @@ typedef void (*test_function_cb_t)(int);
/**
* Fixture for a test case.
*/
typedef void (*test_fixture_cb_t)(void);
typedef void (*test_fixture_cb_t)(int);
/**
* A test suite; a collection of test cases with fixtures
@ -388,9 +388,9 @@ void test_fail_if_worker_failed();
#define suite_add_tcase test_suite_add_case
#define START_TEST(name) static void name (int _i) {
#define END_TEST test_fail_if_worker_failed(); }
#define START_SETUP(name) static void name() {
#define START_SETUP(name) static void name(int _i) {
#define END_SETUP test_fail_if_worker_failed(); }
#define START_TEARDOWN(name) static void name() {
#define START_TEARDOWN(name) static void name(int _i) {
#define END_TEARDOWN test_fail_if_worker_failed(); }
#endif /** TEST_SUITE_H_ @}*/