Commit 42385c96d5b6e7382f3cf9663e9789f3c56f9d9d

Ben Straub 2013-02-05T12:10:08

Enhance test coverage for transfer cancellation

diff --git a/tests-clar/online/fetch.c b/tests-clar/online/fetch.c
index d075327..a0ee7aa 100644
--- a/tests-clar/online/fetch.c
+++ b/tests-clar/online/fetch.c
@@ -112,3 +112,25 @@ void test_online_fetch__doesnt_retrieve_a_pack_when_the_repository_is_up_to_date
 	git_remote_free(remote);
 	git_repository_free(_repository);
 }
+
+static int cancel_at_half(const git_transfer_progress *stats, void *payload)
+{
+	GIT_UNUSED(payload);
+
+	if (stats->received_objects > (stats->total_objects/2))
+		return -1;
+	return 0;
+}
+
+void test_online_fetch__can_cancel(void)
+{
+	git_remote *remote;
+	size_t bytes_received = 0;
+
+	cl_git_pass(git_remote_create(&remote, _repo, "test",
+				"http://github.com/libgit2/TestGitRepository.git"));
+	cl_git_pass(git_remote_connect(remote, GIT_DIRECTION_FETCH));
+	cl_git_fail_with(git_remote_download(remote, cancel_at_half, &bytes_received), GIT_EUSER);
+	git_remote_disconnect(remote);
+	git_remote_free(remote);
+}