#include "clar_libgit2.h" void test_core_init__returns_count(void) { /* libgit2_clar initializes us first, so we have an existing * initialization. */ cl_assert_equal_i(2, git_libgit2_init()); cl_assert_equal_i(3, git_libgit2_init()); cl_assert_equal_i(2, git_libgit2_shutdown()); cl_assert_equal_i(1, git_libgit2_shutdown()); } void test_core_init__reinit_succeeds(void) { cl_assert_equal_i(0, git_libgit2_shutdown()); cl_assert_equal_i(1, git_libgit2_init()); cl_sandbox_set_search_path_defaults(); } #ifdef GIT_THREADS static void *reinit(void *unused) { unsigned i; for (i = 0; i < 20; i++) { cl_assert(git_libgit2_init() > 0); cl_assert(git_libgit2_shutdown() >= 0); } return unused; } #endif void test_core_init__concurrent_init_succeeds(void) { #ifdef GIT_THREADS git_thread threads[10]; unsigned i; cl_assert_equal_i(2, git_libgit2_init()); for (i = 0; i < ARRAY_SIZE(threads); i++) git_thread_create(&threads[i], reinit, NULL); for (i = 0; i < ARRAY_SIZE(threads); i++) git_thread_join(&threads[i], NULL); cl_assert_equal_i(1, git_libgit2_shutdown()); cl_sandbox_set_search_path_defaults(); #else cl_skip(); #endif }