summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSebastian Bauer <mail@sebastianbauer.info>2013-01-17 22:27:04 +0100
committerSebastian Bauer <mail@sebastianbauer.info>2013-01-17 22:32:37 +0100
commitb90eb84ff9fc092d48954247c4b1019f09ca72c7 (patch)
treee1e8482fb0f6193c9f8db0839dec08f56ba0452c
parent9bf56c7b1cee1b0ed88bd327609250f4f34314c7 (diff)
downloadlibgit2-b90eb84ff9fc092d48954247c4b1019f09ca72c7.tar.gz
Test that pushs properly fail for transports that don't provide a push implementation.
-rw-r--r--tests-clar/network/remotes.c21
1 files changed, 21 insertions, 0 deletions
diff --git a/tests-clar/network/remotes.c b/tests-clar/network/remotes.c
index e947ffe93..9be18baea 100644
--- a/tests-clar/network/remotes.c
+++ b/tests-clar/network/remotes.c
@@ -60,6 +60,27 @@ void test_network_remotes__pushurl(void)
cl_assert(git_remote_pushurl(_remote) == NULL);
}
+void test_network_remotes__error_when_no_push_available(void)
+{
+ git_remote *r;
+ git_transport *t;
+ git_push *p;
+
+ cl_git_pass(git_remote_create_inmemory(&r, _repo, NULL, cl_fixture("testrepo.git")));
+
+ cl_git_pass(git_transport_local(&t,r,NULL));
+
+ /* Make sure that push is really not available */
+ t->push = NULL;
+ cl_git_pass(git_remote_connect(r, GIT_DIRECTION_PUSH));
+ cl_git_pass(git_push_new(&p, r));
+ cl_git_pass(git_push_add_refspec(p, "refs/heads/master"));
+ cl_git_fail_with(git_push_finish(p), GIT_ERROR);
+
+ git_push_free(p);
+ git_remote_free(r);
+}
+
void test_network_remotes__parsing_ssh_remote(void)
{
cl_assert( git_remote_valid_url("git@github.com:libgit2/libgit2.git") );