From 11fabe73a07ba7c5ef4a713d71b3643c9b0970db Mon Sep 17 00:00:00 2001 From: Ben Straub Date: Thu, 8 Nov 2012 20:18:19 -0800 Subject: [PATCH] Local fetch: add tests --- tests-clar/network/fetchlocal.c | 103 ++++++++++++++++++ .../resources/partial-testrepo/.gitted/HEAD | 1 + .../resources/partial-testrepo/.gitted/config | 7 ++ .../resources/partial-testrepo/.gitted/index | Bin 0 -> 328 bytes .../13/85f264afb75a56a5bec74243be9b367ba4ca08 | Bin 0 -> 19 bytes .../14/4344043ba4d4a405da03de3844aa829ae8be0e | Bin 0 -> 163 bytes .../16/8e4ebd1c667499548ae12403b19b22a5c5e925 | Bin 0 -> 147 bytes .../18/1037049a54a1eb5fab404658a3a250b44335d7 | Bin 0 -> 51 bytes .../18/10dff58d8a660512d4832e740f692884338ccd | Bin 0 -> 119 bytes .../45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 | Bin 0 -> 18 bytes .../4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 | 2 + .../4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 | Bin 0 -> 50 bytes .../5b/5b025afb0b4c913b4c338a42934a3863bf3644 | 2 + .../62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc | Bin 0 -> 50 bytes .../66/3adb09143767984f7be83a91effa47e128c735 | Bin 0 -> 19 bytes .../75/057dd4114e74cca1d750d0aee1647c903cb60a | Bin 0 -> 119 bytes .../81/4889a078c031f61ed08ab5fa863aea9314344d | Bin 0 -> 82 bytes .../84/96071c1b46c854b31185ea97743be6a8774479 | Bin 0 -> 126 bytes .../9f/d738e8f7967c078dceed8190330fc8648ee56a | 3 + .../a4/a7dce85cf63874e984719f4fdd239f5145052f | 2 + .../a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd | Bin 0 -> 28 bytes .../a8/233120f6ad708f843d861ce2b7228ec4e3dec6 | Bin 0 -> 26 bytes .../c4/7800c7266a2be04c571c04d5a6614691ea99bd | 3 + .../cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 | Bin 0 -> 162 bytes .../d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 | Bin 0 -> 147 bytes .../f6/0079018b664e4e79329a7ef9559c8d9e0378d1 | Bin 0 -> 82 bytes .../fa/49b077972391ad58037050f2a75f74e3671e92 | Bin 0 -> 24 bytes .../fd/093bff70906175335656e6ce6ae05783708765 | Bin 0 -> 82 bytes .../.gitted/objects/pack/.gitkeep | 0 .../partial-testrepo/.gitted/refs/heads/dir | 1 + 30 files changed, 124 insertions(+) create mode 100644 tests-clar/network/fetchlocal.c create mode 100644 tests-clar/resources/partial-testrepo/.gitted/HEAD create mode 100644 tests-clar/resources/partial-testrepo/.gitted/config create mode 100644 tests-clar/resources/partial-testrepo/.gitted/index create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/14/4344043ba4d4a405da03de3844aa829ae8be0e create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/16/8e4ebd1c667499548ae12403b19b22a5c5e925 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/18/1037049a54a1eb5fab404658a3a250b44335d7 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/18/10dff58d8a660512d4832e740f692884338ccd create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/4a/202b346bb0fb0db7eff3cffeb3c70babbd2045 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/4e/0883eeeeebc1fb1735161cea82f7cb5fab7e63 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/75/057dd4114e74cca1d750d0aee1647c903cb60a create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/c4/7800c7266a2be04c571c04d5a6614691ea99bd create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/cf/80f8de9f1185bf3a05f993f6121880dd0cfbc9 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/d5/2a8fe84ceedf260afe4f0287bbfca04a117e83 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/fd/093bff70906175335656e6ce6ae05783708765 create mode 100644 tests-clar/resources/partial-testrepo/.gitted/objects/pack/.gitkeep create mode 100644 tests-clar/resources/partial-testrepo/.gitted/refs/heads/dir diff --git a/tests-clar/network/fetchlocal.c b/tests-clar/network/fetchlocal.c new file mode 100644 index 000000000..85c2575bf --- /dev/null +++ b/tests-clar/network/fetchlocal.c @@ -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(); +} diff --git a/tests-clar/resources/partial-testrepo/.gitted/HEAD b/tests-clar/resources/partial-testrepo/.gitted/HEAD new file mode 100644 index 000000000..4bfb9c93f --- /dev/null +++ b/tests-clar/resources/partial-testrepo/.gitted/HEAD @@ -0,0 +1 @@ +ref: refs/heads/dir diff --git a/tests-clar/resources/partial-testrepo/.gitted/config b/tests-clar/resources/partial-testrepo/.gitted/config new file mode 100644 index 000000000..99abaab97 --- /dev/null +++ b/tests-clar/resources/partial-testrepo/.gitted/config @@ -0,0 +1,7 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = false + logallrefupdates = true + ignorecase = true +[branch "dir"] diff --git a/tests-clar/resources/partial-testrepo/.gitted/index b/tests-clar/resources/partial-testrepo/.gitted/index new file mode 100644 index 0000000000000000000000000000000000000000..4f241f9142f629a2cccb3f7527906a67ab23478e GIT binary patch literal 328 zcmZ?q402{*U|<4bmVjAz*nu--7WB8+ zw#hu&uGDwr@x5aVY(cJ$F21hF`q9j30-Ey{$sCq6tJ|C+=IJy1t6x}6eE-Y+p~i7j z2KGe#B)yV~5+rw^nbVBs9%k2_&HK!@+pu@snX_km&hCak)f>VY_>+nf^O7^-(=u~X z@tfCzW**OS(YAy4Uo4l&*`Fgc-@zx$>A&G#2KKzva;Q0{LLMu1v`F9O=3sDJ5MF0n I)f+e+0InHZ3;+NC literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 b/tests-clar/resources/partial-testrepo/.gitted/objects/13/85f264afb75a56a5bec74243be9b367ba4ca08 new file mode 100644 index 0000000000000000000000000000000000000000..cedb2a22e6914c3bbbed90bbedf8fd2095bf5a7d GIT binary patch literal 19 acmb-^#H0=gNM4#XbHp#9nm{w}~e~VA>HVh0*UTU2h zI2R9X6@d~QlL~cNq^RqWRXRmSLrR(%JGOQZ^5)H}%nh;F=&ild+RI_ zmV#MRj)u23E-Tz*hDTd@OK?t~A6%bP8@F`IOTB>gogYF7*uxPAM6=s{u*n~(xsN7F<>w>FfcPQQ3!H%bn$g%SfOmF@NI2De~WFK%%kl}eMcVO zJ7!`41PX}^Nw33h?e?CjxkvQwq~t@#jW^oro`LF4DoV^t&WKOT%t_TNsVHG^-Pyd) zY`YD6$DKKQw&(0__*17G-5C`FfcPQQ3!H%bn$g%SfOmF@NI2De~WFK%%kl}eMcVO zI|fyeRFs&PoDrXvnUktlQc=R-y0dwo*>)TDjyrSqY|q)<@TYo1I8Fm*0&IVk`D literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 b/tests-clar/resources/partial-testrepo/.gitted/objects/45/b983be36b73c0788dc9cbcb76cbb80fc7bb057 new file mode 100644 index 0000000000000000000000000000000000000000..7ca4ceed50400af7e36b25ff200a7be95f0bc61f GIT binary patch literal 18 acmb9W-v4`FgG<-NYX2*C}Bvmy3HwKo<76B`i0fR_rKg9Y8*EO I00q(x`N*;qRsaA1 literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 b/tests-clar/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 new file mode 100644 index 000000000..c1f22c54f --- /dev/null +++ b/tests-clar/resources/partial-testrepo/.gitted/objects/5b/5b025afb0b4c913b4c338a42934a3863bf3644 @@ -0,0 +1,2 @@ +x 1ENi@k2 "X$YW0YcÅszMD08!s Xgd::@X0Pw"F/RUzmZZV}|/o5I!1z:vUim}/> +F- \ No newline at end of file diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc b/tests-clar/resources/partial-testrepo/.gitted/objects/62/eb56dabb4b9929bc15dd9263c2c733b13d2dcc new file mode 100644 index 0000000000000000000000000000000000000000..b669961d8f9fe449aa715bcc4574e838309f83f1 GIT binary patch literal 50 zcmV-20L}k+0V^p=O;s>9W-v4`Ff%bxNYX2*C}Bvmy3HwKo<76B`i0fR_rKg9Y8*EO I00nyv_QnPi@Bjb+ literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 b/tests-clar/resources/partial-testrepo/.gitted/objects/66/3adb09143767984f7be83a91effa47e128c735 new file mode 100644 index 0000000000000000000000000000000000000000..9ff5eb2b5dde9d39204782babe64bb240aced32f GIT binary patch literal 19 acmb7G-5C`FfcPQQ3!H%bn$g%5N`dHvVMD1*wTH+ot*d0HmhE8 ziUX=5sVFfoIU_zTGbdHAq@skub!YQFv+XwQ9e3vJ*`Bkz;ZOC3aH!I})N-(rU!EJv Zrz=lf8^K%<@M(E`$>VgnNdSzWFYprfIFkSX literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d b/tests-clar/resources/partial-testrepo/.gitted/objects/81/4889a078c031f61ed08ab5fa863aea9314344d new file mode 100644 index 0000000000000000000000000000000000000000..2f9b6b6e3d9250ba09360734aa47973a993b59d1 GIT binary patch literal 82 zcmV-Y0ImOc0V^p=O;s?nWH2-^Ff%bx2y%6F@pWZbp=_w|ZEZn+i*1|CqwPw4M;_lh o233)lTCP`8QNplXwC&*i7t3XG_U8!Ackl^w`fs=w02$OB|A$m1)Bpeg literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 b/tests-clar/resources/partial-testrepo/.gitted/objects/84/96071c1b46c854b31185ea97743be6a8774479 new file mode 100644 index 0000000000000000000000000000000000000000..5df58dda56789631c78aeed62708e1b694440195 GIT binary patch literal 126 zcmV-^0D=E_0iBK82?8+?0R2uC+kmpkZXSY&U

RiSaIAE^xQ@?_ml44FkiJ(R)*{ z(H(TH6>PFd5&0~h#n$X!k{LPpBqYvbW+w8_Xyl{wSm9BID%@u&V}Z+7esG(*wD+lu geg*3yQ9w!oju;WmZug_se_Eq;)3!|J3!n-%%(!(uEdT%j literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a b/tests-clar/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a new file mode 100644 index 000000000..a79612435 --- /dev/null +++ b/tests-clar/resources/partial-testrepo/.gitted/objects/9f/d738e8f7967c078dceed8190330fc8648ee56a @@ -0,0 +1,3 @@ +x[ +0E*fդ "W0-Ft݁pS[Yx^ +Db CLhut}8X*4ZsYUA X3RM) s6輢Mរ&Jm;}<\@ޏpĀv?jۺL?H \ No newline at end of file diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f b/tests-clar/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f new file mode 100644 index 000000000..f8588696b --- /dev/null +++ b/tests-clar/resources/partial-testrepo/.gitted/objects/a4/a7dce85cf63874e984719f4fdd239f5145052f @@ -0,0 +1,2 @@ +x;j1Dmdǎ|M3`V{ >QvL0I?!4Z=!צ8F!rsQy9]$D&l6A>jFWҵ IKNiZ%S + U~̽>' w [ DGڡQ-M>dO}\8g_ШoYr \ No newline at end of file diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd b/tests-clar/resources/partial-testrepo/.gitted/objects/a7/1586c1dfe8a71c6cbf6c129f404c5642ff31bd new file mode 100644 index 0000000000000000000000000000000000000000..d0d7e736e536a41bcb885005f8bf258c61cad682 GIT binary patch literal 28 kcmbBQQQ6W+Sv9;eTEK4oHX{LN+y0Ic;3tpET3 literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 b/tests-clar/resources/partial-testrepo/.gitted/objects/a8/233120f6ad708f843d861ce2b7228ec4e3dec6 new file mode 100644 index 0000000000000000000000000000000000000000..18a7f61c29ea8c5c9a48e3b30bead7f058d06293 GIT binary patch literal 26 icmb7F<>w>FfcPQQ3!H%bn$g%SfOmF@NI2De~WFK%%kl}eMcVO zJ7!`41PX}^ejLs3-n~BfTijGk=2g@8)A6h8lA*ejiW2jZGvd=Sb5iw6DoPk!cQ)@c z+it_&ac9n+?K!&}{#0)WhbqlWEe9)EF4}hR{)^=@Is0>j<~#U=IsG@>3joZzJl^$Q BMxFow literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 b/tests-clar/resources/partial-testrepo/.gitted/objects/f6/0079018b664e4e79329a7ef9559c8d9e0378d1 new file mode 100644 index 0000000000000000000000000000000000000000..03770969aa16f40d4192c733408f152fc17b1f19 GIT binary patch literal 82 zcmV-Y0ImOc0V^p=O;s?nWH2-^Ff%bx2y%6F@pWYoZvB+9etT5d(tXFBocGN(t6p-7 o1F9k~wOp^HqJ-g>=Z5m>$`jW{Fc$=TS{`5WI9+ZM01*fsda7_Ea{vGU literal 0 HcmV?d00001 diff --git a/tests-clar/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 b/tests-clar/resources/partial-testrepo/.gitted/objects/fa/49b077972391ad58037050f2a75f74e3671e92 new file mode 100644 index 0000000000000000000000000000000000000000..112998d425717bb922ce74e8f6f0f831d8dc4510 GIT binary patch literal 24 gcmb