diff --git a/tests/clar.c b/tests/clar.c index 535424130..8e538f56a 100644 --- a/tests/clar.c +++ b/tests/clar.c @@ -353,8 +353,8 @@ clar_parse_args(int argc, char **argv) } } -int -clar_test(int argc, char **argv) +void +clar_test_init(int argc, char **argv) { clar_print_init( (int)_clar_callback_count, @@ -369,13 +369,23 @@ clar_test(int argc, char **argv) if (argc > 1) clar_parse_args(argc, argv); +} +int +clar_test_run() +{ if (!_clar.suites_ran) { size_t i; for (i = 0; i < _clar_suite_count; ++i) clar_run_suite(&_clar_suites[i], NULL); } + return _clar.total_errors; +} + +void +clar_test_shutdown() +{ clar_print_shutdown( _clar.tests_ran, (int)_clar_suite_count, @@ -383,7 +393,18 @@ clar_test(int argc, char **argv) ); clar_unsandbox(); - return _clar.total_errors; +} + +int +clar_test(int argc, char **argv) +{ + int errors; + + clar_test_init(argc, argv); + errors = clar_test_run(); + clar_test_shutdown(); + + return errors; } void clar__fail( diff --git a/tests/clar.h b/tests/clar.h index 87ff6d967..81263051d 100644 --- a/tests/clar.h +++ b/tests/clar.h @@ -9,8 +9,14 @@ #include +void clar_test_init(int argc, char *argv[]); +int clar_test_run(void); +void clar_test_shutdown(void); + int clar_test(int argc, char *argv[]); +const char *clar_sandbox_path(void); + void cl_set_cleanup(void (*cleanup)(void *), void *opaque); void cl_fs_cleanup(void); diff --git a/tests/clar/sandbox.h b/tests/clar/sandbox.h index ee7564148..a44e29116 100644 --- a/tests/clar/sandbox.h +++ b/tests/clar/sandbox.h @@ -127,3 +127,8 @@ static int clar_sandbox(void) return 0; } +const char *clar_sandbox_path(void) +{ + return _clar_path; +} +