@@ -20,6 +20,7 @@ import (
2020 "code.gitea.io/gitea/services/migrations"
2121 mirror_service "code.gitea.io/gitea/services/mirror"
2222 repo_service "code.gitea.io/gitea/services/repository"
23+ wiki_service "code.gitea.io/gitea/services/wiki"
2324 "code.gitea.io/gitea/tests"
2425
2526 "github.com/stretchr/testify/assert"
@@ -29,6 +30,10 @@ func TestMirrorPush(t *testing.T) {
2930 onGiteaRun (t , testMirrorPush )
3031}
3132
33+ func TestMirrorPushWikiDefaultBranchMismatch (t * testing.T ) {
34+ onGiteaRun (t , testMirrorPushWikiDefaultBranchMismatch )
35+ }
36+
3237func testMirrorPush (t * testing.T , u * url.URL ) {
3338 setting .Migrations .AllowLocalNetworks = true
3439 assert .NoError (t , migrations .Init ())
@@ -77,6 +82,45 @@ func testMirrorPush(t *testing.T, u *url.URL) {
7782 assert .Empty (t , mirrors )
7883}
7984
85+ func testMirrorPushWikiDefaultBranchMismatch (t * testing.T , u * url.URL ) {
86+ setting .Migrations .AllowLocalNetworks = true
87+ assert .NoError (t , migrations .Init ())
88+
89+ _ = db .TruncateBeans (t .Context (), & repo_model.PushMirror {})
90+ user := unittest .AssertExistsAndLoadBean (t , & user_model.User {ID : 2 })
91+ srcRepo := unittest .AssertExistsAndLoadBean (t , & repo_model.Repository {ID : 1 })
92+
93+ mirrorRepo , err := repo_service .CreateRepositoryDirectly (t .Context (), user , user , repo_service.CreateRepoOptions {
94+ Name : "test-push-mirror-wiki" ,
95+ }, true )
96+ assert .NoError (t , err )
97+
98+ assert .NoError (t , wiki_service .AddWikiPage (t .Context (), user , mirrorRepo , wiki_service .WebPath ("Home" ), "Mirror wiki content" , "init wiki" ))
99+
100+ mirrorRepo .DefaultBranch = "mirror-head"
101+ assert .NoError (t , repo_model .UpdateRepositoryColsNoAutoTime (t .Context (), mirrorRepo , "default_branch" ))
102+
103+ gitRepo , err := gitrepo .OpenRepository (t .Context (), mirrorRepo .WikiStorageRepo ())
104+ assert .NoError (t , err )
105+ defer gitRepo .Close ()
106+
107+ wikiCommitID , err := gitrepo .GetBranchCommitID (t .Context (), mirrorRepo .WikiStorageRepo (), mirrorRepo .DefaultWikiBranch )
108+ assert .NoError (t , err )
109+ assert .NoError (t , gitRepo .CreateBranch ("mirror-head" , wikiCommitID ))
110+
111+ session := loginUser (t , user .Name )
112+
113+ pushMirrorURL := fmt .Sprintf ("%s%s/%s" , u .String (), url .PathEscape (user .Name ), url .PathEscape (mirrorRepo .Name ))
114+ testCreatePushMirror (t , session , user .Name , srcRepo .Name , pushMirrorURL , user .LowerName , userPassword , "0" )
115+
116+ mirrors , _ , err := repo_model .GetPushMirrorsByRepoID (t .Context (), srcRepo .ID , db.ListOptions {})
117+ assert .NoError (t , err )
118+ assert .Len (t , mirrors , 1 )
119+
120+ ok := mirror_service .SyncPushMirror (t .Context (), mirrors [0 ].ID )
121+ assert .True (t , ok )
122+ }
123+
80124func testCreatePushMirror (t * testing.T , session * TestSession , owner , repo , address , username , password , interval string ) {
81125 req := NewRequestWithValues (t , "POST" , fmt .Sprintf ("/%s/%s/settings" , url .PathEscape (owner ), url .PathEscape (repo )), map [string ]string {
82126 "_csrf" : GetUserCSRFToken (t , session ),
0 commit comments