package version import ( "fmt" "runtime" "testing" ) func TestFullVersionVersion(t *testing.T) { tests := []struct { Version string GitCommit string BuildMeta string expected string }{ {"", "", "", ""}, {"1.0.0", "", "", "1.0.0"}, {"1.0.0", "314501b", "", "1.0.0+314501b"}, {"1.0.0", "314501b", "dev", "1.0.0-dev+314501b"}, } for _, tt := range tests { Version = tt.Version GitCommit = tt.GitCommit BuildMeta = tt.BuildMeta if got := FullVersion(); got != tt.expected { t.Errorf("expected (%s) got (%s) for Version(%s), GitCommit(%s) BuildMeta(%s)", tt.expected, got, tt.Version, tt.GitCommit, tt.BuildMeta) } } } func BenchmarkFullVersion(b *testing.B) { Version = "1.0.0" GitCommit = "314501b" BuildMeta = "dev" for i := 0; i < b.N; i++ { FullVersion() } } func TestUserAgent(t *testing.T) { tests := []struct { name string Version string GitCommit string BuildMeta string ProjectName string ProjectURL string want string }{ {"good user agent", "1.0.0", "314501b", "dev", "pomerium", "github.com/pomerium", fmt.Sprintf("pomerium/1.0.0 (+github.com/pomerium; 314501b; %s)", runtime.Version())}, } for _, tt := range tests { Version = tt.Version GitCommit = tt.GitCommit BuildMeta = tt.BuildMeta ProjectName = tt.ProjectName ProjectURL = tt.ProjectURL t.Run(tt.name, func(t *testing.T) { if got := UserAgent(); got != tt.want { t.Errorf("UserAgent() = %v, want %v", got, tt.want) } }) } }