summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2014-11-23 21:29:35 +0100
committerCarlos Martín Nieto <cmn@dwim.me>2014-11-23 21:29:35 +0100
commit3fade40e393e1ca74be7f475819fcaecc9f4dc83 (patch)
tree904a9844f4c2377ab36850088654fc1b0f7f5e73
parent52ee0e8e6d187960dfc417f0f506f658caecede9 (diff)
downloadlibgit2-3fade40e393e1ca74be7f475819fcaecc9f4dc83.tar.gz
remote: add test for pushing and deleting with the local transport
-rw-r--r--tests/network/remote/local.c34
1 files changed, 34 insertions, 0 deletions
diff --git a/tests/network/remote/local.c b/tests/network/remote/local.c
index fd755b8c8..1132d95a1 100644
--- a/tests/network/remote/local.c
+++ b/tests/network/remote/local.c
@@ -466,3 +466,37 @@ void test_network_remote_local__update_tips_for_new_remote(void) {
git_repository_free(src_repo);
cl_fixture_cleanup("testrepo.git");
}
+
+void test_network_remote_local__push_delete(void)
+{
+ git_repository *src_repo;
+ git_repository *dst_repo;
+ git_remote *remote;
+ git_reference *ref;
+ char *spec_push[] = { "refs/heads/master" };
+ char *spec_delete[] = { ":refs/heads/master" };
+ git_strarray specs = {
+ spec_push,
+ 1,
+ };
+
+ src_repo = cl_git_sandbox_init("testrepo.git");
+ cl_git_pass(git_repository_init(&dst_repo, "target.git", 1));
+
+ cl_git_pass(git_remote_create(&remote, src_repo, "origin", "./target.git"));
+
+ /* Push the master branch and verify it's there */
+ cl_git_pass(git_remote_push(remote, &specs, NULL, NULL, NULL));
+ cl_git_pass(git_reference_lookup(&ref, dst_repo, "refs/heads/master"));
+ git_reference_free(ref);
+
+ specs.strings = spec_delete;
+ cl_git_pass(git_remote_push(remote, &specs, NULL, NULL, NULL));
+ cl_git_fail(git_reference_lookup(&ref, dst_repo, "refs/heads/master"));
+
+ cl_fixture_cleanup("target.git");
+
+ git_remote_free(remote);
+ git_repository_free(dst_repo);
+ git_repository_free(src_repo);
+}