From 64318798fc0562424a3bad78acabc35a20d587e1 Mon Sep 17 00:00:00 2001 From: Nick Guenther <nick.guenther@polymtl.ca> Date: Mon, 27 Feb 2023 18:42:45 -0500 Subject: [PATCH 1/3] Test README rendering --- models/db/iterate_test.go | 2 +- models/db/list_test.go | 4 +- models/fixtures/repo_unit.yml | 6 + models/fixtures/repository.yml | 13 +++ models/fixtures/user.yml | 2 +- .../user2/readme-test.git/HEAD | 1 + .../user2/readme-test.git/config | 4 + .../user2/readme-test.git/info/exclude | 6 + .../user2/readme-test.git/info/refs | 21 ++++ .../12/11481f7314efbfe4e44703170d96c8fac8172b | Bin 0 -> 169 bytes .../17/2343566bf11fc71ba4acf8d2ea70d12bc1d037 | Bin 0 -> 214 bytes .../1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e | Bin 0 -> 167 bytes .../1e/1e08102cf1b1fc01c069c88ee75445974363ab | Bin 0 -> 83 bytes .../21/470f9b3e8ff24e0fa083d2dbc447f4c3401355 | 2 + .../23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d | Bin 0 -> 175 bytes .../38/9d08c6a71d024a91f14089007cd789cd977ca6 | Bin 0 -> 48 bytes .../3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4 | Bin 0 -> 140 bytes .../3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9 | 1 + .../50/6ff7310f420e878595b4bc8f11688e3f0ae14e | Bin 0 -> 166 bytes .../58/3eb775c596858380273492759d39081d65d029 | Bin 0 -> 169 bytes .../60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8 | 3 + .../6a/b05db4c52530726c1856eb558228e9d1949e7f | Bin 0 -> 169 bytes .../71/60a063b5544b5a78131b94f47bfd200046eda2 | Bin 0 -> 167 bytes .../75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c | Bin 0 -> 28 bytes .../7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271 | Bin 0 -> 211 bytes .../7f/792e709143fb0f021da2371e5f40d1bcc284fd | Bin 0 -> 166 bytes .../82/817856dadc7f6b944633e1b77d5b6e302dde06 | Bin 0 -> 51 bytes .../8b/4149e7dede3cd53ba11c64c88b057c5fe2c200 | Bin 0 -> 169 bytes .../93/54813d81053c14afe878a9f056b937ec42bb48 | Bin 0 -> 28 bytes .../9c/72c10e55e7d6ea21f591aa424e2625e8ad8094 | Bin 0 -> 136 bytes .../a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6 | Bin 0 -> 82 bytes .../b0/e851a5619e2d6cee1da25a15ab67305f0861ec | Bin 0 -> 76 bytes .../b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5 | Bin 0 -> 112 bytes .../b8/eaa80ad86072e1f23d2638842154ce9aceff8d | Bin 0 -> 77 bytes .../d5/34f914944c3c943a6bdb677d869ac54934928d | Bin 0 -> 31 bytes .../e2/f9904cd97b4045feecfffef5a426e9461bee70 | Bin 0 -> 117 bytes .../e3/a6fd8fe49e323ee10017f72b777a53fbd8076f | 3 + .../e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec | Bin 0 -> 171 bytes .../ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180 | Bin 0 -> 77 bytes .../fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa | Bin 0 -> 197 bytes .../readme-test.git/objects/info/commit-graph | Bin 0 -> 2612 bytes .../user2/readme-test.git/objects/info/packs | 2 + ...d634b76f8154310cccb52537a0195e43166.bitmap | Bin 0 -> 1642 bytes ...33bd634b76f8154310cccb52537a0195e43166.idx | Bin 0 -> 4012 bytes ...3bd634b76f8154310cccb52537a0195e43166.pack | Bin 0 -> 7854 bytes .../user2/readme-test.git/packed-refs | 22 ++++ .../refs/heads/fallbacks-broken-symlinks | 1 + tests/integration/repo_test.go | 103 ++++++++++++++++++ 48 files changed, 192 insertions(+), 4 deletions(-) create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/HEAD create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/config create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/info/exclude create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/info/refs create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/12/11481f7314efbfe4e44703170d96c8fac8172b create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/17/2343566bf11fc71ba4acf8d2ea70d12bc1d037 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/1e/1e08102cf1b1fc01c069c88ee75445974363ab create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/38/9d08c6a71d024a91f14089007cd789cd977ca6 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/50/6ff7310f420e878595b4bc8f11688e3f0ae14e create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/58/3eb775c596858380273492759d39081d65d029 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/6a/b05db4c52530726c1856eb558228e9d1949e7f create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/71/60a063b5544b5a78131b94f47bfd200046eda2 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/792e709143fb0f021da2371e5f40d1bcc284fd create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/82/817856dadc7f6b944633e1b77d5b6e302dde06 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/8b/4149e7dede3cd53ba11c64c88b057c5fe2c200 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/93/54813d81053c14afe878a9f056b937ec42bb48 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/9c/72c10e55e7d6ea21f591aa424e2625e8ad8094 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/b0/e851a5619e2d6cee1da25a15ab67305f0861ec create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/b8/eaa80ad86072e1f23d2638842154ce9aceff8d create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/d5/34f914944c3c943a6bdb677d869ac54934928d create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/e2/f9904cd97b4045feecfffef5a426e9461bee70 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180 create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/info/commit-graph create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/info/packs create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.bitmap create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.idx create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.pack create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/packed-refs create mode 100644 tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks diff --git a/models/db/iterate_test.go b/models/db/iterate_test.go index a713fe0d8b85c..6bcf740c238b0 100644 --- a/models/db/iterate_test.go +++ b/models/db/iterate_test.go @@ -25,7 +25,7 @@ func TestIterate(t *testing.T) { return nil }) assert.NoError(t, err) - assert.EqualValues(t, 83, repoCnt) + assert.EqualValues(t, 84, repoCnt) err = db.Iterate(db.DefaultContext, nil, func(ctx context.Context, repoUnit *repo_model.RepoUnit) error { reopUnit2 := repo_model.RepoUnit{ID: repoUnit.ID} diff --git a/models/db/list_test.go b/models/db/list_test.go index ffef1e4948eea..1295692cec856 100644 --- a/models/db/list_test.go +++ b/models/db/list_test.go @@ -35,11 +35,11 @@ func TestFind(t *testing.T) { var repoUnits []repo_model.RepoUnit err := db.Find(db.DefaultContext, &opts, &repoUnits) assert.NoError(t, err) - assert.EqualValues(t, 83, len(repoUnits)) + assert.EqualValues(t, 84, len(repoUnits)) cnt, err := db.Count(db.DefaultContext, &opts, new(repo_model.RepoUnit)) assert.NoError(t, err) - assert.EqualValues(t, 83, cnt) + assert.EqualValues(t, 84, cnt) repoUnits = make([]repo_model.RepoUnit, 0, 10) newCnt, err := db.FindAndCount(db.DefaultContext, &opts, &repoUnits) diff --git a/models/fixtures/repo_unit.yml b/models/fixtures/repo_unit.yml index 503b8c9ddfa46..ef0b7c1a941e2 100644 --- a/models/fixtures/repo_unit.yml +++ b/models/fixtures/repo_unit.yml @@ -569,3 +569,9 @@ type: 3 config: "{\"IgnoreWhitespaceConflicts\":false,\"AllowMerge\":true,\"AllowRebase\":true,\"AllowRebaseMerge\":true,\"AllowSquash\":true}" created_unix: 946684810 + +- + id: 84 + repo_id: 56 + type: 1 + created_unix: 946684810 diff --git a/models/fixtures/repository.yml b/models/fixtures/repository.yml index 58f9b919acfbc..84e61f4dfd9ec 100644 --- a/models/fixtures/repository.yml +++ b/models/fixtures/repository.yml @@ -1634,3 +1634,16 @@ is_private: true num_issues: 1 status: 0 + +- + id: 56 + owner_id: 2 + owner_name: user2 + lower_name: readme-test + name: readme-test + default_branch: master + is_empty: false + is_archived: false + is_private: true + status: 0 + num_issues: 0 diff --git a/models/fixtures/user.yml b/models/fixtures/user.yml index b1c7fc0030675..66bc6b1c2fc84 100644 --- a/models/fixtures/user.yml +++ b/models/fixtures/user.yml @@ -66,7 +66,7 @@ num_followers: 2 num_following: 1 num_stars: 2 - num_repos: 11 + num_repos: 12 num_teams: 0 num_members: 0 visibility: 0 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/HEAD b/tests/gitea-repositories-meta/user2/readme-test.git/HEAD new file mode 100644 index 0000000000000..cb089cd89a7d7 --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/HEAD @@ -0,0 +1 @@ +ref: refs/heads/master diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/config b/tests/gitea-repositories-meta/user2/readme-test.git/config new file mode 100644 index 0000000000000..07d359d07cf1e --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/config @@ -0,0 +1,4 @@ +[core] + repositoryformatversion = 0 + filemode = true + bare = true diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/info/exclude b/tests/gitea-repositories-meta/user2/readme-test.git/info/exclude new file mode 100644 index 0000000000000..a5196d1be8fb5 --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/info/exclude @@ -0,0 +1,6 @@ +# git ls-files --others --exclude-from=.git/info/exclude +# Lines that start with '#' are comments. +# For a project mostly in C, the following would be a good set of +# exclude patterns (uncomment them if you want to use them): +# *.[oa] +# *~ diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/info/refs b/tests/gitea-repositories-meta/user2/readme-test.git/info/refs new file mode 100644 index 0000000000000..fd5f1b98ebd57 --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/info/refs @@ -0,0 +1,21 @@ +ea9ef877d1d88af76682d8798418081264f10cfc refs/heads/fallbacks +0d4c14db927c9ffba01fa7e126cc748b5c02c01e refs/heads/fallbacks2 +c66d5b07c2063d3268707f22226c708b589574ef refs/heads/fallbacks3 +89f8426e9eb5eff35c09b3565836c8f8e15d0ce9 refs/heads/fallbacks4 +b0e902496eae435ad03c92a5d479f916ef2d4893 refs/heads/fallbacks5 +84a5500b5cc040b11daf53fc42c542a99589dc76 refs/heads/fallbacks6 +cf406a96e416d7de5c4c1bbfffdd672300c822bf refs/heads/fallbacks7 +0d6ac644b969e9199915a492da9dba08c179fd23 refs/heads/fallbacks8 +5038febc0c57215beb3748d7ae4091a25a4acc93 refs/heads/fallbacks9 +9134e1f178ca4cccf1a197142646f2d7627e8cd5 refs/heads/i18n +744d2441e55bc0010d6b340d303f0106a627ad29 refs/heads/master +3c492566170b057e962c025515ab38bbd7444077 refs/heads/plain +3882d6373a0882a6739b3cd9b24d21c630621234 refs/heads/sp-ace +bf5ed898252eaa50dcc01108ed4417c3ea98a294 refs/heads/special-subdir-.gitea +c03543573ab088ce1cf7090a387d2be621426234 refs/heads/special-subdir-.github +e75957ad9b7e6ed16dda183529ec283db0bbc5fe refs/heads/special-subdir-docs +46f5d5ab33d701642e08c713fab42af89fdd4fea refs/heads/special-subdir-nested +9c0f872256b839c2b97ec22fd348d87b14045513 refs/heads/subdir +d7a854fff61e45b98234d7aa79ecbcb1619cd3dd refs/heads/symlink +30b9c0ed4b1039dbd99f3fb537b84ca507e0549d refs/heads/symlink-loop +41489b7be5c2244d2b7b524dcb31caf3bd1f9ccc refs/heads/txt diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/12/11481f7314efbfe4e44703170d96c8fac8172b b/tests/gitea-repositories-meta/user2/readme-test.git/objects/12/11481f7314efbfe4e44703170d96c8fac8172b new file mode 100644 index 0000000000000000000000000000000000000000..b9009e32444a4be9dd189dc611880aef4f0d8b02 GIT binary patch literal 169 zcmV;a09OBa0iDh{4#F@Hg<)!+VlF^5cDzMGh>nhm3wW6!5zeCE6x^N&aRSP}_?}*x z$8o5jv^vz42%^@>Q$&n8FdC&YSxKgoOk~(vZzQpfMl4~ase)tIDRS6J-Eu@mC38@% z+YM{XGNz=w<}AWi`+0@ike+becG}Ylr)kgT@yp9Hm-kpplfoIKb<P;sY7a*=h$4NT X)?NL-A@205z@d~F(o=i@i<M4nfA~|$ literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/17/2343566bf11fc71ba4acf8d2ea70d12bc1d037 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/17/2343566bf11fc71ba4acf8d2ea70d12bc1d037 new file mode 100644 index 0000000000000000000000000000000000000000..c7a4deca9293a563181b8dadbe42a5f669681739 GIT binary patch literal 214 zcmV;{04e`?0hNxiZp0uEL{s}Kwo8>07%!ZqC`y+u{{YMSK(^sz);i_ygQEL^6jO{e zZ)T|OdloQidXa+}u3^&C%r0_dLlI5zT9cjVdJPI4;ld-0N)2~^a1pQ=J^Bfq!Z3~o z?QE2G+S%wGd&01gUFN6;e@dzcd}mtW>+ERa1Kvxwm)p~R-s|?W%XT6E0opo;IHEQ1 zrmzpv-&5(-e><$1pB+PcWT6C7fy-^nEkR)NXJg0^Yk3t|OMO7<>Y3fI4E-nwH)(L3 Q1#$sOxp3p*7x&_1XWgo56#xJL literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e b/tests/gitea-repositories-meta/user2/readme-test.git/objects/1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e new file mode 100644 index 0000000000000000000000000000000000000000..d8522ae6d3319a48188c99be269b1622f89e7030 GIT binary patch literal 167 zcmV;Y09gNc0iBLJ4#GeT1*!KGz5vMHFGvW{(NS>$uj3^V`6(;~w<kiJfO4caqbJia zbQP?3o4TliW8N39sKmjAg5{vd>QSQ#Wl?XVw^_WIdC{=~CF{HkG3G*4BvEG1Qud8i zPT0`8r3PIx{HpD=z_pVHTwbf%>H^1c#ohgf=XvViL+y9MC!m;82sTlGEe1p*-=}r8 V{%@F@J}VUN`^@rqnhyv1PZ>ILQ$7Fy literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/1e/1e08102cf1b1fc01c069c88ee75445974363ab b/tests/gitea-repositories-meta/user2/readme-test.git/objects/1e/1e08102cf1b1fc01c069c88ee75445974363ab new file mode 100644 index 0000000000000000000000000000000000000000..d4152e535edee4dede53f2b78c5890f6010635bb GIT binary patch literal 83 zcmV-Z0IdIb0V^p=O;s>AWH2-^Ff%bx2y%6F@pWa`@t!|<rStv(_qzdwi6*BHu4Y%~ pFf=j%0;meT+!Th=oPv`D?l;zLlv#XS?(Y2UIq%=i0RRG$9p!&{B{Bd2 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355 new file mode 100644 index 0000000000000..8aabb78c6838b --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355 @@ -0,0 +1,2 @@ +x��;�0@�s +_�*N��H��1q�u(�?�t��T�0��==���Q��+�*4��d��h�S�η.z���͙Z3�ct��0'�As�5h�zL�=D��B�\cx-ݴ��!O������q�����<����� 0�T�装���5�=-�����U s�7,O�#�M� \ No newline at end of file diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d b/tests/gitea-repositories-meta/user2/readme-test.git/objects/23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d new file mode 100644 index 0000000000000000000000000000000000000000..715977676d5041e2a56504189cb38b4d3b524cfb GIT binary patch literal 175 zcmV;g08syU0iBLJ4#F@HM5%p>y#UeLtnFArh>nhm3v8S<iO5fhDRO%(#0lu;Y4k=D z=W*;a7>kFzih!6D0#a;)ZwSdIk(g4FWSNYUKu$Lz9@WCDOc?~pa~)axw&jwzZiIq1 zuJ+oU1dS;ror2<b?&cNleSE>~UDQriI8Ozu=MS&TJnUm0s>m16&U;JVSO-V6h$?=c d=3@Q7p&qhjh#mKnw6N{t&`+;TeE>rzQOAB&RpI~u literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/38/9d08c6a71d024a91f14089007cd789cd977ca6 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/38/9d08c6a71d024a91f14089007cd789cd977ca6 new file mode 100644 index 0000000000000000000000000000000000000000..c5929ae89288aa30a1a891326bc8bb9f340640f8 GIT binary patch literal 48 zcmV-00MGw;0V^p=O;s>9W-u`T0tLPF%#zeZ2HRsE+r`do2(@WGwr9=%yg1I;B`E+G GZx5ikFcZ80 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4 new file mode 100644 index 0000000000000000000000000000000000000000..106393d722517fe5c97ef75e78200b79654ea7ab GIT binary patch literal 140 zcmV;70CWF%0V^p=O;s>7Hf1m|00ITQ^vsgfL<ZYq9^1vvYzVb!KDKAg|GYTP*(E84 z1_ov(CJI5WjxN5g441E2x84pr@IRN~v|{A0KVp7v4r(YW^m0=e&Rwp&wwytJxyMf) u-uwA856+yPrwXwrB|o{CVL=ApB%AZ+6fKVJFG^nY{Okp@nMwfU={Lu<i9rDX literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9 new file mode 100644 index 0000000000000..c36705ba28dda --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9 @@ -0,0 +1 @@ +x��M� �aל��0&Ƹs��ئ�'�.���x������4]���.)�D��Q�|@b6Xbd��}�2+b�%�T� �I>g� 2�7Q���. (c�����"o��n�M�<�[6�_^橼�Z��T�U�� ���n�� qO�*3��{���N\ \ No newline at end of file diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/50/6ff7310f420e878595b4bc8f11688e3f0ae14e b/tests/gitea-repositories-meta/user2/readme-test.git/objects/50/6ff7310f420e878595b4bc8f11688e3f0ae14e new file mode 100644 index 0000000000000000000000000000000000000000..a7f4501ea2e8b7d2c984dcf2f926497f5b9597b3 GIT binary patch literal 166 zcmV;X09pTd0iBLH4#F@H0IB_o{Q%M0@p{)1LUeRge84!%A#y1=1;58aynu3w8BLys z;ZeYOw<(J%By>uA70(!0I5Gw7qT1ldv)C*w>PWMh)1qSml2$Lwlqm+OAn3UD(J{rY zjVQJY)S-(et>r!~aC+n?9M`Jeb%EVjvAO;5Fi-t^D1DRD9&D&pvcw*?NQfqXPfNA_ UZ<w>b3S3j)Us8UW4?((1W7)${?*IS* literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/58/3eb775c596858380273492759d39081d65d029 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/58/3eb775c596858380273492759d39081d65d029 new file mode 100644 index 0000000000000000000000000000000000000000..a2dadacf8ac5c581336a8fec56846cc07f12f8ac GIT binary patch literal 169 zcmV;a09OBa0iBL9Zo@DP06Xgy{6Gv+kwgh7if-95^#c^eG(qe*aOEMtk5S|W8E?45 z={!xB4nFvgzL>#2mxfuBFg5f+3Y{omE{Lp+bJ13qRg$~QVz&+nO%i1>Zo#x#Q7XyD zLds33Vyu-UYId^r^Sr?EqE|Sqn|ihdK5rWizc2j0&*Nk2<Dl{dl$c|r;1ldHB0Bv) X?VI&}!~NJ_hm(wB6}`GA1W--qeJ4@w literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8 new file mode 100644 index 0000000000000..4367c41e2858e --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8 @@ -0,0 +1,3 @@ +x��;�0@�s +_�*N뤕bcc���Њ�Tҁ�S!N�����d�>���!���քLu�Ul�#q����l�Q�,�ꔡ��lCBn$6��X�Dɹ�bbҖR0���y�[/O�n��� +�i�����2�1��Ї@�e�p�d���iޭ�殯��!�<���N� \ No newline at end of file diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/6a/b05db4c52530726c1856eb558228e9d1949e7f b/tests/gitea-repositories-meta/user2/readme-test.git/objects/6a/b05db4c52530726c1856eb558228e9d1949e7f new file mode 100644 index 0000000000000000000000000000000000000000..3e4c8247d906f07f3985a58a76b08000a1d661f2 GIT binary patch literal 169 zcmV;a09OBa0V^p=O;s>7H)Sv}00ITQ^vsgfL<ZYq9^1vvYzVb!KDKAg|GYTP*(E84 z1_ov(CJI5WjxN5g441E2x84pr@IRN~v|{A0KVp7v4r(YW^iuQma#I*MKHl3FemK04 zf9a#bto-)V?OCrAQPlwzox5ClZ8?Mda*v-py!Z2G9-KKnPZi>xl>Fpkh6NdXlWfkP XQ?xj?zbJXp^RpMsW-0*yojgaTO}bCn literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/71/60a063b5544b5a78131b94f47bfd200046eda2 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/71/60a063b5544b5a78131b94f47bfd200046eda2 new file mode 100644 index 0000000000000000000000000000000000000000..477d5b1f1f4312265b57e9f6403dc133ddd83c81 GIT binary patch literal 167 zcmV;Y09gNc0iBLJ4#F@H1*v_Cy#UcVvDZdIh>nhm3)tov5Y9)zDY!im;slga%xKcs z_m4`gX*YES$XOR9!)OuX!4Zru$`1C59MBmbSfh<eO<~4R$+G0^I?dU%4DY<%*=S<& zS!?kgUFHC7pu$q`<4osAdeUiG)jMX|4=XmeA0DT%y!%?36b_`tIcv4B(3UN;O5fAE VTK_lH1+PjuloCUFst-`>P8}43Q9A$t literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c b/tests/gitea-repositories-meta/user2/readme-test.git/objects/75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c new file mode 100644 index 0000000000000000000000000000000000000000..3ef17969867f6a1e4c2138ae8d469601e3c1fb5f GIT binary patch literal 28 kcmb<m^geacKghr&^}^-L=TDx$=zr?`X|_a$pc3|K0L<|X(f|Me literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271 new file mode 100644 index 0000000000000000000000000000000000000000..4e39c0306eaa5ba7dbcc8926ab9cf76da6c05cea GIT binary patch literal 211 zcmV;^04)D_0iBL9YQ!)QMN|6}(`}VSmOYXUOGvj}?jViED`8t&tT9V&9}#kb6u<cJ z-{(=;_arc=@l6h9FwQFsek9a5D60+i6B_o2lhzZ@p`XW@?b1En!CAmyaOg&~3cc0? znt4#Y?X3yUvLo~hnPm>DbEm{|z*nLb?q@?IA8^a9ULSw;^I5j<UA8N^59p1x*d)vV z?+TUb=+{&l_5Y8qzLHP`DZu%$r5eFAxwA4P2qj+x)?8i?TiRxKD?<|n;VKo5GegQi NF=ejY{Qw1TV~XWYWat0@ literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/792e709143fb0f021da2371e5f40d1bcc284fd b/tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/792e709143fb0f021da2371e5f40d1bcc284fd new file mode 100644 index 0000000000000000000000000000000000000000..90fae23886ca83c4be056c5dd3c8125047bcf0b9 GIT binary patch literal 166 zcmV;X09pTd0iBLH4#F@H0IB_o{Q%MWSer-)(a}-yf%Rrh5IImV1-~akynu3w8I8>2 zc&p%o+tfuBJoByuMYT+x3YJ!pHK0Znn?-|*!DR{N!HZ56B6Un0C?RF%JjK?dO*X}j zld@1Q5=+~m;aBbF1<p6Q!|AoEy)LkyR&1_6JU-^(J=UQSK7frW5n1mDwn&IZzNdAy U{%@FzJ}VR+hRkv|AA!wIRa@CkBme*a literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/82/817856dadc7f6b944633e1b77d5b6e302dde06 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/82/817856dadc7f6b944633e1b77d5b6e302dde06 new file mode 100644 index 0000000000000000000000000000000000000000..0428af472a486f6b2689fd113291540555a8374f GIT binary patch literal 51 zcmb<m)YkO!4K*-JG%ztRFg6U-@bdLJ>6`jPaYEJa*lGXHNtRod<n7tJvaYTyUY)`C HlVA=2#pM&k literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/8b/4149e7dede3cd53ba11c64c88b057c5fe2c200 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/8b/4149e7dede3cd53ba11c64c88b057c5fe2c200 new file mode 100644 index 0000000000000000000000000000000000000000..64542d37589eb57bf563c0cbe7d8c305c26c8ecb GIT binary patch literal 169 zcmV;a09OBa0V^p=O;s>7H)Sv}00ITQ^vsgfL<ZYq9^1vvYzVb!KDKAg|GYTP*(E84 z1_ov(CJI5WjxN5g441E2x84pr@IRN~v|{A0KVp7v4r(YW^iuQma#I*K?z)n5cxkwB zUXi5E4&_&;XDDi>qpAZcI(ND9+HwZ@<sLtIc<<-WJUDZDo+`vWDf!983=1;&CfS@n Xr)Y6(e^K(H=VvdN%~S#aJ3dB3^BhgC literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/93/54813d81053c14afe878a9f056b937ec42bb48 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/93/54813d81053c14afe878a9f056b937ec42bb48 new file mode 100644 index 0000000000000000000000000000000000000000..8542b45c75ff86619f87b916e8ee3df903bd9e8e GIT binary patch literal 28 kcmb<m^geacKghr&$>WUXx$Eao>!0_~^<rgk+0XV90Iqrq{{R30 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/9c/72c10e55e7d6ea21f591aa424e2625e8ad8094 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/9c/72c10e55e7d6ea21f591aa424e2625e8ad8094 new file mode 100644 index 0000000000000000000000000000000000000000..b53d42aee9e633a49905c0bd76fb95bf9031145d GIT binary patch literal 136 zcmV;30C)d*0V^p=O;s>7Hf1m|00ITQ^vsgfL<X4)hIe;7JfhoTwBDaX@@Tka?4NQ& zBe04fS4S6LSB9%5KSiea*i5m?zMWp%HtVRT$)sKs6?(ZT43k3|Z5vr_MApBkSotAr qr}-PF-5wBoQu33F8RX<R1av-b{KI%4^F-hC5ZCF>$*TcJIW-;CK0dJk literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6 new file mode 100644 index 0000000000000000000000000000000000000000..6d9bc2a7664fe2968b95869b01587b4eaa61a4fe GIT binary patch literal 82 zcmV-Y0ImOc0V^p=O;s?nWH2-`00M;|S4S6LSH0X6h6P%IvU?Y)CvG|R|7KUck;K%O or+%1#)#R6Cq!uv*co<)>wEEN6zbbUcs*pz-KP}|_02Heo?n7)OQvd(} literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/b0/e851a5619e2d6cee1da25a15ab67305f0861ec b/tests/gitea-repositories-meta/user2/readme-test.git/objects/b0/e851a5619e2d6cee1da25a15ab67305f0861ec new file mode 100644 index 0000000000000000000000000000000000000000..2f88dbd361ae06a6ca6202ea1441b965b36a145a GIT binary patch literal 76 zcmV-S0JHyi0V^p=O;s>6VK6ZO0tLPF%#zeZ2HRsE+r`do2(@WGwr9=%yg1I;B`FXE iDf!9848easzi??;<(R6yt3=9gw&*v>c|QTPTpYU4?IQ>P literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5 new file mode 100644 index 0000000000000000000000000000000000000000..55bb8491afef625eeeb1af14dd0b3cd87974c3f3 GIT binary patch literal 112 zcmV-$0FVE80V^p=O;xb8U@$QN0tLPF%#zeZ2HRsE+r`do2(@WGwr9=%yg1I;B`Jmm z24*HE3PG-pF21e|m#<m3-VQtPKbPUOV&twrVt#H8Y7iq*@{@}h7G&^EvN?ZF(c;+t SqU1%-&t5Q_sRRHQqbY&h9y1C6 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/b8/eaa80ad86072e1f23d2638842154ce9aceff8d b/tests/gitea-repositories-meta/user2/readme-test.git/objects/b8/eaa80ad86072e1f23d2638842154ce9aceff8d new file mode 100644 index 0000000000000000000000000000000000000000..84ab5684a0093099072185262a4a43517cb15030 GIT binary patch literal 77 zcmV-T0J8sh0V^p=O;s>6VK6ZO0tLPF%#zeZ2HRsE+r`do2(@WGwr9=%yg1I;B`FXE jDf!983=1;&CfS@nr)Y6(e^K(H=VvdN%~S#at56)Q)g~dT literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/d5/34f914944c3c943a6bdb677d869ac54934928d b/tests/gitea-repositories-meta/user2/readme-test.git/objects/d5/34f914944c3c943a6bdb677d869ac54934928d new file mode 100644 index 0000000000000000000000000000000000000000..7bb434442f72d254b112e2740ebf900a8bcd1e73 GIT binary patch literal 31 ncmb<m^geacKghr&Rl`H)<OThc*Uz8UKY8MeH#<YrWe#ot*oh5( literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/e2/f9904cd97b4045feecfffef5a426e9461bee70 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/e2/f9904cd97b4045feecfffef5a426e9461bee70 new file mode 100644 index 0000000000000000000000000000000000000000..9654f877b8c59f52226850f204f4323b224e85e2 GIT binary patch literal 117 zcmV-*0E+*30V^p=O;s>7Fk>(@G5`XFAXi5hUst`{6b8%sw0Rmmf%9Jnzj)s0?^SW} zGS5X5u$toh+*F3eXIXX&@`*=E9q<#)sr_{5>&g6OP%}!35_1dkb29T%8JyT;7#ALA Xn11m|_<YT!Yrk;qeKQpRC{`>_kh3)c literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f b/tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f new file mode 100644 index 0000000000000..2307ba82dca7c --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f @@ -0,0 +1,3 @@ +x��M +1�a�=E.��m�� �Νwh����#�"��A<��g�~|eǾ�#�jU:����$%�9o��{�9F �գQdsOU��H��rA�(�=�x��E���$nkҳ]� +�����\ҫV�M7��yx�mؔ��1�-�1 ��}ږ�� 3�/�%=�f>&L� \ No newline at end of file diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec b/tests/gitea-repositories-meta/user2/readme-test.git/objects/e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec new file mode 100644 index 0000000000000000000000000000000000000000..9f898ef87387dc17cf15c794fd48d43921ddccbc GIT binary patch literal 171 zcmV;c095~Y0hNw94#F@H0IB_o{Q!~e_>>T$qod*j>&==(ITf6O-xHyHfO3i%4b9`& z70^bX%E}DM7z&)EObupfwQkrcwozqfo1F_*aW=_{1y`O5C^UhP>#PD%6DjJ*&dHFS zm%%p)k!s431#YFCS9o;P!+qP;mRGn;J65j)Z_7M<#xhidS5VG-YgKImoTZgg(C@VD Z)}IaSwLco-$?pOghan;L;tL^5Pf1exQLg|1 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180 b/tests/gitea-repositories-meta/user2/readme-test.git/objects/ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180 new file mode 100644 index 0000000000000000000000000000000000000000..d1eff52868d457865f396c829e7060972f4f3ac8 GIT binary patch literal 77 zcmV-T0J8sh0V^p=O;s>6VK6ZO0tLPF%#zeZ2HRsE+r`do2(@WGwr9=%yg1I;B`FXE jDf!9841Xgw?YVe?)2-mtT+c<4vwUKHHtqxfy8Rtw@<$_V literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa b/tests/gitea-repositories-meta/user2/readme-test.git/objects/fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa new file mode 100644 index 0000000000000000000000000000000000000000..48c0b5a4d621e0a9c34ca50ef4b53faef90a273a GIT binary patch literal 197 zcmV;$06PD80iBLJPQ@?~0I7Y7y#P<P@n<a|L`O%%3HI4*62<w*-W2clM2HhmPBEj& z`?}5o7UPq2W=J{OY&3h%u>>Y-s!xW<S;sb5&qxJza_XSYn*dYdiZK>b5UIux&=!md zok5Mp23L*FH7h!0+B<yCd4Z4fQYY^4x?Ont{=@fUZ;w^lEz=vA5To}m-g<b}UTc+q zPvx@y-%wvHa2{~)`@$QH$J*v?86Z0d4}nUp-RU~)XX63$1~QRArork53iw_DU9Mm~ literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/info/commit-graph b/tests/gitea-repositories-meta/user2/readme-test.git/objects/info/commit-graph new file mode 100644 index 0000000000000000000000000000000000000000..9bb0976fdc30e99f66fae5f74525635980f9d928 GIT binary patch literal 2612 zcmZ>E5Aa}QWMT04ba7*V02d(J2f}1=advSGfw0*u+~I7_Jy5kkic0~(CW*xaR80zI z2CAnOW&xUw53>U0kue*PkB-@aV(6FyC`JtC1gfJp<^q~YF6IX6r3CW;^`m26pcp>P z2b3ok^8?jV6AJ*%BNqz-^$Ov@!a#9CSOlmB9~K456T)IZHMp=iP!5JAfNV;!B+v{L z%<Cg^ds5B(-wWiIKU6zY(jCKeK#n)-n9I)0my$C@mrS}fcNfRO%D>8zK1&YU-HHxe zmCLN&ILp~k?&R0C20IVD^%k(aeRID3R`VS`OW7ZU%(ZB`W^TpNw5)ix&CN}|ipLC+ zgiLHaRnx?|S?i|hFolY)w%C2$#i88MV|Mk^Ln^-7)j__e4NraED?jIq+t;hBjjuDN z=y4nu{<THx$NanguL3Oo?coVmjDBtIaebY`#6?kFXC|lKigGQ8Rx-^r5Esu~{_5!d zV?QsH_^LQQjXuE0n{C2tV9&_5Ont3p%hCYum;(+QW!DG)aXRX>a%$(Dvd$k)dGofu z{~W`)IV{5L#E*xuJTE7jJp5R3%ID0-h0{gU+&*1Ts_VHrhreAZY=`Bcopp!wFMHgm z7GVh$-tdyiGjE-9)CHSKORrS^6nn4hF?oO7jTx$Xs{-yE5af94B7XSQj73upm^z1B zZRj{B^PQ8+qE`EvqEnK|vD|3(Lu|H283px9N;w7H5mQUvpLfWb_C)OZy%-<q{r~T# zD>Ix>+JAjT$p3G0t~;AduCJ<mvu9)CoXd9~xUV=Res}qb75hAeG76I)DD^C{d>$FT zc6MFf#oSvGrkZawY&Yya`tQ}eALSQsbbU{2x>4C8!6B6Lk>}5E=X1$zK@pyxS4EkZ zZ1^<&4@-&iF^6LpBYmgao?0X(%6VfV^TV$@Qb6gf07w9VK=R+5r3>`Jf4H+%RF)>( ze3%qcA=BQc`UWT`3{|6%{5LnLeuja=E0Kx!N*@H3>B=0svPQS{B2bMOR1Ht^-{_SO z|2}>0xO{VcN8^Xi``aG4$mCzP1FDfg*cGEYL*S{!*Mrg5-p&`wUjD!Ri}d8@u0S<h zP&FLMe`Eh0xiwjNQGfqK&iRucc3zHH^T#wc6jhCniD>TgV~gZxzL{V>wLbF3s>=s+ zPiUj55n*(gcSdJv+={1fcv-49yg4VW)G{Bah6&-GMAg#j{3l{5ecTToZ<`nUew|4d z<0DX=$p}@W1N3_#18?qy_WAQJ<TGEtk$BTsi!1Mv2C7}DkCY@6%Zgqtb$c}Bi%wnF zwbfohwHY8Ypyse7|23I#(lz?(o!!khydGtht()aM_3eir$AC)sp=uO>cA4o%&GHpn zyIWbSr!{U{z;+GSyUj^JH9}A|62SP{^X#|TiToP@*~J^H4Ug1MdH&7eQ9i1BykEvl zZ;+RCHd*Y@wc3A$>xwU%ZIAv%RTF4ZzQj|VbIOFK^Nh>xR7^7ca_-9fM?f_^P`hM+ z?okO!7VD0Aw%4<F=H~ScAHv?3nr1EnszHkPpzZ6Fzsxz*w373<#Az!*p3hhAUcK%G zR3iX22bji!`L{dr*lX;zJ*RVGN#)YxUS-?XaJU22z`{oa=&ub?_W!uqSPzwc-1|DA zne{3EvSpo~KqcHzb5wxtaXD`F`!!EP#>H)$pS$WO&#KDIzrPl!1}Tjt_=wDK`ufVL zbfQCZz^$WUu2v7OZYu?<K}usGl1s15<j&l1yW^Mp<kHPC!e)|pGoGTV37RikK1r_d z%>A9sQ~94%E7h)ZW#<L8w>Y8h0jBw!$ramKP6<~!DQfQdH_4Y{>oIPwOMifBL=kGj eWq^E|gV$BAMVrhm)^9AH!JzuP<h^G|_fG&<$XM6_ literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/info/packs b/tests/gitea-repositories-meta/user2/readme-test.git/objects/info/packs new file mode 100644 index 0000000000000..aad10862f1457 --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/objects/info/packs @@ -0,0 +1,2 @@ +P pack-8933bd634b76f8154310cccb52537a0195e43166.pack + diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.bitmap b/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.bitmap new file mode 100644 index 0000000000000000000000000000000000000000..db39955a2535726c21da5f59d413fb4da9c2eb12 GIT binary patch literal 1642 zcmZ{jO=uHA6vy9~#19k<X#FTEK>|G}Vl9XW+O1w%QfsjW(UKwxq6eWDbLb%*Otnc% zQR~KHPdOB!rFT(K*IPk7h#m?emH2T`M7^~ljqm?9yGgdwfqftU`R$vxGqWc;&YmJg z5hB`|Z+Uh(kzQ;#8GZfgOwWKSd}+P{ou4(8haHhBm&+0mU1J~OCycx|fBi!m0jcEU zU%hW6B)ZDpXQtBQ@tiv`(;l5VRAJy$O^h%mxn}FXO@mlE!m9(ul#F#^HQPFJi6YAZ z@|>BRrpUhldDuuUGr1Tb+l}NmCVvOWBPMeB5tE++WRHpb3(^UYYfa=+kUBtKGLRV| zd7^GV_Zi56o5g84<~nlsO0rdRwJ6S*$rvZ@I4@4K_0P!RM1`WTq?{Mto!ZKRd$>Lc zK~YRBk;7gFUJa0%1r@SjNiFDB4lp)~)olHmxHKvXsjg4lcw<e-=+m#+3q>xWUsJQ7 z@UMW>dKV%d-C{LcpOn>QUQwocle<<ScR*LvUnMWDLdu@-7gfpQD@iCS#)kJwSIO;A zB=!4*pyc;gn`&w{LN|~WWOcBHJPO4?YRJl|ArC+?kRsQ8ktp_fH;u)^?}ieo`N`x* zEh3xA!Jl(p44-|VYg37H{I_Q(M%qSa+@r}(q-o4@G4R6+Zd`aDxAQ%p{dexZoxOp? z-g4RzZ=ud;7%}?|t{-W$?|dzCzP^$l8|vz7LhOy)wm+SSQ<b)d5`FuTGbbMXVc2$j z0N>|k?zc@QOZR2Y!kYOd^oxFS4Mh**I;r_W=R*eq=2NAYGG|-jj0Ssv;q{a%WiEK2 uw}<w<?>0273(tKw<!)&?2hq`s#ro*xx#s>B>v_j;V$YM?vyFwlKmG$ksnc)( literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.idx b/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.idx new file mode 100644 index 0000000000000000000000000000000000000000..561e0f2e9d241a658eca432443f071acb88482ce GIT binary patch literal 4012 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 E06F%2IsgCw literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.pack b/tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.pack new file mode 100644 index 0000000000000000000000000000000000000000..6f5bf1f044bcfb2158b5ca9c6743c51c89a0dba0 GIT binary patch literal 7854 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 literal 0 HcmV?d00001 diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/packed-refs b/tests/gitea-repositories-meta/user2/readme-test.git/packed-refs new file mode 100644 index 0000000000000..2399a8008dcb8 --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/packed-refs @@ -0,0 +1,22 @@ +# pack-refs with: peeled fully-peeled sorted +ea9ef877d1d88af76682d8798418081264f10cfc refs/heads/fallbacks +0d4c14db927c9ffba01fa7e126cc748b5c02c01e refs/heads/fallbacks2 +c66d5b07c2063d3268707f22226c708b589574ef refs/heads/fallbacks3 +89f8426e9eb5eff35c09b3565836c8f8e15d0ce9 refs/heads/fallbacks4 +b0e902496eae435ad03c92a5d479f916ef2d4893 refs/heads/fallbacks5 +84a5500b5cc040b11daf53fc42c542a99589dc76 refs/heads/fallbacks6 +cf406a96e416d7de5c4c1bbfffdd672300c822bf refs/heads/fallbacks7 +0d6ac644b969e9199915a492da9dba08c179fd23 refs/heads/fallbacks8 +5038febc0c57215beb3748d7ae4091a25a4acc93 refs/heads/fallbacks9 +9134e1f178ca4cccf1a197142646f2d7627e8cd5 refs/heads/i18n +744d2441e55bc0010d6b340d303f0106a627ad29 refs/heads/master +3c492566170b057e962c025515ab38bbd7444077 refs/heads/plain +3882d6373a0882a6739b3cd9b24d21c630621234 refs/heads/sp-ace +bf5ed898252eaa50dcc01108ed4417c3ea98a294 refs/heads/special-subdir-.gitea +c03543573ab088ce1cf7090a387d2be621426234 refs/heads/special-subdir-.github +e75957ad9b7e6ed16dda183529ec283db0bbc5fe refs/heads/special-subdir-docs +46f5d5ab33d701642e08c713fab42af89fdd4fea refs/heads/special-subdir-nested +9c0f872256b839c2b97ec22fd348d87b14045513 refs/heads/subdir +d7a854fff61e45b98234d7aa79ecbcb1619cd3dd refs/heads/symlink +30b9c0ed4b1039dbd99f3fb537b84ca507e0549d refs/heads/symlink-loop +41489b7be5c2244d2b7b524dcb31caf3bd1f9ccc refs/heads/txt diff --git a/tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks b/tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks new file mode 100644 index 0000000000000..cf36865a7126f --- /dev/null +++ b/tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks @@ -0,0 +1 @@ +fe495ea336f079ef2bed68648d0ba9a37cdbd4aa diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index 3692b11ecabe5..83ec2e6f27a29 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -256,3 +256,106 @@ func TestViewRepoDirectory(t *testing.T) { assert.Zero(t, repoTopics.Length()) assert.Zero(t, repoSummary.Length()) } + +// ensure that the all the different ways to find and render a README work +func TestViewRepoDirectoryReadme(t *testing.T) { + defer tests.PrepareTestEnv(t)() + + // there are many combinations: + // - READMEs can be .md, .txt, or have no extension + // - READMEs can be tagged with a language and even a country code + // - READMEs can be stored in docs/, .gitea/, or .github/ + // - READMEs can be symlinks to other files + // - READMEs can be broken symlinks which should not render + + session := loginUser(t, "user2") + + check := func(name, url, filename, content string) { + t.Run(name, func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req := NewRequest(t, "GET", url) + resp := session.MakeRequest(t, req, http.StatusOK) + + htmlDoc := NewHTMLParser(t, resp.Body) + readmeName := htmlDoc.doc.Find("h4.file-header") + readmeContent := htmlDoc.doc.Find(".file-view") // TODO: add a id="readme" to the output to make this test more precise + + assert.Equal(t, filename, strings.TrimSpace(readmeName.Text())) + assert.Contains(t, readmeContent.Text(), content) + }) + } + + // this doesn't cover all possible cases, just the major branches of the code + + // viewing the top level + check("Home", "/user2/readme-test/", "README.md", "The cake is a lie.") + + // viewing different file extensions + check("md", "/user2/readme-test/src/branch/master/", "README.md", "The cake is a lie.") + check("txt", "/user2/readme-test/src/branch/txt/", "README.txt", "My spoon is too big.") + check("plain", "/user2/readme-test/src/branch/plain/", "README", "Birken my stocks gee howdy") + check("i18n", "/user2/readme-test/src/branch/i18n/", "README.zh.md", "蛋糕是一个谎言") + + // viewing different subdirectories + check("subdir", "/user2/readme-test/src/branch/subdir/libcake", "README.md", "Four pints of sugar.") + check("docs-direct", "/user2/readme-test/src/branch/special-subdir-docs/docs/", "README.md", "This is in docs/") + check("docs", "/user2/readme-test/src/branch/special-subdir-docs/", "docs/README.md", "This is in docs/") + check(".gitea", "/user2/readme-test/src/branch/special-subdir-.gitea/", ".gitea/README.md", "This is in .gitea/") + check(".github", "/user2/readme-test/src/branch/special-subdir-.github/", ".github/README.md", "This is in .github/") + + // symlinks + // symlinks are subtle: + // - they should be able to handle going a reasonable number of times up and down in the tree + // - they shouldn't get stuck on link cycles + // - they should determine the filetype based on the name of the link, not the target + check("symlink", "/user2/readme-test/src/branch/symlink/", "README.md", "This is in some/other/path") + check("symlink-multiple", "/user2/readme-test/src/branch/symlink/some/", "README.txt", "This is in some/other/path") + check("symlink-up-and-down", "/user2/readme-test/src/branch/symlink/up/back/down/down", "README.md", "It's a me, mario") + + // testing fallback rules + // READMEs are searched in this order: + // - [README.zh-cn.md, README.zh_cn.md, README.zh.md, README_zh.md, README.md, README.txt, README, + // docs/README.zh-cn.md, docs/README.zh_cn.md, docs/README.zh.md, docs/README_zh.md, docs/README.md, docs/README.txt, docs/README, + // .gitea/README.zh-cn.md, .gitea/README.zh_cn.md, .gitea/README.zh.md, .gitea/README_zh.md, .gitea/README.md, .gitea/README.txt, .gitea/README, + + // .github/README.zh-cn.md, .github/README.zh_cn.md, .github/README.zh.md, .github/README_zh.md, .github/README.md, .github/README.txt, .github/README] + // and a broken/looped symlink counts as not existing at all and should be skipped. + // again, this doesn't cover all cases, but it covers a few + check("fallback/top", "/user2/readme-test/src/branch/fallbacks/", "README.en.md", "This is README.en.md") + check("fallback/2", "/user2/readme-test/src/branch/fallbacks2/", "README.md", "This is README.md") + check("fallback/3", "/user2/readme-test/src/branch/fallbacks3/", "README", "This is README") + check("fallback/4", "/user2/readme-test/src/branch/fallbacks4/", "docs/README.en.md", "This is docs/README.en.md") + check("fallback/5", "/user2/readme-test/src/branch/fallbacks5/", "docs/README.md", "This is docs/README.md") + check("fallback/6", "/user2/readme-test/src/branch/fallbacks6/", "docs/README", "This is docs/README") + check("fallback/7", "/user2/readme-test/src/branch/fallbacks7/", ".gitea/README.en.md", "This is .gitea/README.en.md") + check("fallback/8", "/user2/readme-test/src/branch/fallbacks8/", ".gitea/README.md", "This is .gitea/README.md") + check("fallback/9", "/user2/readme-test/src/branch/fallbacks9/", ".gitea/README", "This is .gitea/README") + + // this case tests that broken symlinks count as missing files, instead of rendering their contents + check("fallbacks-broken-symlinks", "/user2/readme-test/src/branch/fallbacks-broken-symlinks/", "docs/README", "This is docs/README") + + // some cases that should NOT render a README + // - /readme + // - /.github/docs/README.md + // - a symlink loop + + missing := func(name, url string) { + t.Run("missing/"+name, func(t *testing.T) { + defer tests.PrintCurrentTest(t)() + + req := NewRequest(t, "GET", url) + resp := session.MakeRequest(t, req, http.StatusOK) + + htmlDoc := NewHTMLParser(t, resp.Body) + _, exists := htmlDoc.doc.Find(".file-view").Attr("class") + fmt.Printf("%s", resp.Body) + + assert.False(t, exists, "README should not have rendered") + }) + } + missing("sp-ace", "/user2/readme-test/src/branch/sp-ace/") + missing("nested-special", "/user2/readme-test/src/branch/special-subdir-nested/subproject") // the special subdirs should only trigger on the repo root + // missing("special-subdir-nested", "/user2/readme-test/src/branch/special-subdir-nested/") // This is currently FAILING, due to a bug introduced in https://github.com/go-gitea/gitea/pull/22177 + missing("symlink-loop", "/user2/readme-test/src/branch/symlink-loop/") +} From 1e666dc5f81bb9f10e059486c1c48139865f1a36 Mon Sep 17 00:00:00 2001 From: Nick Guenther <nick.guenther@polymtl.ca> Date: Thu, 2 Mar 2023 17:37:49 -0500 Subject: [PATCH 2/3] Move comment --- tests/integration/repo_test.go | 4 ++-- 1 file changed, 2 insertions(+), 2 deletions(-) diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index 83ec2e6f27a29..1b9fdfa9f1b82 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -267,6 +267,8 @@ func TestViewRepoDirectoryReadme(t *testing.T) { // - READMEs can be stored in docs/, .gitea/, or .github/ // - READMEs can be symlinks to other files // - READMEs can be broken symlinks which should not render + // + // this doesn't cover all possible cases, just the major branches of the code session := loginUser(t, "user2") @@ -286,8 +288,6 @@ func TestViewRepoDirectoryReadme(t *testing.T) { }) } - // this doesn't cover all possible cases, just the major branches of the code - // viewing the top level check("Home", "/user2/readme-test/", "README.md", "The cake is a lie.") From 7523b8340796276909b28a05b256e4d1af89162d Mon Sep 17 00:00:00 2001 From: Nick Guenther <nick.guenther@polymtl.ca> Date: Thu, 2 Mar 2023 17:56:14 -0500 Subject: [PATCH 3/3] Test for rendered README file type --- tests/integration/repo_test.go | 54 ++++++++++++++++++---------------- 1 file changed, 28 insertions(+), 26 deletions(-) diff --git a/tests/integration/repo_test.go b/tests/integration/repo_test.go index 1b9fdfa9f1b82..c887f6d50ac7e 100644 --- a/tests/integration/repo_test.go +++ b/tests/integration/repo_test.go @@ -272,7 +272,7 @@ func TestViewRepoDirectoryReadme(t *testing.T) { session := loginUser(t, "user2") - check := func(name, url, filename, content string) { + check := func(name, url, expectedFilename, expectedReadmeType, expectedContent string) { t.Run(name, func(t *testing.T) { defer tests.PrintCurrentTest(t)() @@ -282,36 +282,38 @@ func TestViewRepoDirectoryReadme(t *testing.T) { htmlDoc := NewHTMLParser(t, resp.Body) readmeName := htmlDoc.doc.Find("h4.file-header") readmeContent := htmlDoc.doc.Find(".file-view") // TODO: add a id="readme" to the output to make this test more precise + readmeType, _ := readmeContent.Attr("class") - assert.Equal(t, filename, strings.TrimSpace(readmeName.Text())) - assert.Contains(t, readmeContent.Text(), content) + assert.Equal(t, expectedFilename, strings.TrimSpace(readmeName.Text())) + assert.Contains(t, readmeType, expectedReadmeType) + assert.Contains(t, readmeContent.Text(), expectedContent) }) } // viewing the top level - check("Home", "/user2/readme-test/", "README.md", "The cake is a lie.") + check("Home", "/user2/readme-test/", "README.md", "markdown", "The cake is a lie.") // viewing different file extensions - check("md", "/user2/readme-test/src/branch/master/", "README.md", "The cake is a lie.") - check("txt", "/user2/readme-test/src/branch/txt/", "README.txt", "My spoon is too big.") - check("plain", "/user2/readme-test/src/branch/plain/", "README", "Birken my stocks gee howdy") - check("i18n", "/user2/readme-test/src/branch/i18n/", "README.zh.md", "蛋糕是一个谎言") + check("md", "/user2/readme-test/src/branch/master/", "README.md", "markdown", "The cake is a lie.") + check("txt", "/user2/readme-test/src/branch/txt/", "README.txt", "plain-text", "My spoon is too big.") + check("plain", "/user2/readme-test/src/branch/plain/", "README", "plain-text", "Birken my stocks gee howdy") + check("i18n", "/user2/readme-test/src/branch/i18n/", "README.zh.md", "markdown", "蛋糕是一个谎言") // viewing different subdirectories - check("subdir", "/user2/readme-test/src/branch/subdir/libcake", "README.md", "Four pints of sugar.") - check("docs-direct", "/user2/readme-test/src/branch/special-subdir-docs/docs/", "README.md", "This is in docs/") - check("docs", "/user2/readme-test/src/branch/special-subdir-docs/", "docs/README.md", "This is in docs/") - check(".gitea", "/user2/readme-test/src/branch/special-subdir-.gitea/", ".gitea/README.md", "This is in .gitea/") - check(".github", "/user2/readme-test/src/branch/special-subdir-.github/", ".github/README.md", "This is in .github/") + check("subdir", "/user2/readme-test/src/branch/subdir/libcake", "README.md", "markdown", "Four pints of sugar.") + check("docs-direct", "/user2/readme-test/src/branch/special-subdir-docs/docs/", "README.md", "markdown", "This is in docs/") + check("docs", "/user2/readme-test/src/branch/special-subdir-docs/", "docs/README.md", "markdown", "This is in docs/") + check(".gitea", "/user2/readme-test/src/branch/special-subdir-.gitea/", ".gitea/README.md", "markdown", "This is in .gitea/") + check(".github", "/user2/readme-test/src/branch/special-subdir-.github/", ".github/README.md", "markdown", "This is in .github/") // symlinks // symlinks are subtle: // - they should be able to handle going a reasonable number of times up and down in the tree // - they shouldn't get stuck on link cycles // - they should determine the filetype based on the name of the link, not the target - check("symlink", "/user2/readme-test/src/branch/symlink/", "README.md", "This is in some/other/path") - check("symlink-multiple", "/user2/readme-test/src/branch/symlink/some/", "README.txt", "This is in some/other/path") - check("symlink-up-and-down", "/user2/readme-test/src/branch/symlink/up/back/down/down", "README.md", "It's a me, mario") + check("symlink", "/user2/readme-test/src/branch/symlink/", "README.md", "markdown", "This is in some/other/path") + check("symlink-multiple", "/user2/readme-test/src/branch/symlink/some/", "README.txt", "plain-text", "This is in some/other/path") + check("symlink-up-and-down", "/user2/readme-test/src/branch/symlink/up/back/down/down", "README.md", "markdown", "It's a me, mario") // testing fallback rules // READMEs are searched in this order: @@ -322,18 +324,18 @@ func TestViewRepoDirectoryReadme(t *testing.T) { // .github/README.zh-cn.md, .github/README.zh_cn.md, .github/README.zh.md, .github/README_zh.md, .github/README.md, .github/README.txt, .github/README] // and a broken/looped symlink counts as not existing at all and should be skipped. // again, this doesn't cover all cases, but it covers a few - check("fallback/top", "/user2/readme-test/src/branch/fallbacks/", "README.en.md", "This is README.en.md") - check("fallback/2", "/user2/readme-test/src/branch/fallbacks2/", "README.md", "This is README.md") - check("fallback/3", "/user2/readme-test/src/branch/fallbacks3/", "README", "This is README") - check("fallback/4", "/user2/readme-test/src/branch/fallbacks4/", "docs/README.en.md", "This is docs/README.en.md") - check("fallback/5", "/user2/readme-test/src/branch/fallbacks5/", "docs/README.md", "This is docs/README.md") - check("fallback/6", "/user2/readme-test/src/branch/fallbacks6/", "docs/README", "This is docs/README") - check("fallback/7", "/user2/readme-test/src/branch/fallbacks7/", ".gitea/README.en.md", "This is .gitea/README.en.md") - check("fallback/8", "/user2/readme-test/src/branch/fallbacks8/", ".gitea/README.md", "This is .gitea/README.md") - check("fallback/9", "/user2/readme-test/src/branch/fallbacks9/", ".gitea/README", "This is .gitea/README") + check("fallback/top", "/user2/readme-test/src/branch/fallbacks/", "README.en.md", "markdown", "This is README.en.md") + check("fallback/2", "/user2/readme-test/src/branch/fallbacks2/", "README.md", "markdown", "This is README.md") + check("fallback/3", "/user2/readme-test/src/branch/fallbacks3/", "README", "plain-text", "This is README") + check("fallback/4", "/user2/readme-test/src/branch/fallbacks4/", "docs/README.en.md", "markdown", "This is docs/README.en.md") + check("fallback/5", "/user2/readme-test/src/branch/fallbacks5/", "docs/README.md", "markdown", "This is docs/README.md") + check("fallback/6", "/user2/readme-test/src/branch/fallbacks6/", "docs/README", "plain-text", "This is docs/README") + check("fallback/7", "/user2/readme-test/src/branch/fallbacks7/", ".gitea/README.en.md", "markdown", "This is .gitea/README.en.md") + check("fallback/8", "/user2/readme-test/src/branch/fallbacks8/", ".gitea/README.md", "markdown", "This is .gitea/README.md") + check("fallback/9", "/user2/readme-test/src/branch/fallbacks9/", ".gitea/README", "plain-text", "This is .gitea/README") // this case tests that broken symlinks count as missing files, instead of rendering their contents - check("fallbacks-broken-symlinks", "/user2/readme-test/src/branch/fallbacks-broken-symlinks/", "docs/README", "This is docs/README") + check("fallbacks-broken-symlinks", "/user2/readme-test/src/branch/fallbacks-broken-symlinks/", "docs/README", "plain-text", "This is docs/README") // some cases that should NOT render a README // - /readme