// 功能描述:验证三个管理后台的工作人员写入入口均接入公共错误转换链路。 // 版本:v1.0 package common import ( "go/ast" "go/parser" "go/token" "path/filepath" "runtime" "testing" ) // TestStaffHandlersUseWriteErrorConversion 防止任一后台重新绕过工作人员错误转换器。 // 参数:t 为 Go 测试上下文。 // 返回值:无。 func TestStaffHandlersUseWriteErrorConversion(t *testing.T) { _, currentFile, _, ok := runtime.Caller(0) if !ok { t.Fatal("无法定位工作人员接线测试文件") } logicDirectory := filepath.Dir(filepath.Dir(currentFile)) targets := []struct { name string path string }{ {name: "平台总后台", path: filepath.Join(logicDirectory, "platform", "staff", "staff.go")}, {name: "气站后台", path: filepath.Join(logicDirectory, "gas", "staff.go")}, {name: "配送点后台", path: filepath.Join(logicDirectory, "delivery", "staff.go")}, } for _, target := range targets { t.Run(target.name, func(t *testing.T) { calls := commonCallsInFile(t, target.path) if calls["CreateStaffRecord"] == 0 { t.Fatalf("%s工作人员创建入口未接入 CreateStaffRecord", target.name) } if calls["UpdateAllowedByIdentityWithError"] == 0 { t.Fatalf("%s工作人员编辑入口未接入错误转换更新函数", target.name) } }) } } // commonCallsInFile 统计源文件中调用 common 包函数的次数。 // 参数:t 为测试上下文,path 为待检查的 Go 源文件。 // 返回值:以函数名为键、调用次数为值的映射。 func commonCallsInFile(t *testing.T, path string) map[string]int { t.Helper() file, err := parser.ParseFile(token.NewFileSet(), path, nil, 0) if err != nil { t.Fatalf("解析工作人员处理器失败:%v", err) } calls := map[string]int{} ast.Inspect(file, func(node ast.Node) bool { call, ok := node.(*ast.CallExpr) if !ok { return true } selector, ok := call.Fun.(*ast.SelectorExpr) if !ok { return true } packageName, ok := selector.X.(*ast.Ident) if ok && packageName.Name == "common" { calls[selector.Sel.Name]++ } return true }) return calls }