Blame tests/core/init.c

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