// version_test.go 驗證版本字串解析:go test 環境 Main.Version 為 "(devel)" // 時應退回開發版本號;-ldflags 覆寫測試 tag 行為則由建置驗證涵蓋。 package cli import ( "strings" "testing" ) // TestBuildVersionFallsBackToDev 確認本地測試環境(Main.Version == "(devel)") // 退回 Version;同時確保輸出是可讀版本字串(非空、無括號)。 func TestBuildVersionFallsBackToDev(t *testing.T) { v := buildVersion() if v == "" { t.Fatalf("buildVersion 不應為空") } if strings.ContainsAny(v, "()") { t.Errorf("buildVersion 不應含內部佔位(括號),得到:%q", v) } } // TestRunVersionUsesBuildVersion 確認 version 命令輸出 buildVersion 的結果。 func TestRunVersionUsesBuildVersion(t *testing.T) { stdout, _, code := run("version") if code != 0 { t.Fatalf("version 應回 0,得到 %d", code) } want := "teai version " + buildVersion() if !strings.Contains(stdout, want) { t.Errorf("version 輸出應含 %q,得到:%q", want, stdout) } }