package templates import ( "html/template" "io/fs" "path/filepath" "testing" "github.com/stretchr/testify/assert" "github.com/stretchr/testify/require" ) func TestTemplateParsing(t *testing.T) { templateDir := "./" var templateFiles []string err := filepath.WalkDir(templateDir, func(path string, d fs.DirEntry, err error) error { if err != nil { return err } if !d.IsDir() && filepath.Ext(path) == ".gohtml" { templateFiles = append(templateFiles, path) } return nil }) require.NoError(t, err) tmpl := template.New("test") tmpl = tmpl.Funcs(template.FuncMap{ "formatTime": func(any) string { return "2024-01-01" }, "eq": func(a, b any) bool { return a == b }, "ne": func(a, b any) bool { return a != b }, "len": func(s any) int { return 0 }, "range": func(s any) any { return s }, }) for _, file := range templateFiles { t.Run(file, func(t *testing.T) { _, err := tmpl.ParseFiles(file) assert.NoError(t, err, "Template %s should parse without errors", file) }) } } func TestTemplateSyntax(t *testing.T) { tests := []struct { name string template string shouldFail bool }{ { name: "valid template", template: `{{define "test"}}