Blame tests/core/init.c

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