ccpoad / internal /version /version_test.go
anyalerob's picture
Upload folder using huggingface_hub
2986042 verified
Raw
History Blame Contribute Delete
2.06 kB
package version
import (
"io"
"os"
"strings"
"testing"
)
func TestNormalizeVersion(t *testing.T) {
t.Parallel()
tests := []struct {
in string
want string
}{
{in: "v1.2.3", want: "1.2.3"},
{in: " v0.0.1 ", want: "0.0.1"},
{in: "1.0.0", want: "1.0.0"},
{in: "v", want: ""},
{in: "", want: ""},
}
for _, tt := range tests {
if got := normalizeVersion(tt.in); got != tt.want {
t.Fatalf("normalizeVersion(%q)=%q, want %q", tt.in, got, tt.want)
}
}
}
func TestGetUpdateInfo_ReadsCheckerState(t *testing.T) {
// 不打网络,不跑 goroutine,只验证读路径。
checker.mu.Lock()
checker.hasUpdate = true
checker.latestVersion = "v9.9.9"
checker.releaseURL = "https://example.com"
checker.mu.Unlock()
hasUpdate, latest, url := GetUpdateInfo()
if !hasUpdate || latest != "v9.9.9" || url != "https://example.com" {
t.Fatalf("GetUpdateInfo() = (%v,%q,%q), want (true,%q,%q)", hasUpdate, latest, url, "v9.9.9", "https://example.com")
}
}
func TestPrintBanner_NonTTY(t *testing.T) {
// term.IsTerminal 在 pipe/文件上应为 false,走非彩色分支,输出稳定可测。
old := os.Stderr
r, w, err := os.Pipe()
if err != nil {
t.Fatalf("pipe failed: %v", err)
}
os.Stderr = w
defer func() {
os.Stderr = old
_ = r.Close()
}()
origVersion, origCommit, origBuildTime, origBuiltBy := Version, Commit, BuildTime, BuiltBy
Version, Commit, BuildTime, BuiltBy = "test-ver", "test-commit", "test-time", "test-by"
defer func() { Version, Commit, BuildTime, BuiltBy = origVersion, origCommit, origBuildTime, origBuiltBy }()
PrintBanner()
_ = w.Close()
out, err := io.ReadAll(r)
if err != nil {
t.Fatalf("read stderr failed: %v", err)
}
s := string(out)
for _, mustContain := range []string{
"API Load Balancer & Proxy",
"Version:",
"test-ver",
"Commit:",
"test-commit",
"Build Time:",
"test-time",
"Built By:",
"test-by",
"Repo:",
"ccLoad",
} {
if !strings.Contains(s, mustContain) {
t.Fatalf("banner output missing %q, got:\n%s", mustContain, s)
}
}
}