@@ -25,6 +25,7 @@ import (
2525	"code.gitea.io/gitea/modules/markup" 
2626	"code.gitea.io/gitea/modules/setting" 
2727	"code.gitea.io/gitea/modules/storage" 
28+ 	"code.gitea.io/gitea/modules/templates" 
2829	"code.gitea.io/gitea/modules/test" 
2930	"code.gitea.io/gitea/services/attachment" 
3031	sender_service "code.gitea.io/gitea/services/mailer/sender" 
@@ -95,6 +96,13 @@ func prepareMailerBase64Test(t *testing.T) (doer *user_model.User, repo *repo_mo
9596	return  user , repo , issue , att1 , att2 
9697}
9798
99+ func  prepareMailTemplates (name , subjectTmpl , bodyTmpl  string ) {
100+ 	loadedTemplates .Store (& templates.MailTemplates {
101+ 		SubjectTemplates : texttmpl .Must (texttmpl .New (name ).Parse (subjectTmpl )),
102+ 		BodyTemplates :    template .Must (template .New (name ).Parse (bodyTmpl )),
103+ 	})
104+ }
105+ 
98106func  TestComposeIssueComment (t  * testing.T ) {
99107	doer , _ , issue , comment  :=  prepareMailerTest (t )
100108
@@ -107,8 +115,7 @@ func TestComposeIssueComment(t *testing.T) {
107115	setting .IncomingEmail .Enabled  =  true 
108116	defer  func () { setting .IncomingEmail .Enabled  =  false  }()
109117
110- 	subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/comment" ).Parse (subjectTpl ))
111- 	bodyTemplates  =  template .Must (template .New ("issue/comment" ).Parse (bodyTpl ))
118+ 	prepareMailTemplates ("issue/comment" , subjectTpl , bodyTpl )
112119
113120	recipients  :=  []
* user_model.
User {{
Name : 
"Test" , 
Email : 
"[email protected] " }, {
Name : 
"Test2" , 
Email : 
"[email protected] " }}
 114121	msgs , err  :=  composeIssueCommentMessages (t .Context (), & mailComment {
@@ -153,8 +160,7 @@ func TestComposeIssueComment(t *testing.T) {
153160func  TestMailMentionsComment (t  * testing.T ) {
154161	doer , _ , issue , comment  :=  prepareMailerTest (t )
155162	comment .Poster  =  doer 
156- 	subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/comment" ).Parse (subjectTpl ))
157- 	bodyTemplates  =  template .Must (template .New ("issue/comment" ).Parse (bodyTpl ))
163+ 	prepareMailTemplates ("issue/comment" , subjectTpl , bodyTpl )
158164	mails  :=  0 
159165
160166	defer  test .MockVariableValue (& SendAsync , func (msgs  ... * sender_service.Message ) {
@@ -169,9 +175,7 @@ func TestMailMentionsComment(t *testing.T) {
169175func  TestComposeIssueMessage (t  * testing.T ) {
170176	doer , _ , issue , _  :=  prepareMailerTest (t )
171177
172- 	subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/new" ).Parse (subjectTpl ))
173- 	bodyTemplates  =  template .Must (template .New ("issue/new" ).Parse (bodyTpl ))
174- 
178+ 	prepareMailTemplates ("issue/new" , subjectTpl , bodyTpl )
175179	recipients  :=  []
* user_model.
User {{
Name : 
"Test" , 
Email : 
"[email protected] " }, {
Name : 
"Test2" , 
Email : 
"[email protected] " }}
 176180	msgs , err  :=  composeIssueCommentMessages (t .Context (), & mailComment {
177181		Issue : issue , Doer : doer , ActionType : activities_model .ActionCreateIssue ,
@@ -200,15 +204,14 @@ func TestTemplateSelection(t *testing.T) {
200204	doer , repo , issue , comment  :=  prepareMailerTest (t )
201205	recipients  :=  []
* user_model.
User {{
Name : 
"Test" , 
Email : 
"[email protected] " }}
 202206
203- 	subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/default" ).Parse ("issue/default/subject" ))
204- 	texttmpl .Must (subjectTemplates .New ("issue/new" ).Parse ("issue/new/subject" ))
205- 	texttmpl .Must (subjectTemplates .New ("pull/comment" ).Parse ("pull/comment/subject" ))
206- 	texttmpl .Must (subjectTemplates .New ("issue/close" ).Parse ("" )) // Must default to fallback subject 
207+ 	prepareMailTemplates ("issue/default" , "issue/default/subject" , "issue/default/body" )
207208
208- 	bodyTemplates  =  template .Must (template .New ("issue/default" ).Parse ("issue/default/body" ))
209- 	template .Must (bodyTemplates .New ("issue/new" ).Parse ("issue/new/body" ))
210- 	template .Must (bodyTemplates .New ("pull/comment" ).Parse ("pull/comment/body" ))
211- 	template .Must (bodyTemplates .New ("issue/close" ).Parse ("issue/close/body" ))
209+ 	texttmpl .Must (LoadedTemplates ().SubjectTemplates .New ("issue/new" ).Parse ("issue/new/subject" ))
210+ 	texttmpl .Must (LoadedTemplates ().SubjectTemplates .New ("pull/comment" ).Parse ("pull/comment/subject" ))
211+ 	texttmpl .Must (LoadedTemplates ().SubjectTemplates .New ("issue/close" ).Parse ("" )) // Must default to a fallback subject 
212+ 	template .Must (LoadedTemplates ().BodyTemplates .New ("issue/new" ).Parse ("issue/new/body" ))
213+ 	template .Must (LoadedTemplates ().BodyTemplates .New ("pull/comment" ).Parse ("pull/comment/body" ))
214+ 	template .Must (LoadedTemplates ().BodyTemplates .New ("issue/close" ).Parse ("issue/close/body" ))
212215
213216	expect  :=  func (t  * testing.T , msg  * sender_service.Message , expSubject , expBody  string ) {
214217		subject  :=  msg .ToMessage ().GetGenHeader ("Subject" )
@@ -253,9 +256,7 @@ func TestTemplateServices(t *testing.T) {
253256	expect  :=  func (t  * testing.T , issue  * issues_model.Issue , comment  * issues_model.Comment , doer  * user_model.User ,
254257		actionType  activities_model.ActionType , fromMention  bool , tplSubject , tplBody , expSubject , expBody  string ,
255258	) {
256- 		subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/default" ).Parse (tplSubject ))
257- 		bodyTemplates  =  template .Must (template .New ("issue/default" ).Parse (tplBody ))
258- 
259+ 		prepareMailTemplates ("issue/default" , tplSubject , tplBody )
259260		recipients  :=  []
* user_model.
User {{
Name : 
"Test" , 
Email : 
"[email protected] " }}
 260261		msg  :=  testComposeIssueCommentMessage (t , & mailComment {
261262			Issue : issue , Doer : doer , ActionType : actionType ,
@@ -512,8 +513,7 @@ func TestEmbedBase64Images(t *testing.T) {
512513	att2ImgBase64  :=  fmt .Sprintf (`<img src="%s"/>` , att2Base64 )
513514
514515	t .Run ("ComposeMessage" , func (t  * testing.T ) {
515- 		subjectTemplates  =  texttmpl .Must (texttmpl .New ("issue/new" ).Parse (subjectTpl ))
516- 		bodyTemplates  =  template .Must (template .New ("issue/new" ).Parse (bodyTpl ))
516+ 		prepareMailTemplates ("issue/new" , subjectTpl , bodyTpl )
517517
518518		issue .Content  =  fmt .Sprintf (`MSG-BEFORE <image src="attachments/%s"> MSG-AFTER` , att1 .UUID )
519519		require .NoError (t , issues_model .UpdateIssueCols (t .Context (), issue , "content" ))
0 commit comments