summaryrefslogtreecommitdiff
path: root/tests
diff options
context:
space:
mode:
authorVicent Marti <vicent@github.com>2014-05-22 02:28:42 +0200
committerVicent Marti <vicent@github.com>2014-05-22 02:28:42 +0200
commita598264463442da0013d6e8b6a0c93d075e14d3a (patch)
tree0e92ceda6fb9168525181ce01ed2c70a20429e69 /tests
parent7ee233a9203d09a08e269788ca4877778bc0c489 (diff)
parent2a597116583696486141261a8b459319b513facf (diff)
downloadlibgit2-a598264463442da0013d6e8b6a0c93d075e14d3a.tar.gz
Merge pull request #2376 from libgit2/cmn/remote-symref
Add support for the symref extension
Diffstat (limited to 'tests')
-rw-r--r--tests/network/remote/defaultbranch.c50
-rw-r--r--tests/online/fetch.c18
2 files changed, 68 insertions, 0 deletions
diff --git a/tests/network/remote/defaultbranch.c b/tests/network/remote/defaultbranch.c
new file mode 100644
index 000000000..fa3a329db
--- /dev/null
+++ b/tests/network/remote/defaultbranch.c
@@ -0,0 +1,50 @@
+#include "clar_libgit2.h"
+#include "buffer.h"
+#include "refspec.h"
+#include "remote.h"
+
+static git_remote *g_remote;
+static git_repository *g_repo_a, *g_repo_b;
+
+void test_network_remote_defaultbranch__initialize(void)
+{
+ g_repo_a = cl_git_sandbox_init("testrepo.git");
+ cl_git_pass(git_repository_init(&g_repo_b, "repo-b.git", true));
+ cl_git_pass(git_remote_create(&g_remote, g_repo_b, "origin", git_repository_path(g_repo_a)));
+}
+
+void test_network_remote_defaultbranch__cleanup(void)
+{
+ git_remote_free(g_remote);
+ git_repository_free(g_repo_b);
+
+ cl_git_sandbox_cleanup();
+ cl_fixture_cleanup("repo-b.git");
+}
+
+static void assert_default_branch(const char *should)
+{
+ git_buf name = GIT_BUF_INIT;
+
+ cl_git_pass(git_remote_connect(g_remote, GIT_DIRECTION_FETCH));
+ cl_git_pass(git_remote_default_branch(&name, g_remote));
+ cl_assert_equal_s(should, name.ptr);
+ git_buf_free(&name);
+}
+
+void test_network_remote_defaultbranch__master(void)
+{
+ assert_default_branch("refs/heads/master");
+}
+
+void test_network_remote_defaultbranch__master_does_not_win(void)
+{
+ cl_git_pass(git_repository_set_head(g_repo_a, "refs/heads/not-good", NULL, NULL));
+ assert_default_branch("refs/heads/not-good");
+}
+
+void test_network_remote_defaultbranch__master_on_detached(void)
+{
+ cl_git_pass(git_repository_detach_head(g_repo_a, NULL, NULL));
+ assert_default_branch("refs/heads/master");
+}
diff --git a/tests/online/fetch.c b/tests/online/fetch.c
index c54ec5673..f03a6faa6 100644
--- a/tests/online/fetch.c
+++ b/tests/online/fetch.c
@@ -184,3 +184,21 @@ void test_online_fetch__ls_disconnected(void)
git_remote_free(remote);
}
+
+void test_online_fetch__remote_symrefs(void)
+{
+ const git_remote_head **refs;
+ size_t refs_len;
+ git_remote *remote;
+
+ 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));
+ git_remote_disconnect(remote);
+ cl_git_pass(git_remote_ls(&refs, &refs_len, remote));
+
+ cl_assert_equal_s("HEAD", refs[0]->name);
+ cl_assert_equal_s("refs/heads/master", refs[0]->symref_target);
+
+ git_remote_free(remote);
+}