mirror of
https://git.proxmox.com/git/libgit2
synced 2025-05-02 19:32:23 +00:00
Local fetch: add tests
This commit is contained in:
parent
505da062b8
commit
11fabe73a0
103
tests-clar/network/fetchlocal.c
Normal file
103
tests-clar/network/fetchlocal.c
Normal file
@ -0,0 +1,103 @@
|
||||
#include "clar_libgit2.h"
|
||||
|
||||
#include "buffer.h"
|
||||
#include "path.h"
|
||||
#include "remote.h"
|
||||
|
||||
static void build_local_file_url(git_buf *out, const char *fixture)
|
||||
{
|
||||
const char *in_buf;
|
||||
|
||||
git_buf path_buf = GIT_BUF_INIT;
|
||||
|
||||
cl_git_pass(git_path_prettify_dir(&path_buf, fixture, NULL));
|
||||
cl_git_pass(git_buf_puts(out, "file://"));
|
||||
|
||||
#ifdef _MSC_VER
|
||||
/*
|
||||
* A FILE uri matches the following format: file://[host]/path
|
||||
* where "host" can be empty and "path" is an absolute path to the resource.
|
||||
*
|
||||
* In this test, no hostname is used, but we have to ensure the leading triple slashes:
|
||||
*
|
||||
* *nix: file:///usr/home/...
|
||||
* Windows: file:///C:/Users/...
|
||||
*/
|
||||
cl_git_pass(git_buf_putc(out, '/'));
|
||||
#endif
|
||||
|
||||
in_buf = git_buf_cstr(&path_buf);
|
||||
|
||||
/*
|
||||
* A very hacky Url encoding that only takes care of escaping the spaces
|
||||
*/
|
||||
while (*in_buf) {
|
||||
if (*in_buf == ' ')
|
||||
cl_git_pass(git_buf_puts(out, "%20"));
|
||||
else
|
||||
cl_git_pass(git_buf_putc(out, *in_buf));
|
||||
|
||||
in_buf++;
|
||||
}
|
||||
|
||||
git_buf_free(&path_buf);
|
||||
}
|
||||
|
||||
static void transfer_cb(const git_transfer_progress *stats, void *payload)
|
||||
{
|
||||
int *callcount = (int*)payload;
|
||||
GIT_UNUSED(stats);
|
||||
(*callcount)++;
|
||||
}
|
||||
|
||||
void test_network_fetchlocal__complete(void)
|
||||
{
|
||||
git_buf url = GIT_BUF_INIT;
|
||||
git_repository *repo;
|
||||
git_remote *origin;
|
||||
int callcount = 0;
|
||||
git_strarray refnames = {0};
|
||||
|
||||
build_local_file_url(&url, cl_fixture("testrepo.git"));
|
||||
cl_git_pass(git_repository_init(&repo, "foo", true));
|
||||
|
||||
cl_git_pass(git_remote_add(&origin, repo, GIT_REMOTE_ORIGIN, git_buf_cstr(&url)));
|
||||
cl_git_pass(git_remote_connect(origin, GIT_DIR_FETCH));
|
||||
cl_git_pass(git_remote_download(origin, transfer_cb, &callcount));
|
||||
cl_git_pass(git_remote_update_tips(origin));
|
||||
|
||||
cl_git_pass(git_reference_list(&refnames, repo, GIT_REF_LISTALL));
|
||||
cl_assert_equal_i(18, refnames.count);
|
||||
cl_assert(callcount > 0);
|
||||
|
||||
git_strarray_free(&refnames);
|
||||
git_remote_free(origin);
|
||||
git_repository_free(repo);
|
||||
}
|
||||
|
||||
void test_network_fetchlocal__partial(void)
|
||||
{
|
||||
git_repository *repo = cl_git_sandbox_init("partial-testrepo");
|
||||
git_buf url = GIT_BUF_INIT;
|
||||
git_remote *origin;
|
||||
int callcount = 0;
|
||||
git_strarray refnames = {0};
|
||||
|
||||
cl_git_pass(git_reference_list(&refnames, repo, GIT_REF_LISTALL));
|
||||
cl_assert_equal_i(1, refnames.count);
|
||||
|
||||
build_local_file_url(&url, cl_fixture("testrepo.git"));
|
||||
cl_git_pass(git_remote_add(&origin, repo, GIT_REMOTE_ORIGIN, git_buf_cstr(&url)));
|
||||
cl_git_pass(git_remote_connect(origin, GIT_DIR_FETCH));
|
||||
cl_git_pass(git_remote_download(origin, transfer_cb, &callcount));
|
||||
cl_git_pass(git_remote_update_tips(origin));
|
||||
|
||||
cl_git_pass(git_reference_list(&refnames, repo, GIT_REF_LISTALL));
|
||||
cl_assert_equal_i(19, refnames.count); /* 18 remote + 1 local */
|
||||
cl_assert(callcount > 0);
|
||||
|
||||
git_strarray_free(&refnames);
|
||||
git_remote_free(origin);
|
||||
|
||||
cl_git_sandbox_cleanup();
|
||||
}
|
1
tests-clar/resources/partial-testrepo/.gitted/HEAD
Normal file
1
tests-clar/resources/partial-testrepo/.gitted/HEAD
Normal file
@ -0,0 +1 @@
|
||||
ref: refs/heads/dir
|
7
tests-clar/resources/partial-testrepo/.gitted/config
Normal file
7
tests-clar/resources/partial-testrepo/.gitted/config
Normal file
@ -0,0 +1,7 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = false
|
||||
logallrefupdates = true
|
||||
ignorecase = true
|
||||
[branch "dir"]
|
BIN
tests-clar/resources/partial-testrepo/.gitted/index
Normal file
BIN
tests-clar/resources/partial-testrepo/.gitted/index
Normal file
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
x<01>ŽQ
|
||||
Â0DýÎ)öÊ6›Í¦ "xO°‰‰-ØFb¼¿EoàÏ0¼Ç¤º,ske×[ÎPn8R,EpD?±gŸ}Ê^3²âÙ<µåµGŽhYKÄèÒ8ЖDA<44>É)¿ÉÈ;gôݧÚàšjïp™4ÕŽ¯ô-çû¢óã<C3B3>êr‚ÁŠ;°s°GA4Ûº=ìùÖ(ôin7øIÌKÍFE
|
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
xťŽŰ 1EýNi@™Ék2 "X‚$ŮYW0Yc˙íŔżĂ…s¸ĄŐzďÚÚőMDĎ€0ćś8!¶†ÉĚŢs‰XŠŞgÚdí::@X0»P˘wŮ"F/‰‰śÍRŕ<>Uz÷ĄmúZZďú˛¤ŇV}|•/śo5݇ŇęIŁ!¬1z Ć:vůÇUim}ę/˘>
|
||||
öF-
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
x<01><>[
|
||||
Т0E§Ю*fЪфеЄ "ИW0<57><30>-иFтtџн<><EFBFBD>чpS[<5B>YР<59>x<EFBFBD>^
|
||||
Dэb CLhutЩ<18>}Ѕ8X*4ZэЌsYНЈ<D09D>UР<55>AУж
ЬX3<>RЋMЕЖ) s6шМЂMІжс<D0B6><D181>м&Jm<4A>ѓ;}ЧѕБаќ<ЅЖ\@<40>р<EFBFBD>бо<D0B1>pФ<70>ЈvК?<3F>ђ<EFBFBD>ЋjлКL№ЋЈи?Hх
|
@ -0,0 +1,2 @@
|
||||
xťŹ;j1DëťmdÓú·Ŕ<C2B7>ÇŽ|M«µ3`ŤŚV{>€łâQŻ ¸·vL0I?Í!š4–Z=Ę! צ8˛F˘Ă’!rÖsQßyČ9<C48C>]$DŽ&„l6AÇ>jFWüҵIKNiűë§Z˘%ˇS<>Ś‘
|
||||
‹Ň Ĺʉř<E280B0>U~Ě˝řä>'Ľď™ű Żwţ
×[ËÇ×÷öÚDGÚˇ±đŚQ-şMůŹ«>dܶ‘OŢáŇň}í\ŕ8g_ШÂoYr
|
Binary file not shown.
Binary file not shown.
@ -0,0 +1,3 @@
|
||||
x<01>ŽQ
|
||||
Â0DýÎ)öʦ»I<‚'ØlR+˜Fj¼¿EoàÏ0<xÃh«õÞa Üõµ]È™åXUlÞPF)Åz‘4yó”µ,\r 'SÂÄ-mI4
|
||||
‘Xhô”&òÌFÞ}n+\µõ—Y´-p|é·œoUî<55>ƒ¶z;-<2D>‘a<E28098>Ñlt{ØË?®I«,:ÃoÚR̳cHK
|
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
Binary file not shown.
@ -0,0 +1 @@
|
||||
144344043ba4d4a405da03de3844aa829ae8be0e
|
Loading…
Reference in New Issue
Block a user