}
}
-static void run_one_fatal(enum fatal_test_state (*fatal_function)(int))
+static void run_one_fatal(test_fatal_func_t *fatal_function)
{
static int index = 0;
for (;;) {
}
}
}
-static void test_run_fatals(enum fatal_test_state (*fatal_functions[])(int index))
+static void test_run_fatals(test_fatal_func_t *fatal_functions[])
{
unsigned int i;
return test_deinit();
}
int test_run_with_fatals(void (*test_functions[])(void),
- enum fatal_test_state (*fatal_functions[])(int))
+ test_fatal_func_t *fatal_functions[])
{
test_init();
test_run_funcs(test_functions);
FATAL_TEST_FAILURE, /* single stage has failed, continue */
FATAL_TEST_ABORT, /* something's gone horrifically wrong */
};
+/* The fatal function is called first with stage=0. After each call the stage
+ is increased by 1. The idea is that each stage would be running an
+ individual test that is supposed to crash. The function is called until
+ FATAL_TEST_FINISHED or FATAL_TEST_ABORT is returned. */
+typedef enum fatal_test_state test_fatal_func_t(int stage);
+
struct named_fatal {
const char *name;
- enum fatal_test_state (*func)(int);
+ test_fatal_func_t *func;
};
int test_run_with_fatals(void (*test_functions[])(void),
- enum fatal_test_state (*fatal_functions[])(int));
+ test_fatal_func_t *fatal_functions[]);
int test_run_named_with_fatals(const char *match, struct named_test tests[],
struct named_fatal fatals[]);