54 lines
1.4 KiB
Go
54 lines
1.4 KiB
Go
package preview
|
|
|
|
import (
|
|
"html/template"
|
|
"os"
|
|
"path/filepath"
|
|
"strings"
|
|
"testing"
|
|
|
|
"gitea-mail-templates/tools/config"
|
|
)
|
|
|
|
// Gitea 28 removes FileSize, so render an attachment in every release theme.
|
|
func TestReleaseAttachmentsGitea28(t *testing.T) {
|
|
if _, ok := TemplateFuncs["FileSize"]; ok {
|
|
t.Fatal("FileSize is not available in Gitea 28 mail templates")
|
|
}
|
|
cfg, err := config.Load(filepath.Join("..", "data", "templates_config.json"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
data := cfg.Templates["release"].Params
|
|
data["locale"] = Locale{}
|
|
markSafeHTML(data)
|
|
|
|
themesDir := filepath.Join("..", "..", "themes")
|
|
themes, err := os.ReadDir(themesDir)
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
for _, theme := range themes {
|
|
if !theme.IsDir() {
|
|
continue
|
|
}
|
|
t.Run(theme.Name(), func(t *testing.T) {
|
|
content, err := os.ReadFile(filepath.Join(themesDir, theme.Name(), "mail", "repo", "release.tmpl"))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
tmpl, err := template.New("release").Funcs(TemplateFuncs).Parse(string(content))
|
|
if err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
var rendered strings.Builder
|
|
if err := tmpl.Execute(&rendered, data); err != nil {
|
|
t.Fatal(err)
|
|
}
|
|
if !strings.Contains(rendered.String(), "release-notes.txt") || !strings.Contains(rendered.String(), "1.5 KiB") {
|
|
t.Fatal("release attachment or formatted size missing from email")
|
|
}
|
|
})
|
|
}
|
|
}
|