Commit 65415ea2 by Ben Straub

Tests: add "network" category

Split the clone tests into network and no-network suites.
parent 7ae5ab56
#include "clar_libgit2.h"
#include "git2/clone.h"
#include "repository.h"
CL_IN_CATEGORY("network")
#define LIVE_REPO_URL "git://github.com/nulltoken/TestGitRepository"
#define LIVE_EMPTYREPO_URL "git://github.com/nulltoken/TestEmptyRepository"
static git_repository *g_repo;
void test_clone_network__initialize(void)
{
g_repo = NULL;
}
static void cleanup_repository(void *path)
{
if (g_repo)
git_repository_free(g_repo);
cl_fixture_cleanup((const char *)path);
}
void test_clone_network__network_full(void)
{
git_remote *origin;
cl_set_cleanup(&cleanup_repository, "./test2");
cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./test2", NULL, NULL, NULL));
cl_assert(!git_repository_is_bare(g_repo));
cl_git_pass(git_remote_load(&origin, g_repo, "origin"));
}
void test_clone_network__network_bare(void)
{
git_remote *origin;
cl_set_cleanup(&cleanup_repository, "./test");
cl_git_pass(git_clone_bare(&g_repo, LIVE_REPO_URL, "./test", NULL));
cl_assert(git_repository_is_bare(g_repo));
cl_git_pass(git_remote_load(&origin, g_repo, "origin"));
}
void test_clone_network__cope_with_already_existing_directory(void)
{
cl_set_cleanup(&cleanup_repository, "./foo");
p_mkdir("./foo", GIT_DIR_MODE);
cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
git_repository_free(g_repo); g_repo = NULL;
}
void test_clone_network__empty_repository(void)
{
git_reference *head;
cl_set_cleanup(&cleanup_repository, "./empty");
cl_git_pass(git_clone(&g_repo, LIVE_EMPTYREPO_URL, "./empty", NULL, NULL, NULL));
cl_assert_equal_i(true, git_repository_is_empty(g_repo));
cl_assert_equal_i(true, git_repository_head_orphan(g_repo));
cl_git_pass(git_reference_lookup(&head, g_repo, GIT_HEAD_FILE));
cl_assert_equal_i(GIT_REF_SYMBOLIC, git_reference_type(head));
cl_assert_equal_s("refs/heads/master", git_reference_target(head));
git_reference_free(head);
}
...@@ -4,14 +4,11 @@ ...@@ -4,14 +4,11 @@
#include "repository.h" #include "repository.h"
#define DO_LOCAL_TEST 0 #define DO_LOCAL_TEST 0
#define DO_LIVE_NETWORK_TESTS 0
#define LIVE_REPO_URL "git://github.com/nulltoken/TestGitRepository" #define LIVE_REPO_URL "git://github.com/nulltoken/TestGitRepository"
#define LIVE_EMPTYREPO_URL "git://github.com/nulltoken/TestEmptyRepository"
static git_repository *g_repo; static git_repository *g_repo;
void test_clone_clone__initialize(void) void test_clone_nonetwork__initialize(void)
{ {
g_repo = NULL; g_repo = NULL;
} }
...@@ -63,7 +60,7 @@ static void build_local_file_url(git_buf *out, const char *fixture) ...@@ -63,7 +60,7 @@ static void build_local_file_url(git_buf *out, const char *fixture)
git_buf_free(&path_buf); git_buf_free(&path_buf);
} }
void test_clone_clone__bad_url(void) void test_clone_nonetwork__bad_url(void)
{ {
/* Clone should clean up the mess if the URL isn't a git repository */ /* Clone should clean up the mess if the URL isn't a git repository */
cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", NULL, NULL, NULL)); cl_git_fail(git_clone(&g_repo, "not_a_repo", "./foo", NULL, NULL, NULL));
...@@ -72,7 +69,7 @@ void test_clone_clone__bad_url(void) ...@@ -72,7 +69,7 @@ void test_clone_clone__bad_url(void)
cl_assert(!git_path_exists("./foo.git")); cl_assert(!git_path_exists("./foo.git"));
} }
void test_clone_clone__local(void) void test_clone_nonetwork__local(void)
{ {
git_buf src = GIT_BUF_INIT; git_buf src = GIT_BUF_INIT;
build_local_file_url(&src, cl_fixture("testrepo.git")); build_local_file_url(&src, cl_fixture("testrepo.git"));
...@@ -86,7 +83,7 @@ void test_clone_clone__local(void) ...@@ -86,7 +83,7 @@ void test_clone_clone__local(void)
git_buf_free(&src); git_buf_free(&src);
} }
void test_clone_clone__local_bare(void) void test_clone_nonetwork__local_bare(void)
{ {
git_buf src = GIT_BUF_INIT; git_buf src = GIT_BUF_INIT;
build_local_file_url(&src, cl_fixture("testrepo.git")); build_local_file_url(&src, cl_fixture("testrepo.git"));
...@@ -100,44 +97,7 @@ void test_clone_clone__local_bare(void) ...@@ -100,44 +97,7 @@ void test_clone_clone__local_bare(void)
git_buf_free(&src); git_buf_free(&src);
} }
void test_clone_clone__network_full(void) void test_clone_nonetwork__fail_when_the_target_is_a_file(void)
{
#if DO_LIVE_NETWORK_TESTS
git_remote *origin;
cl_set_cleanup(&cleanup_repository, "./test2");
cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./test2", NULL, NULL, NULL));
cl_assert(!git_repository_is_bare(g_repo));
cl_git_pass(git_remote_load(&origin, g_repo, "origin"));
#endif
}
void test_clone_clone__network_bare(void)
{
#if DO_LIVE_NETWORK_TESTS
git_remote *origin;
cl_set_cleanup(&cleanup_repository, "./test");
cl_git_pass(git_clone_bare(&g_repo, LIVE_REPO_URL, "./test", NULL));
cl_assert(git_repository_is_bare(g_repo));
cl_git_pass(git_remote_load(&origin, g_repo, "origin"));
#endif
}
void test_clone_clone__cope_with_already_existing_directory(void)
{
#if DO_LIVE_NETWORK_TESTS
cl_set_cleanup(&cleanup_repository, "./foo");
p_mkdir("./foo", GIT_DIR_MODE);
cl_git_pass(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
git_repository_free(g_repo); g_repo = NULL;
#endif
}
void test_clone_clone__fail_when_the_target_is_a_file(void)
{ {
cl_set_cleanup(&cleanup_repository, "./foo"); cl_set_cleanup(&cleanup_repository, "./foo");
...@@ -145,7 +105,7 @@ void test_clone_clone__fail_when_the_target_is_a_file(void) ...@@ -145,7 +105,7 @@ void test_clone_clone__fail_when_the_target_is_a_file(void)
cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL)); cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
} }
void test_clone_clone__fail_with_already_existing_but_non_empty_directory(void) void test_clone_nonetwork__fail_with_already_existing_but_non_empty_directory(void)
{ {
cl_set_cleanup(&cleanup_repository, "./foo"); cl_set_cleanup(&cleanup_repository, "./foo");
...@@ -153,23 +113,3 @@ void test_clone_clone__fail_with_already_existing_but_non_empty_directory(void) ...@@ -153,23 +113,3 @@ void test_clone_clone__fail_with_already_existing_but_non_empty_directory(void)
cl_git_mkfile("./foo/bar", "Baz!"); cl_git_mkfile("./foo/bar", "Baz!");
cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL)); cl_git_fail(git_clone(&g_repo, LIVE_REPO_URL, "./foo", NULL, NULL, NULL));
} }
void test_clone_clone__empty_repository(void)
{
#if DO_LIVE_NETWORK_TESTS
git_reference *head;
cl_set_cleanup(&cleanup_repository, "./empty");
cl_git_pass(git_clone(&g_repo, LIVE_EMPTYREPO_URL, "./empty", NULL, NULL, NULL));
cl_assert_equal_i(true, git_repository_is_empty(g_repo));
cl_assert_equal_i(true, git_repository_head_orphan(g_repo));
cl_git_pass(git_reference_lookup(&head, g_repo, GIT_HEAD_FILE));
cl_assert_equal_i(GIT_REF_SYMBOLIC, git_reference_type(head));
cl_assert_equal_s("refs/heads/master", git_reference_target(head));
git_reference_free(head);
#endif
}
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment