unit-tests: Pass test iteration to fixtures

This commit is contained in:
Tobias Brunner
2020-07-20 13:50:11 +02:00
parent 31e6ca78df
commit 4334f61284
2 changed files with 9 additions and 9 deletions
+6 -6
View File
@@ -215,7 +215,7 @@ static bool run_test(test_function_t *tfun, int i)
/** /**
* Invoke fixture setup/teardown * 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; enumerator_t *enumerator;
test_fixture_t *fixture; test_fixture_t *fixture;
@@ -230,14 +230,14 @@ static bool call_fixture(test_case_t *tcase, bool up)
{ {
if (fixture->setup) if (fixture->setup)
{ {
fixture->setup(); fixture->setup(i);
} }
} }
else else
{ {
if (fixture->teardown) 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); test_setup_timeout(tcase->timeout);
start_timing(&start); start_timing(&start);
if (call_fixture(tcase, TRUE)) if (call_fixture(tcase, TRUE, i))
{ {
if (run_test(tfun, i)) if (run_test(tfun, i))
{ {
if (call_fixture(tcase, FALSE)) if (call_fixture(tcase, FALSE, i))
{ {
ok = TRUE; ok = TRUE;
} }
} }
else else
{ {
call_fixture(tcase, FALSE); call_fixture(tcase, FALSE, i);
} }
} }
if (!post_test(init, ok, failures, tfun->name, i, &leaks)) if (!post_test(init, ok, failures, tfun->name, i, &leaks))
+3 -3
View File
@@ -51,7 +51,7 @@ typedef void (*test_function_cb_t)(int);
/** /**
* Fixture for a test case. * 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 * 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 suite_add_tcase test_suite_add_case
#define START_TEST(name) static void name (int _i) { #define START_TEST(name) static void name (int _i) {
#define END_TEST test_fail_if_worker_failed(); } #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 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(); } #define END_TEARDOWN test_fail_if_worker_failed(); }
#endif /** TEST_SUITE_H_ @}*/ #endif /** TEST_SUITE_H_ @}*/