From 65415ea275306ebe0de2bdde6f15b639fa90e470 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Wed, 10 Oct 2012 10:34:26 -0700 Subject: [PATCH 1/2] Tests: add "network" category Split the clone tests into network and no-network suites. --- tests-clar/clone/network.c | 74 +++++++++++++++++++++++ tests-clar/clone/{clone.c => nonetwork.c} | 72 ++-------------------- 2 files changed, 80 insertions(+), 66 deletions(-) create mode 100644 tests-clar/clone/network.c rename tests-clar/clone/{clone.c => nonetwork.c} (56%) diff --git a/tests-clar/clone/network.c b/tests-clar/clone/network.c new file mode 100644 index 000000000..8e353413d --- /dev/null +++ b/tests-clar/clone/network.c @@ -0,0 +1,74 @@ +#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); +} diff --git a/tests-clar/clone/clone.c b/tests-clar/clone/nonetwork.c similarity index 56% rename from tests-clar/clone/clone.c rename to tests-clar/clone/nonetwork.c index 42ddb8ae6..8e909cc53 100644 --- a/tests-clar/clone/clone.c +++ b/tests-clar/clone/nonetwork.c @@ -4,14 +4,11 @@ #include "repository.h" #define DO_LOCAL_TEST 0 -#define DO_LIVE_NETWORK_TESTS 0 #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_clone__initialize(void) +void test_clone_nonetwork__initialize(void) { g_repo = NULL; } @@ -63,7 +60,7 @@ static void build_local_file_url(git_buf *out, const char *fixture) 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 */ 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) 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; build_local_file_url(&src, cl_fixture("testrepo.git")); @@ -86,7 +83,7 @@ void test_clone_clone__local(void) git_buf_free(&src); } -void test_clone_clone__local_bare(void) +void test_clone_nonetwork__local_bare(void) { git_buf src = GIT_BUF_INIT; build_local_file_url(&src, cl_fixture("testrepo.git")); @@ -100,44 +97,7 @@ void test_clone_clone__local_bare(void) git_buf_free(&src); } -void test_clone_clone__network_full(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) +void test_clone_nonetwork__fail_when_the_target_is_a_file(void) { cl_set_cleanup(&cleanup_repository, "./foo"); @@ -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)); } -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"); @@ -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_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 -} From 86a2da6e8add86075db164662d2ec435c75ede56 Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Wed, 10 Oct 2012 15:10:07 -0700 Subject: [PATCH 2/2] Clone: use libgit2's test repos --- tests-clar/clone/network.c | 4 ++-- tests-clar/clone/nonetwork.c | 2 +- 2 files changed, 3 insertions(+), 3 deletions(-) diff --git a/tests-clar/clone/network.c b/tests-clar/clone/network.c index 8e353413d..cf3c73bb6 100644 --- a/tests-clar/clone/network.c +++ b/tests-clar/clone/network.c @@ -5,8 +5,8 @@ CL_IN_CATEGORY("network") -#define LIVE_REPO_URL "git://github.com/nulltoken/TestGitRepository" -#define LIVE_EMPTYREPO_URL "git://github.com/nulltoken/TestEmptyRepository" +#define LIVE_REPO_URL "git://github.com/libgit2/TestGitRepository" +#define LIVE_EMPTYREPO_URL "git://github.com/libgit2/TestEmptyRepository" static git_repository *g_repo; diff --git a/tests-clar/clone/nonetwork.c b/tests-clar/clone/nonetwork.c index 8e909cc53..81f95b9b3 100644 --- a/tests-clar/clone/nonetwork.c +++ b/tests-clar/clone/nonetwork.c @@ -4,7 +4,7 @@ #include "repository.h" #define DO_LOCAL_TEST 0 -#define LIVE_REPO_URL "git://github.com/nulltoken/TestGitRepository" +#define LIVE_REPO_URL "git://github.com/libgit2/TestGitRepository" static git_repository *g_repo;