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; +} + diff --git a/tests/main.c b/tests/main.c index 6b498939d..ffbbcbf48 100644 --- a/tests/main.c +++ b/tests/main.c @@ -6,12 +6,21 @@ int __cdecl main(int argc, char *argv[]) int main(int argc, char *argv[]) #endif { + const char *sandbox_path; int res; + clar_test_init(argc, argv); + git_threads_init(); + sandbox_path = clar_sandbox_path(); + git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_GLOBAL, sandbox_path); + git_libgit2_opts(GIT_OPT_SET_SEARCH_PATH, GIT_CONFIG_LEVEL_XDG, sandbox_path); + /* Run the test suite */ - res = clar_test(argc, argv); + res = clar_test_run(); + + clar_test_shutdown(); giterr_clear(); git_threads_shutdown();