70 lines
1.8 KiB
Go
70 lines
1.8 KiB
Go
package version
|
|
|
|
import "testing"
|
|
|
|
func TestReleaseVersion(t *testing.T) {
|
|
tests := []struct {
|
|
Name string
|
|
GitVersion string
|
|
ExpectFirstMinorRelease string
|
|
ExpectPatchRelease string
|
|
ExpectError bool
|
|
}{
|
|
{
|
|
Name: "first minor release",
|
|
GitVersion: "v1.1.0",
|
|
ExpectFirstMinorRelease: "v1.1.0",
|
|
ExpectPatchRelease: "v1.1.0",
|
|
ExpectError: false,
|
|
},
|
|
{
|
|
Name: "subsequent minor release",
|
|
GitVersion: "v1.1.1",
|
|
ExpectFirstMinorRelease: "v1.1.0",
|
|
ExpectPatchRelease: "v1.1.1",
|
|
ExpectError: false,
|
|
},
|
|
{
|
|
Name: "normal git version",
|
|
GitVersion: "v1.1.1-6-gf20c721a",
|
|
ExpectFirstMinorRelease: "v1.1.0",
|
|
ExpectPatchRelease: "v1.1.1",
|
|
ExpectError: false,
|
|
},
|
|
{
|
|
Name: "abnormal version",
|
|
GitVersion: "vx.y.z-6-gf20c721a",
|
|
ExpectFirstMinorRelease: "",
|
|
ExpectPatchRelease: "",
|
|
ExpectError: true,
|
|
},
|
|
}
|
|
|
|
for i := range tests {
|
|
tc := tests[i]
|
|
|
|
t.Run(tc.Name, func(t *testing.T) {
|
|
rv, err := ParseGitVersion(tc.GitVersion)
|
|
if err != nil {
|
|
if !tc.ExpectError {
|
|
t.Fatalf("No error is expected but got: %v", err)
|
|
}
|
|
// Stop and passes this test as error is expected.
|
|
return
|
|
} else if err == nil {
|
|
if tc.ExpectError {
|
|
t.Fatalf("Expect error, but got nil")
|
|
}
|
|
}
|
|
|
|
if rv.FirstMinorRelease() != tc.ExpectFirstMinorRelease {
|
|
t.Fatalf("expect first minor release: %s, but got: %s", tc.ExpectFirstMinorRelease, rv.FirstMinorRelease())
|
|
}
|
|
|
|
if rv.PatchRelease() != tc.ExpectPatchRelease {
|
|
t.Fatalf("expect patch release: %s, but got: %s", tc.ExpectPatchRelease, rv.PatchRelease())
|
|
}
|
|
})
|
|
}
|
|
}
|