Smail/backend/internal/buildinfo/buildinfo_test.go
smail f60d3b0880
Some checks are pending
Security Checks / security (push) Waiting to run
整理前后端与测试构建目录并完善配置和安全引导
统一 frontend、backend、test、test-log 和 out 目录,更新构建、部署及测试入口;纳入配置管理兼容与首次安全引导修复;排除本机配置、密钥和测试产物。
2026-09-05 19:19:52 +08:00

44 lines
1.4 KiB
Go

package buildinfo
import "testing"
func TestCurrentUsesSafeDefaults(t *testing.T) {
oldVersion, oldHash := Version, GitHash
t.Cleanup(func() {
Version, GitHash = oldVersion, oldHash
})
Version = ""
GitHash = ""
info := Current()
if info.Version != "dev" || info.GitHash != "unknown" {
t.Fatalf("unexpected defaults: %+v", info)
}
}
func TestValidatePairRequiresMatchingBuildMetadata(t *testing.T) {
base := Info{Version: "v1.2.3", GitHash: "abc", ProtocolVersion: ProtocolVersion}
cases := []struct {
name string
main Info
admin Info
want error
}{
{name: "matching", main: base, admin: base},
{name: "version mismatch", main: base, admin: Info{Version: "v1.2.4", GitHash: "abc", ProtocolVersion: ProtocolVersion}, want: ErrVersionMismatch},
{name: "protocol mismatch", main: base, admin: Info{Version: "v1.2.3", GitHash: "abc", ProtocolVersion: ProtocolVersion + 1}, want: ErrProtocolMismatch},
{name: "build mismatch", main: base, admin: Info{Version: "v1.2.3", GitHash: "def", ProtocolVersion: ProtocolVersion}, want: ErrBuildMismatch},
}
for _, test := range cases {
t.Run(test.name, func(t *testing.T) {
err := ValidatePair(test.main, test.admin)
if test.want == nil && err != nil {
t.Fatalf("ValidatePair() error = %v", err)
}
if test.want != nil && err != test.want {
t.Fatalf("ValidatePair() error = %v, want %v", err, test.want)
}
})
}
}