summaryrefslogtreecommitdiff
path: root/tests-clar/network
diff options
context:
space:
mode:
authorCarlos Martín Nieto <cmn@dwim.me>2013-04-28 16:26:55 +0200
committerCarlos Martín Nieto <cmn@dwim.me>2013-04-28 18:49:51 +0200
commitd84884571d04d609ed5f3508aecd9e24b84f47c7 (patch)
treee0250fb1184a1e85eac83004d310ace7a6e4774c /tests-clar/network
parent528a4e24c6671d621847cf8e3121e3c56fe20d3b (diff)
downloadlibgit2-d84884571d04d609ed5f3508aecd9e24b84f47c7.tar.gz
remote: dwim the refspecs according to the remote's advertised refs
As git allows you to store shorthand refspecs in the configuration, we need to do this ourselves.
Diffstat (limited to 'tests-clar/network')
-rw-r--r--tests-clar/network/remote/local.c41
1 files changed, 41 insertions, 0 deletions
diff --git a/tests-clar/network/remote/local.c b/tests-clar/network/remote/local.c
index 7e847e654..74ef63dc9 100644
--- a/tests-clar/network/remote/local.c
+++ b/tests-clar/network/remote/local.c
@@ -100,3 +100,44 @@ void test_network_remote_local__nested_tags_are_completely_peeled(void)
cl_git_pass(git_remote_ls(remote, &ensure_peeled__cb, NULL));
}
+
+void test_network_remote_local__shorthand_fetch_refspec0(void)
+{
+ const char *refspec = "master:remotes/sloppy/master";
+ const char *refspec2 = "master:boh/sloppy/master";
+
+ git_reference *ref;
+
+ connect_to_local_repository(cl_fixture("testrepo.git"));
+ cl_git_pass(git_remote_add_fetch(remote, refspec));
+ cl_git_pass(git_remote_add_fetch(remote, refspec2));
+
+ cl_git_pass(git_remote_download(remote, NULL, NULL));
+ cl_git_pass(git_remote_update_tips(remote));
+
+ cl_git_pass(git_reference_lookup(&ref, repo, "refs/remotes/sloppy/master"));
+ git_reference_free(ref);
+
+ cl_git_pass(git_reference_lookup(&ref, repo, "refs/heads/boh/sloppy/master"));
+ git_reference_free(ref);
+}
+
+void test_network_remote_local__shorthand_fetch_refspec1(void)
+{
+ const char *refspec = "master";
+ const char *refspec2 = "hard_tag";
+
+ git_reference *ref;
+
+ connect_to_local_repository(cl_fixture("testrepo.git"));
+ git_remote_clear_refspecs(remote);
+ cl_git_pass(git_remote_add_fetch(remote, refspec));
+ cl_git_pass(git_remote_add_fetch(remote, refspec2));
+
+ cl_git_pass(git_remote_download(remote, NULL, NULL));
+ cl_git_pass(git_remote_update_tips(remote));
+
+ cl_git_fail(git_reference_lookup(&ref, repo, "refs/remotes/master"));
+
+ cl_git_fail(git_reference_lookup(&ref, repo, "refs/tags/hard_tag"));
+}