mirror of
https://github.com/go-gitea/gitea
synced 2025-02-18 22:19:38 +01:00
Test renderReadmeFile (#23185)
Add test coverage to the important features of
[`routers.web.repo.renderReadmeFile`](067b0c2664/routers/web/repo/view.go (L273)
);
namely that:
- it can handle looking in docs/, .gitea/, and .github/
- it can handle choosing between multiple competing READMEs
- it prefers the localized README to the markdown README to the
plaintext README
- it can handle broken symlinks when processing all the options
- it uses the name of the symlink, not the name of the target of the
symlink
This commit is contained in:
parent
c5573dbc0f
commit
52e24167e5
@ -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}
|
||||
|
@ -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)
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
1
tests/gitea-repositories-meta/user2/readme-test.git/HEAD
Normal file
1
tests/gitea-repositories-meta/user2/readme-test.git/HEAD
Normal file
@ -0,0 +1 @@
|
||||
ref: refs/heads/master
|
@ -0,0 +1,4 @@
|
||||
[core]
|
||||
repositoryformatversion = 0
|
||||
filemode = true
|
||||
bare = true
|
@ -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]
|
||||
# *~
|
@ -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
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/12/11481f7314efbfe4e44703170d96c8fac8172b
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/12/11481f7314efbfe4e44703170d96c8fac8172b
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/17/2343566bf11fc71ba4acf8d2ea70d12bc1d037
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/17/2343566bf11fc71ba4acf8d2ea70d12bc1d037
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/1a/48cae3f18ccd9c929e6608f67087dbaac3cf9e
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/1e/1e08102cf1b1fc01c069c88ee75445974363ab
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/1e/1e08102cf1b1fc01c069c88ee75445974363ab
Normal file
Binary file not shown.
2
tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355
Normal file
2
tests/gitea-repositories-meta/user2/readme-test.git/objects/21/470f9b3e8ff24e0fa083d2dbc447f4c3401355
Normal file
@ -0,0 +1,2 @@
|
||||
x<01>Ž;Â0@™s
|
||||
_€*NÒÄH±±1q×u(¢?•tàöTˆ0¾á==™†áQÀ·+‹*4¤Ìd¹¥h“SÌη.z¢à°¢Í™Z3ó¢ctˆ<74>0'<27>As“5hÉzL¶=D¡ÌB˜\cx-Ý´Àõ!O¸¬›ÚéÇqÃêþÃó<õï¡ô•ð 0¦T×装½5ò=-›õÃÜôU sß7,Oó#ÆMÜ
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/23/65bfe0c5714e2e3f2d53bb302b10d8d5b4fc7d
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/38/9d08c6a71d024a91f14089007cd789cd977ca6
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/38/9d08c6a71d024a91f14089007cd789cd977ca6
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/3a/a8f4e0e1a535f0f9e0ae40e6ec1bce42642bc4
Normal file
Binary file not shown.
1
tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9
Normal file
1
tests/gitea-repositories-meta/user2/readme-test.git/objects/3b/23d7f1a9cb904cb46f5f2272bfa5ed5f871fb9
Normal file
@ -0,0 +1 @@
|
||||
x<01>ÎM †aל‚Ø0&ƸsçÊئô'•.¼½Õx—ïâùòñ4]•õ®.)ÉDÖñQÅ|@b6Xbdƒì}Ö2+b¦%<25>Tè ƒI>g<> 2<>7QÇÀˆ. (c µ¶Ó"o÷òºn´M‹<<3C>[6<>_^橼†Z¦³Tç¬Uƹ øû´nêÿ
qOÏ*3•ˆ{ñ™²N\
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/50/6ff7310f420e878595b4bc8f11688e3f0ae14e
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/50/6ff7310f420e878595b4bc8f11688e3f0ae14e
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/58/3eb775c596858380273492759d39081d65d029
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/58/3eb775c596858380273492759d39081d65d029
Normal file
Binary file not shown.
3
tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8
Normal file
3
tests/gitea-repositories-meta/user2/readme-test.git/objects/60/ea618ae7d4ecbe9c1962591c7da1b05bb1a5c8
Normal file
@ -0,0 +1,3 @@
|
||||
x<01>Ž;Â0@™s
|
||||
_€*N뤕bccâŽëЊþTÒ<54>ÛS!NÀø†÷ôdÇ>ƒ«Ü!¯ªÖ„LuUlÙ#qô¡´”líQÅ,¼ê”¡Œ®lCBn$6¶’XùDɹàbbÒ–R0ÅÆð–»y…[/O¸n»Úé
|
||||
§iÇâñÃË2ï1…ðЇ@„e<E2809E>p´d‘ïiÞÿ殯‰‡!²<Í™ÜN—
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/6a/b05db4c52530726c1856eb558228e9d1949e7f
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/6a/b05db4c52530726c1856eb558228e9d1949e7f
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/71/60a063b5544b5a78131b94f47bfd200046eda2
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/71/60a063b5544b5a78131b94f47bfd200046eda2
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/75/6c70c97047d8aeb11ca3c71edd9fb76cefee9c
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/2b9f991d99362eb827b67f4ae2f5fbc5fa2271
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/792e709143fb0f021da2371e5f40d1bcc284fd
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/7f/792e709143fb0f021da2371e5f40d1bcc284fd
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/82/817856dadc7f6b944633e1b77d5b6e302dde06
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/82/817856dadc7f6b944633e1b77d5b6e302dde06
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/8b/4149e7dede3cd53ba11c64c88b057c5fe2c200
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/8b/4149e7dede3cd53ba11c64c88b057c5fe2c200
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/93/54813d81053c14afe878a9f056b937ec42bb48
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/93/54813d81053c14afe878a9f056b937ec42bb48
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/9c/72c10e55e7d6ea21f591aa424e2625e8ad8094
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/9c/72c10e55e7d6ea21f591aa424e2625e8ad8094
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/a3/cd04bb110e17591ac04e156c7df2c2f5c96fa6
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b0/e851a5619e2d6cee1da25a15ab67305f0861ec
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b0/e851a5619e2d6cee1da25a15ab67305f0861ec
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b4/4c8eb00bdaf0522de61e591fee5f66851ef4b5
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b8/eaa80ad86072e1f23d2638842154ce9aceff8d
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/b8/eaa80ad86072e1f23d2638842154ce9aceff8d
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/d5/34f914944c3c943a6bdb677d869ac54934928d
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/d5/34f914944c3c943a6bdb677d869ac54934928d
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/e2/f9904cd97b4045feecfffef5a426e9461bee70
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/e2/f9904cd97b4045feecfffef5a426e9461bee70
Normal file
Binary file not shown.
3
tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f
Normal file
3
tests/gitea-repositories-meta/user2/readme-test.git/objects/e3/a6fd8fe49e323ee10017f72b777a53fbd8076f
Normal file
@ -0,0 +1,3 @@
|
||||
x<01>ÎM
|
||||
1†a×=E. ¤mšŽ âÎ<C3A2>wh›¨ƒó#µ"ÞÞA<<3C>Ëgñ~|eǾ<C387>#»jU:×ÙØ–$%ž9o‰Ø{µ9F ™Õ£QdsOU§‘H‘ÕrA´(œ=¡xôçEœØÅ$nkÒ³]ç
|
||||
§¾Üàø\Ò«VØM7—÷yx<79>mØ”´Ë1ê-¬1 šò}Ú–êÿ
3Ì/%=úf>&L¨
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/e7/bf02fcfa7a86f7fe9e8158b55d58ddf9d877ec
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/ea/57c91ddb8b4ac705b5ac4c34c7a48f2d0fc180
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/fe/495ea336f079ef2bed68648d0ba9a37cdbd4aa
Normal file
Binary file not shown.
Binary file not shown.
@ -0,0 +1,2 @@
|
||||
P pack-8933bd634b76f8154310cccb52537a0195e43166.pack
|
||||
|
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.bitmap
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.bitmap
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.idx
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.idx
Normal file
Binary file not shown.
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.pack
Normal file
BIN
tests/gitea-repositories-meta/user2/readme-test.git/objects/pack/pack-8933bd634b76f8154310cccb52537a0195e43166.pack
Normal file
Binary file not shown.
@ -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
|
1
tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks
Normal file
1
tests/gitea-repositories-meta/user2/readme-test.git/refs/heads/fallbacks-broken-symlinks
Normal file
@ -0,0 +1 @@
|
||||
fe495ea336f079ef2bed68648d0ba9a37cdbd4aa
|
@ -257,6 +257,111 @@ func TestViewRepoDirectory(t *testing.T) {
|
||||
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
|
||||
//
|
||||
// this doesn't cover all possible cases, just the major branches of the code
|
||||
|
||||
session := loginUser(t, "user2")
|
||||
|
||||
check := func(name, url, expectedFilename, expectedReadmeType, expectedContent 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
|
||||
readmeType, _ := readmeContent.Attr("class")
|
||||
|
||||
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", "markdown", "The cake is a lie.")
|
||||
|
||||
// viewing different file extensions
|
||||
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", "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", "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:
|
||||
// - [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", "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", "plain-text", "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/")
|
||||
}
|
||||
|
||||
func TestMarkDownImage(t *testing.T) {
|
||||
defer tests.PrepareTestEnv(t)()
|
||||
|
||||
|
Loading…
Reference in New Issue
Block a user