#include "clar_libgit2.h" static const char *refspec = "refs/heads/first-merge:refs/remotes/origin/first-merge"; static int remote_single_branch(git_remote **out, git_repository *repo, const char *name, const char *url, void *payload) { GIT_UNUSED(payload); cl_git_pass(git_remote_create_with_fetchspec(out, repo, name, url, refspec)); return 0; } void test_online_remotes__single_branch(void) { git_clone_options opts = GIT_CLONE_OPTIONS_INIT; git_repository *repo; git_remote *remote; git_strarray refs; size_t i, count = 0; opts.remote_cb = remote_single_branch; opts.checkout_branch = "first-merge"; cl_git_pass(git_clone(&repo, "git://github.com/libgit2/TestGitRepository", "./single-branch", &opts)); cl_git_pass(git_reference_list(&refs, repo)); for (i = 0; i < refs.count; i++) { if (!git__prefixcmp(refs.strings[i], "refs/heads/")) count++; } cl_assert_equal_i(1, count); git_strarray_free(&refs); cl_git_pass(git_remote_lookup(&remote, repo, "origin")); cl_git_pass(git_remote_get_fetch_refspecs(&refs, remote)); cl_assert_equal_i(1, refs.count); cl_assert_equal_s(refspec, refs.strings[0]); git_strarray_free(&refs); git_remote_free(remote); git_repository_free(repo); } void test_online_remotes__restricted_refspecs(void) { git_clone_options opts = GIT_CLONE_OPTIONS_INIT; git_repository *repo; opts.remote_cb = remote_single_branch; cl_git_fail_with(GIT_EINVALIDSPEC, git_clone(&repo, "git://github.com/libgit2/TestGitRepository", "./restrict-refspec", &opts)); }