From 35108a216ebc06fb34e8dcfd5082bc9fc2e80417 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Wed, 28 Nov 2012 19:35:26 +0100 Subject: [PATCH 1/2] Fix MSVC compilation warning --- tests-clar/network/fetch.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/tests-clar/network/fetch.c b/tests-clar/network/fetch.c index 81a0eed25..b80222f56 100644 --- a/tests-clar/network/fetch.c +++ b/tests-clar/network/fetch.c @@ -33,7 +33,7 @@ static void progress(const git_transfer_progress *stats, void *payload) *bytes_received = stats->received_bytes; } -static void do_fetch(const char *url, int flag, int n) +static void do_fetch(const char *url, git_remote_autotag_option_t flag, int n) { git_remote *remote; git_remote_callbacks callbacks; From 046a1573ffa2188ef23b535115bc6035960a71e0 Mon Sep 17 00:00:00 2001 From: nulltoken Date: Sat, 24 Nov 2012 19:05:39 +0100 Subject: [PATCH 2/2] fetch: enhance test coverage --- tests-clar/network/fetch.c | 33 +++++++++++++++++++++++++++++++++ 1 file changed, 33 insertions(+) diff --git a/tests-clar/network/fetch.c b/tests-clar/network/fetch.c index b80222f56..b9eaedf43 100644 --- a/tests-clar/network/fetch.c +++ b/tests-clar/network/fetch.c @@ -75,3 +75,36 @@ void test_network_fetch__no_tags_http(void) { do_fetch("http://github.com/libgit2/TestGitRepository.git", GIT_REMOTE_DOWNLOAD_TAGS_NONE, 3); } + +static void transferProgressCallback(const git_transfer_progress *stats, void *payload) +{ + bool *invoked = (bool *)payload; + *invoked = true; +} + +void test_network_fetch__doesnt_retrieve_a_pack_when_the_repository_is_up_to_date(void) +{ + git_repository *_repository; + git_remote *remote; + bool invoked = false; + + cl_git_pass(git_clone_bare(&_repository, "https://github.com/libgit2/TestGitRepository.git", "./fetch/lg2", NULL, NULL)); + git_repository_free(_repository); + + cl_git_pass(git_repository_open(&_repository, "./fetch/lg2")); + + cl_git_pass(git_remote_load(&remote, _repository, "origin")); + cl_git_pass(git_remote_connect(remote, GIT_DIRECTION_FETCH)); + + cl_assert_equal_i(false, invoked); + + cl_git_pass(git_remote_download(remote, &transferProgressCallback, &invoked)); + + cl_assert_equal_i(false, invoked); + + cl_git_pass(git_remote_update_tips(remote)); + git_remote_disconnect(remote); + + git_remote_free(remote); + git_repository_free(_repository); +}