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") } }) } }