Files
OpenFlare/backend/cmd/parity_test.go
T

82 lines
1.7 KiB
Go

// Copyright 2026 Arctel.net
// SPDX-License-Identifier: Apache-2.0
package cmd
import (
"os"
"path/filepath"
"runtime"
"strings"
"testing"
"Wavelet/core"
)
// baselineRoutesFile 是改造前遗留注册路径导出的 (方法 路径) 全集。
const baselineRoutesFile = "docs/superpowers/specs/baseline/routes-engine.txt"
func TestPluginRoutesContainGoldenBaseline(t *testing.T) {
app := newOpenFlareApp(core.ProfileAPI, core.WithConfigSource(testSource(t)))
if err := app.Prepare(); err != nil {
t.Fatal(err)
}
if err := app.Reconcile(); err != nil {
t.Fatal(err)
}
got := routeSet(app.Context())
want := loadBaseline(t)
for k := range want {
if !got[k] {
t.Errorf("missing golden route %s", k)
}
}
}
func routeSet(ctx *core.Context) map[string]bool {
set := make(map[string]bool)
for _, rd := range ctx.Router().Routes() {
set[rd.Method+" "+rd.Path] = true
}
return set
}
func loadBaseline(t *testing.T) map[string]bool {
t.Helper()
path := locateFile(t, baselineRoutesFile)
data, err := os.ReadFile(path)
if err != nil {
t.Fatalf("read baseline %s: %v", path, err)
}
set := make(map[string]bool)
for _, line := range strings.Split(string(data), "\n") {
line = strings.TrimSpace(line)
if line != "" {
set[line] = true
}
}
if len(set) == 0 {
t.Fatalf("baseline %s is empty", path)
}
return set
}
func locateFile(t *testing.T, rel string) string {
t.Helper()
_, thisFile, _, ok := runtime.Caller(0)
if !ok {
t.Fatal("runtime.Caller failed")
}
dir := filepath.Dir(thisFile)
for range 8 {
candidate := filepath.Join(dir, rel)
if _, err := os.Stat(candidate); err == nil {
return candidate
}
dir = filepath.Join(dir, "..")
}
t.Fatalf("%s not found above %s", rel, filepath.Dir(thisFile))
return ""
}