safesight/control/internal/web/template_parse_test.go
tian 98e375dc36 chore: 合并 safesight-control 仓库为 control/ 子目录
项目合并为单仓库:设备端(根) + 管理端(control/)。
两端 git 历史完整保留(git subtree 合并)。

git-subtree-dir: control
git-subtree-mainline: 923ab10d5c
git-subtree-split: 70738edb31
2026-08-02 11:13:26 +08:00

71 lines
2.7 KiB
Go
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

package web
import (
"embed"
"fmt"
"testing"
"text/template"
)
//go:embed ui/templates/*.html
var testTemplateFS embed.FS
// 与 ui.go 相同的函数名集合dummy 实现,仅用于语法验证)
var testFuncs = template.FuncMap{
"add": func(a, b int) int { return a + b },
"ago": func(v any) string { return "" },
"alarmChannelSource": func(v any) any { return v },
"auditActionLabel": func(v any) any { return v },
"auditField": func(v any) any { return v },
"auditStatusLabel": func(v any) any { return v },
"displayDeviceName": func(v ...any) string { return "" },
"displayDeviceTechnicalName": func(v ...any) any { return "" },
"div": func(a, b int) int { return a / b },
"formatTime": func(v any) any { return v },
"formatTuneValue": func(v, s float64) string { return "" },
"hasString": func(a []string, b string) bool { return false },
"icon": func(name string) string { return "" },
"inputBindingRef": func(v any) any { return v },
"json": func(v any) any { return v },
"loop": func(n int) []int { return nil },
"modelTypeLabel": func(v any) any { return v },
"mul": func(a, b int) int { return a * b },
"outputBindingValue": func(v ...any) any { return "" },
"rawHTML": func(v any) any { return v },
"resourceTypeLabel": func(v any) any { return v },
"ruleLabel": func(v any) any { return v },
"serviceBindingRef": func(v any) any { return v },
"severityClass": func(v any) any { return v },
"severityLabel": func(v any) any { return v },
"shortHash": func(v any) any { return v },
"shortID": func(v any) any { return v },
"slotTypeLabel": func(v any) any { return v },
"statusClass": func(v any) any { return v },
"statusLabel": func(v any) any { return v },
"sub": func(a, b int) int { return a - b },
"taskActionLabel": func(v any) any { return v },
"taskGroupClass": func(v any) any { return v },
"taskGroupLabel": func(v any) any { return v },
"taskStatusClass": func(v any) any { return v },
"taskStatusLabel": func(v any) any { return v },
}
func TestTemplateSyntaxAll(t *testing.T) {
entries, err := testTemplateFS.ReadDir("ui/templates")
if err != nil {
t.Fatal(err)
}
for _, e := range entries {
name := "ui/templates/" + e.Name()
data, err := testTemplateFS.ReadFile(name)
if err != nil {
t.Fatalf("读取 %s: %v", name, err)
}
tmpl := template.New(e.Name()).Funcs(testFuncs)
if _, err := tmpl.Parse(string(data)); err != nil {
t.Fatalf("模板语法错误 %s: %v", name, err)
}
}
fmt.Printf("全部 %d 个模板语法通过\n", len(entries))
}