diff --git a/modules/setting/git.go b/modules/setting/git.go
index 3dfec787bf..123ba515a7 100644
--- a/modules/setting/git.go
+++ b/modules/setting/git.go
@@ -95,6 +95,17 @@ func loadGitFrom(rootCfg ConfigProvider) {
GitConfig.SetOption("core.logAllRefUpdates", "true")
GitConfig.SetOption("gc.reflogExpire", "90")
+ GitConfig.SetOption("transfer.fsckObjects", "true")
+ // To ignore specific warnings they have to be set for all of the three
+ // scenarios. Per git-config(1): "To uniformly configure the same fsck
+ // settings in different circumstances, all three of them must be set to the
+ // same values."
+ for _, prefix := range []string{"fsck.", "fetch.fsck.", "receive.fsck."} {
+ GitConfig.SetOption(prefix+"badTimezone", "ignore")
+ GitConfig.SetOption(prefix+"missingSpaceBeforeDate", "ignore")
+ GitConfig.SetOption(prefix+"zeroPaddedFilemode", "ignore")
+ }
+
for _, key := range secGitConfig.Keys() {
GitConfig.SetOption(key.Name(), key.String())
}
diff --git a/modules/setting/git_test.go b/modules/setting/git_test.go
index 7cbf1d70a3..e1cac8ff19 100644
--- a/modules/setting/git_test.go
+++ b/modules/setting/git_test.go
@@ -32,6 +32,32 @@ diff.algorithm = other
require.NoError(t, err)
loadGitFrom(cfg)
assert.Equal(t, "other", GitConfig.Options["diff.algorithm"])
+
+ t.Run("Fsck options", func(t *testing.T) {
+ cfg, err := NewConfigProviderFromData(`
+[git.config]
+receive.fsckObjects = false
+fetch.fsck.zeroPaddedFilemode = warn
+fsck.missingSpaceBeforeDate = error
+`)
+ require.NoError(t, err)
+ loadGitFrom(cfg)
+ assert.Equal(t, "false", GitConfig.Options["receive.fsckobjects"])
+ assert.Equal(t, "true", GitConfig.Options["transfer.fsckobjects"])
+ assert.NotContains(t, GitConfig.Options, "fetch.fsckobjects")
+
+ assert.Equal(t, "ignore", GitConfig.Options["fsck.badtimezone"])
+ assert.Equal(t, "error", GitConfig.Options["fsck.missingspacebeforedate"])
+ assert.Equal(t, "ignore", GitConfig.Options["fsck.zeropaddedfilemode"])
+
+ assert.Equal(t, "ignore", GitConfig.Options["receive.fsck.badtimezone"])
+ assert.Equal(t, "ignore", GitConfig.Options["receive.fsck.missingspacebeforedate"])
+ assert.Equal(t, "ignore", GitConfig.Options["receive.fsck.zeropaddedfilemode"])
+
+ assert.Equal(t, "ignore", GitConfig.Options["fetch.fsck.badtimezone"])
+ assert.Equal(t, "ignore", GitConfig.Options["fetch.fsck.missingspacebeforedate"])
+ assert.Equal(t, "warn", GitConfig.Options["fetch.fsck.zeropaddedfilemode"])
+ })
}
func TestGitReflog(t *testing.T) {
diff --git a/routers/web/repo/wiki_test.go b/routers/web/repo/wiki_test.go
index 5709b32257..4a8195e04e 100644
--- a/routers/web/repo/wiki_test.go
+++ b/routers/web/repo/wiki_test.go
@@ -86,7 +86,7 @@ func TestWiki(t *testing.T) {
Wiki(ctx)
assert.Equal(t, http.StatusOK, ctx.Resp.Status())
assert.EqualValues(t, "Home", ctx.Data["Title"])
- assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File", "XSS"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestWikiPages(t *testing.T) {
@@ -96,7 +96,7 @@ func TestWikiPages(t *testing.T) {
contexttest.LoadRepo(t, ctx, 1)
WikiPages(ctx)
assert.Equal(t, http.StatusOK, ctx.Resp.Status())
- assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File", "XSS"}, ctx.Data["Pages"])
+ assertPagesMetas(t, []string{"Home", "Long Page", "Page With Image", "Page With Spaced Name", "Unescaped File"}, ctx.Data["Pages"])
}
func TestNewWiki(t *testing.T) {
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/description b/tests/gitea-repositories-meta/user2/repo1.wiki.git/description
deleted file mode 100644
index 498b267a8c..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/description
+++ /dev/null
@@ -1 +0,0 @@
-Unnamed repository; edit this file 'description' to name the repository.
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/info/refs b/tests/gitea-repositories-meta/user2/repo1.wiki.git/info/refs
new file mode 100644
index 0000000000..a06031a5e0
--- /dev/null
+++ b/tests/gitea-repositories-meta/user2/repo1.wiki.git/info/refs
@@ -0,0 +1 @@
+d49ac742d44063dcf69d4e0afe725813b777dd89 refs/heads/master
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0c/f15c3f66ec8384480ed9c3cf87c9e97fbb0ec3 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0c/f15c3f66ec8384480ed9c3cf87c9e97fbb0ec3
deleted file mode 100644
index c0314c5584..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0c/f15c3f66ec8384480ed9c3cf87c9e97fbb0ec3
+++ /dev/null
@@ -1,2 +0,0 @@
-xŽÑmÄ DóMÛÀY¬Í�¢(ùJ©`�5ÇÉœ-›K*Ki,Hi!?£Ñ<éiâVki0ZÿÔXH“D(Z6ĨGòSb» 3“JDÞhµó!÷uB¬ÌDaJp¡ íœÙèFôLƹ4+~´ëvÀ;‡£È
-eýäžõç[Nx>KÝäÎü‡_så²q«/€]09MHpѤµêk¿Üä_dê-%¸í’‡Ûž�ï vÎ_¥]¡Ô^Õ/èI[t
\ No newline at end of file
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0d/ca5bd9b5d7ef937710e056f575e86c0184ba85 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0d/ca5bd9b5d7ef937710e056f575e86c0184ba85
deleted file mode 100644
index a46c1925ec..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/0d/ca5bd9b5d7ef937710e056f575e86c0184ba85 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/2c/54faec6c45d31c1abfaecdab471eac6633738a b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/2c/54faec6c45d31c1abfaecdab471eac6633738a
deleted file mode 100644
index 4cf6cdaa6f..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/2c/54faec6c45d31c1abfaecdab471eac6633738a and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/32/5dc4f8e9344e6668f21536a69d5f1d4ed53ca3 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/32/5dc4f8e9344e6668f21536a69d5f1d4ed53ca3
deleted file mode 100644
index d52aa8e1ff..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/32/5dc4f8e9344e6668f21536a69d5f1d4ed53ca3 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/42/3313fbd38093bb10d0c8387db9105409c6f196 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/42/3313fbd38093bb10d0c8387db9105409c6f196
deleted file mode 100644
index bf4ae859f6..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/42/3313fbd38093bb10d0c8387db9105409c6f196 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a
deleted file mode 100644
index eeae5d2b64..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/53/0ab3e043bf2295fd1cec3129bf203a4349597a and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/71/911bf48766c7181518c1070911019fbb00b1fc b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/71/911bf48766c7181518c1070911019fbb00b1fc
deleted file mode 100644
index 84ade81980..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/71/911bf48766c7181518c1070911019fbb00b1fc
+++ /dev/null
@@ -1 +0,0 @@
-xÆM‚@†á¯MÛ àºré›°6ñœ&&&¬ü9LežÅ›w½Ý×åt<#ÞñÃÍ¡ªmv-·•0w¬b¦¢jyÌ–†¤Ú—~Ý‹[žæÉçý=HÄ÷.¾"à‚íµÄçÇ�=
\ No newline at end of file
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/72/fc6251cc648e914c10009d31431fa2e38b9a20 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/72/fc6251cc648e914c10009d31431fa2e38b9a20
deleted file mode 100644
index 052fdf35a5..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/72/fc6251cc648e914c10009d31431fa2e38b9a20 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/74/d5a0d73db9b9ef7aa9978eb7a099b08f54d45e b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/74/d5a0d73db9b9ef7aa9978eb7a099b08f54d45e
deleted file mode 100644
index bcb0e0075c..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/74/d5a0d73db9b9ef7aa9978eb7a099b08f54d45e and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/7c/d7c8fa852973c72c66eb120a6677c54a8697f7 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/7c/d7c8fa852973c72c66eb120a6677c54a8697f7
deleted file mode 100644
index 9c26495605..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/7c/d7c8fa852973c72c66eb120a6677c54a8697f7 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/89/43a1d5f93c00439d5ffc0f8e36f5d60abae46c b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/89/43a1d5f93c00439d5ffc0f8e36f5d60abae46c
deleted file mode 100644
index 062641bee7..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/89/43a1d5f93c00439d5ffc0f8e36f5d60abae46c and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/a6/dc41d9e96df65286a79f5625ec51635e47f752 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/a6/dc41d9e96df65286a79f5625ec51635e47f752
deleted file mode 100644
index 1aecac1f1b..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/a6/dc41d9e96df65286a79f5625ec51635e47f752 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253
deleted file mode 100644
index ab5b5954cb..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/bf/29486462016efad8872371078932d8c2cb5253 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e
deleted file mode 100644
index 0474927fd2..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c0/b5b381e2df9f66d11e8c95fe7467b8fb7f3e4e and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c1/0d10b7e655b3dab1f53176db57c8219a5488d6 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c1/0d10b7e655b3dab1f53176db57c8219a5488d6
deleted file mode 100644
index 8a6345dfa5..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c1/0d10b7e655b3dab1f53176db57c8219a5488d6
+++ /dev/null
@@ -1,2 +0,0 @@
-xŽÝmÃ0ƒû¬)n�ú±t2íSèçÓÙ`ņ¥¶“e‚,VY¡/Hâ#È[)¹�EûÒ@NÈq¦è툎Ñr2«)DöÅ0âŒj§C®ìÑLÂ�ŸœaCÓÃ&š4B�v]$Eßí²ðIÓ‘e…¯¼þP×r¿I…sÍe“zªË³~_
-åõÄ[yã‡è¢v£�WíµV=í—›ü˘úH vZ~s»@݉%Á•Ѝ?TÊZH
\ No newline at end of file
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c4/b38c3e1395393f75bbbc2ed10c7eeb577d3b64 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c4/b38c3e1395393f75bbbc2ed10c7eeb577d3b64
deleted file mode 100644
index 6dcfc96676..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/c4/b38c3e1395393f75bbbc2ed10c7eeb577d3b64 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89
deleted file mode 100644
index 9dc276f37d..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/d4/9ac742d44063dcf69d4e0afe725813b777dd89
+++ /dev/null
@@ -1 +0,0 @@
-x��Ín›@…»ž§¸û*ñ†áGjªŒmJ±‰C1–“ì~R0�Ó§i}’*ïU·•ºÊ*gw>éHç˺¶5˜6}§¥€3”)Sh²´0—9ÍTƨáž;2i2Óå®-É^j§óLò4wSžÛªp™mSTÈ‚Û\9V†Ô1Sép"�ºê¸Õ¼|ùùëÇ“„�î.Z>É법us™uíG 63˜…¥ð)"9ÓóGÞ¶.÷å¡.áâO¦ž¬ ò#XþJ$›ØûË ¨?o<1½_Š)nƒ/±~æá6¹ëÕcSûl<ÔXŽiÒ–b3{@Ÿ÷B,g±øÏ ”¯‘ÛËK|½ÆEÐ[ß0\ïƒÉ�aWñÝ¢Ræ|¤øi{º¹žxd…�ÃÉßô9<ÐÙÒ�šg>»¨ŠKOvÉ"D§J„sEàêØœzòÏÆ[Í_s!2Ï¡év%ìe©Èo(½”
\ No newline at end of file
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/df/6b6d9a97608bc8b56d4f30cde5af00f0681ccf b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/df/6b6d9a97608bc8b56d4f30cde5af00f0681ccf
deleted file mode 100644
index 3927778ddf..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/df/6b6d9a97608bc8b56d4f30cde5af00f0681ccf and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/e5/3d079e581fbfdea1075a54d5b621eab0090e52 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/e5/3d079e581fbfdea1075a54d5b621eab0090e52
deleted file mode 100644
index ecdea7f694..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/e5/3d079e581fbfdea1075a54d5b621eab0090e52 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/ea/82fc8777a24b07c26b3a4bf4e2742c03733eab b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/ea/82fc8777a24b07c26b3a4bf4e2742c03733eab
deleted file mode 100644
index 42a8258dbd..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/ea/82fc8777a24b07c26b3a4bf4e2742c03733eab and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/05ec9b5c7a45a10259c1dda7f18434e5d55940 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/05ec9b5c7a45a10259c1dda7f18434e5d55940
deleted file mode 100644
index eaeadaeaee..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/05ec9b5c7a45a10259c1dda7f18434e5d55940 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/4f5a6b7c4f83b606600e43186165854f189530 b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/4f5a6b7c4f83b606600e43186165854f189530
deleted file mode 100644
index a69fc57996..0000000000
Binary files a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/f5/4f5a6b7c4f83b606600e43186165854f189530 and /dev/null differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/info/packs b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/info/packs
new file mode 100644
index 0000000000..e8c040e505
--- /dev/null
+++ b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/info/packs
@@ -0,0 +1,2 @@
+P pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.pack
+
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.bitmap b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.bitmap
new file mode 100644
index 0000000000..0aad4bc145
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.bitmap differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.idx b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.idx
new file mode 100644
index 0000000000..ab6497cfe8
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.idx differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.pack b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.pack
new file mode 100644
index 0000000000..ab624246bf
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.pack differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.rev b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.rev
new file mode 100644
index 0000000000..14fa6a1e0b
Binary files /dev/null and b/tests/gitea-repositories-meta/user2/repo1.wiki.git/objects/pack/pack-dcd8abdfa327da7644d88ee8f092b02a7bb210d4.rev differ
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/packed-refs b/tests/gitea-repositories-meta/user2/repo1.wiki.git/packed-refs
new file mode 100644
index 0000000000..f781b81732
--- /dev/null
+++ b/tests/gitea-repositories-meta/user2/repo1.wiki.git/packed-refs
@@ -0,0 +1,2 @@
+# pack-refs with: peeled fully-peeled sorted
+d49ac742d44063dcf69d4e0afe725813b777dd89 refs/heads/master
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/.gitkeep b/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/.gitkeep
new file mode 100644
index 0000000000..e69de29bb2
diff --git a/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master b/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master
deleted file mode 100644
index bd0c0d7efe..0000000000
--- a/tests/gitea-repositories-meta/user2/repo1.wiki.git/refs/heads/master
+++ /dev/null
@@ -1 +0,0 @@
-f54f5a6b7c4f83b606600e43186165854f189530
diff --git a/tests/integration/api_wiki_test.go b/tests/integration/api_wiki_test.go
index 9639621591..b682523371 100644
--- a/tests/integration/api_wiki_test.go
+++ b/tests/integration/api_wiki_test.go
@@ -223,29 +223,6 @@ func TestAPIListWikiPages(t *testing.T) {
Message: "add unescaped file\n",
},
},
- {
- Title: "XSS",
- HTMLURL: meta[5].HTMLURL,
- SubURL: "XSS",
- LastCommit: &api.WikiCommit{
- ID: "f54f5a6b7c4f83b606600e43186165854f189530",
- Author: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gusted",
- Email: "valid@example.org",
- },
- Date: "2024-01-31T00:00:00Z",
- },
- Committer: &api.CommitUser{
- Identity: api.Identity{
- Name: "Gusted",
- Email: "valid@example.org",
- },
- Date: "2024-01-31T00:00:00Z",
- },
- Message: "Yay XSS",
- },
- },
}
assert.Equal(t, dummymeta, meta)
diff --git a/tests/integration/git_test.go b/tests/integration/git_test.go
index 83853883c1..40ca4d7539 100644
--- a/tests/integration/git_test.go
+++ b/tests/integration/git_test.go
@@ -121,6 +121,7 @@ func testGit(t *testing.T, u *url.URL) {
t.Run("PushForkRemoteMessages", doTestForkPushMessages(httpContext, dstPath))
t.Run("CreateAgitFlowPull", doCreateAgitFlowPull(dstPath, &httpContext, "test/head"))
t.Run("InternalReferences", doInternalReferences(&httpContext, dstPath))
+ t.Run("FsckConsistencyChecks", doFsckConsistencyChecks(dstPath))
t.Run("BranchProtect", doBranchProtect(&httpContext, dstPath))
t.Run("AutoMerge", doAutoPRMerge(&httpContext, dstPath))
t.Run("CreatePRAndSetManuallyMerged", doCreatePRAndSetManuallyMerged(httpContext, httpContext, dstPath, "master", "test-manually-merge"))
@@ -170,6 +171,7 @@ func testGit(t *testing.T, u *url.URL) {
t.Run("PushForkRemoteMessages", doTestForkPushMessages(sshContext, dstPath))
t.Run("CreateAgitFlowPull", doCreateAgitFlowPull(dstPath, &sshContext, "test/head2"))
t.Run("InternalReferences", doInternalReferences(&sshContext, dstPath))
+ t.Run("FsckConsistencyChecks", doFsckConsistencyChecks(dstPath))
t.Run("BranchProtect", doBranchProtect(&sshContext, dstPath))
t.Run("MergeFork", func(t *testing.T) {
defer tests.PrintCurrentTest(t)()
@@ -1337,3 +1339,78 @@ func TestCloneAccessTokenResources(t *testing.T) {
})
})
}
+
+func doFsckConsistencyChecks(dstPath string) func(t *testing.T) {
+ return func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ tree, _, err := git.NewCommand(git.DefaultContext, "rev-parse", "HEAD^{tree}").RunStdString(&git.RunOpts{Dir: dstPath})
+ require.NoError(t, err)
+ head, _, err := git.NewCommand(git.DefaultContext, "rev-parse", "HEAD^{commit}").RunStdString(&git.RunOpts{Dir: dstPath})
+ require.NoError(t, err)
+
+ // Is checked for and should error.
+ t.Run("badName", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ var buf bytes.Buffer
+ buf.WriteString("tree ")
+ buf.WriteString(tree)
+ buf.WriteString("parent ")
+ buf.WriteString(head)
+ buf.WriteString("author @>\n")
+ buf.WriteString("committer @>\n")
+ buf.WriteString("\n")
+
+ commitID, _, err := git.NewCommand(git.DefaultContext, "hash-object", "-t", "commit", "--literally", "--stdin", "-w").RunStdString(&git.RunOpts{Dir: dstPath, Stdin: &buf})
+ require.NoError(t, err)
+ commitID = strings.TrimSpace(commitID)
+
+ _, stdErr, gitErr := git.NewCommand(git.DefaultContext, "push", "origin").AddDynamicArguments(commitID + ":refs/heads/consistency-check").RunStdString(&git.RunOpts{Dir: dstPath})
+ require.Error(t, gitErr)
+ assert.Contains(t, stdErr, "badName: invalid author/committer line - bad name")
+ })
+
+ t.Run("missingSpaceBeforeEmail", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ var buf bytes.Buffer
+ buf.WriteString("tree ")
+ buf.WriteString(tree)
+ buf.WriteString("parent ")
+ buf.WriteString(head)
+ buf.WriteString(`author Gusted 1706659200 +0000`)
+ buf.WriteRune('\n')
+ buf.WriteString(`committer Gusted 1706659200 +0000`)
+ buf.WriteString("\n\n")
+
+ commitID, _, err := git.NewCommand(git.DefaultContext, "hash-object", "-t", "commit", "--literally", "--stdin", "-w").RunStdString(&git.RunOpts{Dir: dstPath, Stdin: &buf})
+ require.NoError(t, err)
+ commitID = strings.TrimSpace(commitID)
+
+ _, stdErr, gitErr := git.NewCommand(git.DefaultContext, "push", "origin").AddDynamicArguments(commitID + ":refs/heads/consistency-check").RunStdString(&git.RunOpts{Dir: dstPath})
+ require.Error(t, gitErr)
+ assert.Contains(t, stdErr, "missingSpaceBeforeEmail: invalid author/committer line - missing space before email")
+ })
+
+ // Is set to be ignored.
+ t.Run("badTimezone", func(t *testing.T) {
+ defer tests.PrintCurrentTest(t)()
+
+ var buf bytes.Buffer
+ buf.WriteString("tree ")
+ buf.WriteString(tree)
+ buf.WriteString("parent ")
+ buf.WriteString(head)
+ buf.WriteString("author name 1234 +\n")
+ buf.WriteString("committer name 1234 +\n")
+ buf.WriteString("\n")
+
+ commitID, _, err := git.NewCommand(git.DefaultContext, "hash-object", "-t", "commit", "--literally", "--stdin", "-w").RunStdString(&git.RunOpts{Dir: dstPath, Stdin: &buf})
+ require.NoError(t, err)
+ commitID = strings.TrimSpace(commitID)
+
+ require.NoError(t, git.NewCommand(git.DefaultContext, "push", "origin").AddDynamicArguments(commitID+":refs/heads/consistency-check").Run(&git.RunOpts{Dir: dstPath}))
+ })
+ }
+}
diff --git a/tests/integration/xss_test.go b/tests/integration/xss_test.go
index 4eb7bc65b1..0b1ba43e02 100644
--- a/tests/integration/xss_test.go
+++ b/tests/integration/xss_test.go
@@ -39,33 +39,6 @@ func TestXSSUserFullName(t *testing.T) {
)
}
-func TestXSSWikiLastCommitInfo(t *testing.T) {
- defer tests.PrepareTestEnv(t)()
- // Check on page view.
- t.Run("Page view", func(t *testing.T) {
- defer tests.PrintCurrentTest(t)()
-
- req := NewRequest(t, http.MethodGet, "/user2/repo1/wiki/XSS")
- resp := MakeRequest(t, req, http.StatusOK)
- htmlDoc := NewHTMLParser(t, resp.Body)
-
- htmlDoc.AssertElement(t, "script.evil", false)
- assert.Contains(t, htmlDoc.Find(".ui.sub.header").Text(), `Gusted edited this page 2024-01-31`)
- })
-
- // Check on revisions page.
- t.Run("Revision page", func(t *testing.T) {
- defer tests.PrintCurrentTest(t)()
-
- req := NewRequest(t, http.MethodGet, "/user2/repo1/wiki/XSS?action=_revision")
- resp := MakeRequest(t, req, http.StatusOK)
- htmlDoc := NewHTMLParser(t, resp.Body)
-
- htmlDoc.AssertElement(t, "script.evil", false)
- assert.Contains(t, htmlDoc.Find(".ui.sub.header").Text(), `Gusted edited this page 2024-01-31`)
- })
-}
-
func TestXSSReviewDismissed(t *testing.T) {
defer unittest.OverrideFixtures("tests/integration/fixtures/TestXSSReviewDismissed")()
defer tests.PrepareTestEnv(t)()