Skip to content

Commit 2b10199

Browse files
authored
Fix init mail render logic (#20704)
This bug affects tests which are sending emails (#20307). Some tests reinitialise the web routes (like `TestNodeinfo`) which messed up the mail templates. There is no reason why the templates should be loaded in the routes method.
1 parent ccf03e1 commit 2b10199

File tree

4 files changed

+17
-29
lines changed

4 files changed

+17
-29
lines changed

routers/web/web.go

-4
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,6 @@ import (
2222
"code.gitea.io/gitea/modules/setting"
2323
"code.gitea.io/gitea/modules/storage"
2424
"code.gitea.io/gitea/modules/structs"
25-
"code.gitea.io/gitea/modules/templates"
2625
"code.gitea.io/gitea/modules/validation"
2726
"code.gitea.io/gitea/modules/web"
2827
"code.gitea.io/gitea/modules/web/routing"
@@ -43,7 +42,6 @@ import (
4342
context_service "code.gitea.io/gitea/services/context"
4443
"code.gitea.io/gitea/services/forms"
4544
"code.gitea.io/gitea/services/lfs"
46-
"code.gitea.io/gitea/services/mailer"
4745

4846
_ "code.gitea.io/gitea/modules/session" // to registers all internal adapters
4947

@@ -152,8 +150,6 @@ func Routes() *web.Route {
152150
common = append(common, h)
153151
}
154152

155-
mailer.InitMailRender(templates.Mailer())
156-
157153
if setting.Service.EnableCaptcha {
158154
// The captcha http.Handler should only fire on /captcha/* so we can just mount this on that url
159155
routes.Route("/captcha/*", "GET,HEAD", append(common, captcha.Captchaer(context.GetImageCaptcha()))...)

services/mailer/mail.go

-6
Original file line numberDiff line numberDiff line change
@@ -55,12 +55,6 @@ var (
5555
subjectRemoveSpaces = regexp.MustCompile(`[\s]+`)
5656
)
5757

58-
// InitMailRender initializes the mail renderer
59-
func InitMailRender(subjectTpl *texttmpl.Template, bodyTpl *template.Template) {
60-
subjectTemplates = subjectTpl
61-
bodyTemplates = bodyTpl
62-
}
63-
6458
// SendTestMail sends a test mail
6559
func SendTestMail(email string) error {
6660
if setting.MailService == nil {

services/mailer/mail_test.go

+14-19
Original file line numberDiff line numberDiff line change
@@ -67,9 +67,8 @@ func prepareMailerTest(t *testing.T) (doer *user_model.User, repo *repo_model.Re
6767
func TestComposeIssueCommentMessage(t *testing.T) {
6868
doer, _, issue, comment := prepareMailerTest(t)
6969

70-
stpl := texttmpl.Must(texttmpl.New("issue/comment").Parse(subjectTpl))
71-
btpl := template.Must(template.New("issue/comment").Parse(bodyTpl))
72-
InitMailRender(stpl, btpl)
70+
subjectTemplates = texttmpl.Must(texttmpl.New("issue/comment").Parse(subjectTpl))
71+
bodyTemplates = template.Must(template.New("issue/comment").Parse(bodyTpl))
7372

7473
recipients := []*user_model.User{{Name: "Test", Email: "[email protected]"}, {Name: "Test2", Email: "[email protected]"}}
7574
msgs, err := composeIssueCommentMessages(&mailCommentContext{
@@ -97,9 +96,8 @@ func TestComposeIssueCommentMessage(t *testing.T) {
9796
func TestComposeIssueMessage(t *testing.T) {
9897
doer, _, issue, _ := prepareMailerTest(t)
9998

100-
stpl := texttmpl.Must(texttmpl.New("issue/new").Parse(subjectTpl))
101-
btpl := template.Must(template.New("issue/new").Parse(bodyTpl))
102-
InitMailRender(stpl, btpl)
99+
subjectTemplates = texttmpl.Must(texttmpl.New("issue/new").Parse(subjectTpl))
100+
bodyTemplates = template.Must(template.New("issue/new").Parse(bodyTpl))
103101

104102
recipients := []*user_model.User{{Name: "Test", Email: "[email protected]"}, {Name: "Test2", Email: "[email protected]"}}
105103
msgs, err := composeIssueCommentMessages(&mailCommentContext{
@@ -128,17 +126,15 @@ func TestTemplateSelection(t *testing.T) {
128126
doer, repo, issue, comment := prepareMailerTest(t)
129127
recipients := []*user_model.User{{Name: "Test", Email: "[email protected]"}}
130128

131-
stpl := texttmpl.Must(texttmpl.New("issue/default").Parse("issue/default/subject"))
132-
texttmpl.Must(stpl.New("issue/new").Parse("issue/new/subject"))
133-
texttmpl.Must(stpl.New("pull/comment").Parse("pull/comment/subject"))
134-
texttmpl.Must(stpl.New("issue/close").Parse("")) // Must default to fallback subject
129+
subjectTemplates = texttmpl.Must(texttmpl.New("issue/default").Parse("issue/default/subject"))
130+
texttmpl.Must(subjectTemplates.New("issue/new").Parse("issue/new/subject"))
131+
texttmpl.Must(subjectTemplates.New("pull/comment").Parse("pull/comment/subject"))
132+
texttmpl.Must(subjectTemplates.New("issue/close").Parse("")) // Must default to fallback subject
135133

136-
btpl := template.Must(template.New("issue/default").Parse("issue/default/body"))
137-
template.Must(btpl.New("issue/new").Parse("issue/new/body"))
138-
template.Must(btpl.New("pull/comment").Parse("pull/comment/body"))
139-
template.Must(btpl.New("issue/close").Parse("issue/close/body"))
140-
141-
InitMailRender(stpl, btpl)
134+
bodyTemplates = template.Must(template.New("issue/default").Parse("issue/default/body"))
135+
template.Must(bodyTemplates.New("issue/new").Parse("issue/new/body"))
136+
template.Must(bodyTemplates.New("pull/comment").Parse("pull/comment/body"))
137+
template.Must(bodyTemplates.New("issue/close").Parse("issue/close/body"))
142138

143139
expect := func(t *testing.T, msg *Message, expSubject, expBody string) {
144140
subject := msg.ToMessage().GetHeader("Subject")
@@ -187,9 +183,8 @@ func TestTemplateServices(t *testing.T) {
187183
expect := func(t *testing.T, issue *issues_model.Issue, comment *issues_model.Comment, doer *user_model.User,
188184
actionType models.ActionType, fromMention bool, tplSubject, tplBody, expSubject, expBody string,
189185
) {
190-
stpl := texttmpl.Must(texttmpl.New("issue/default").Parse(tplSubject))
191-
btpl := template.Must(template.New("issue/default").Parse(tplBody))
192-
InitMailRender(stpl, btpl)
186+
subjectTemplates = texttmpl.Must(texttmpl.New("issue/default").Parse(tplSubject))
187+
bodyTemplates = template.Must(template.New("issue/default").Parse(tplBody))
193188

194189
recipients := []*user_model.User{{Name: "Test", Email: "[email protected]"}}
195190
msg := testComposeIssueCommentMessage(t, &mailCommentContext{

services/mailer/mailer.go

+3
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,7 @@ import (
2424
"code.gitea.io/gitea/modules/process"
2525
"code.gitea.io/gitea/modules/queue"
2626
"code.gitea.io/gitea/modules/setting"
27+
"code.gitea.io/gitea/modules/templates"
2728

2829
"github.com/jaytaylor/html2text"
2930
"gopkg.in/gomail.v2"
@@ -379,6 +380,8 @@ func NewContext() {
379380
}, &Message{})
380381

381382
go graceful.GetManager().RunWithShutdownFns(mailQueue.Run)
383+
384+
subjectTemplates, bodyTemplates = templates.Mailer()
382385
}
383386

384387
// SendAsync send mail asynchronously

0 commit comments

Comments
 (0)