libgit2/tests-clar/network/remotes.c
Carlos Martín Nieto 279afd2a51 refspec: a ref name includes the refs/ prefix
git_refspec_transform_r assumed that the reference name passed would
be only a branch or tag name. This is not the case, and we need to
take into consideration what's in the refspec's source to know how
much of the prefix to ignore.
2012-01-31 17:29:53 +01:00

61 lines
1.6 KiB
C

#include "clar_libgit2.h"
#include "buffer.h"
#include "refspec.h"
static git_remote *_remote;
static git_repository *_repo;
static const git_refspec *_refspec;
void test_network_remotes__initialize(void)
{
cl_fixture_sandbox("testrepo.git");
cl_git_pass(git_repository_open(&_repo, "testrepo.git"));
cl_git_pass(git_remote_load(&_remote, _repo, "test"));
_refspec = git_remote_fetchspec(_remote);
cl_assert(_refspec != NULL);
}
void test_network_remotes__cleanup(void)
{
git_remote_free(_remote);
git_repository_free(_repo);
cl_fixture_cleanup("testrepo.git");
}
void test_network_remotes__parsing(void)
{
cl_assert(!strcmp(git_remote_name(_remote), "test"));
cl_assert(!strcmp(git_remote_url(_remote), "git://github.com/libgit2/libgit2"));
}
void test_network_remotes__refspec_parsing(void)
{
cl_assert(!strcmp(git_refspec_src(_refspec), "refs/heads/*"));
cl_assert(!strcmp(git_refspec_dst(_refspec), "refs/remotes/test/*"));
}
void test_network_remotes__fnmatch(void)
{
cl_git_pass(git_refspec_src_match(_refspec, "refs/heads/master"));
cl_git_pass(git_refspec_src_match(_refspec, "refs/heads/multi/level/branch"));
}
void test_network_remotes__transform(void)
{
char ref[1024];
memset(ref, 0x0, sizeof(ref));
cl_git_pass(git_refspec_transform(ref, sizeof(ref), _refspec, "refs/heads/master"));
cl_assert(!strcmp(ref, "refs/remotes/test/master"));
}
void test_network_remotes__transform_r(void)
{
git_buf buf = GIT_BUF_INIT;
cl_git_pass(git_refspec_transform_r(&buf, _refspec, "refs/heads/master"));
cl_assert(!strcmp(git_buf_cstr(&buf), "refs/remotes/test/master"));
}