46 lines
1.7 KiB
Go
46 lines
1.7 KiB
Go
package buildinfo
|
|
|
|
import "testing"
|
|
|
|
func TestResolve(t *testing.T) {
|
|
tests := []struct {
|
|
name string
|
|
override string
|
|
buildVersion string
|
|
want string
|
|
wantErr bool
|
|
}{
|
|
{name: "stable main module version", buildVersion: "v1.2.3", want: "v1.2.3"},
|
|
{name: "zero version", buildVersion: "v0.0.0", want: "v0.0.0"},
|
|
{name: "override takes precedence", override: "v2.3.4", buildVersion: "v1.2.3", want: "v2.3.4"},
|
|
{name: "invalid override", override: "version", buildVersion: "v1.2.3", wantErr: true},
|
|
{name: "override with whitespace", override: " v1.2.3", wantErr: true},
|
|
{name: "leading zero major", buildVersion: "v01.2.3", want: "development"},
|
|
{name: "leading zero minor", buildVersion: "v1.02.3", want: "development"},
|
|
{name: "leading zero patch", buildVersion: "v1.2.03", want: "development"},
|
|
{name: "build version with whitespace", buildVersion: "v1.2.3 ", want: "development"},
|
|
{name: "prerelease", buildVersion: "v1.2.3-rc.1", want: "development"},
|
|
{name: "build suffix", buildVersion: "v1.2.3+build.1", want: "development"},
|
|
{name: "pseudo version", buildVersion: "v0.0.0-20260102030405-abcdef123456", want: "development"},
|
|
{name: "development build", buildVersion: "(devel)", want: "development"},
|
|
{name: "missing build information", want: "development"},
|
|
}
|
|
for _, tt := range tests {
|
|
t.Run(tt.name, func(t *testing.T) {
|
|
got, err := resolve(tt.override, tt.buildVersion)
|
|
if tt.wantErr {
|
|
if err == nil {
|
|
t.Fatal("resolve() error = nil, want error")
|
|
}
|
|
return
|
|
}
|
|
if err != nil {
|
|
t.Fatalf("resolve() error = %v", err)
|
|
}
|
|
if got != tt.want {
|
|
t.Fatalf("resolve() = %q, want %q", got, tt.want)
|
|
}
|
|
})
|
|
}
|
|
}
|