62 lines
1.5 KiB
Go
62 lines
1.5 KiB
Go
package version
|
|
|
|
import "testing"
|
|
|
|
func TestResolve(t *testing.T) {
|
|
tests := []struct {
|
|
tag, commit, want string
|
|
}{
|
|
{"v1.0.0", "abc1234", "v1.0.0"},
|
|
{"1.2.3", "abc1234", "1.2.3"},
|
|
{"v1.0.0-rc.1", "abc1234", "v1.0.0-rc.1"},
|
|
{"release-candidate", "abc1234", "abc1234"},
|
|
{"latest", "abc1234", "abc1234"},
|
|
{"v1.2", "abc1234", "abc1234"},
|
|
{"", "abc1234", "abc1234"},
|
|
{"", "", "dev"},
|
|
}
|
|
for _, tc := range tests {
|
|
Version = tc.tag
|
|
Commit = tc.commit
|
|
if got := String(); got != tc.want {
|
|
t.Errorf("resolve(tag=%q, commit=%q) = %q; want %q", tc.tag, tc.commit, got, tc.want)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestIsSemverTag(t *testing.T) {
|
|
ok := []string{"v1.0.0", "1.2.3", "v0.0.1", "2.10.99", "v1.0.0-rc.1"}
|
|
bad := []string{"", "latest", "release-1", "v1.2", "1.2", "abc1234", "v1.2.3.4"}
|
|
for _, tag := range ok {
|
|
if !isSemverTag(tag) {
|
|
t.Errorf("isSemverTag(%q) = false; want true", tag)
|
|
}
|
|
}
|
|
for _, tag := range bad {
|
|
if isSemverTag(tag) {
|
|
t.Errorf("isSemverTag(%q) = true; want false", tag)
|
|
}
|
|
}
|
|
}
|
|
|
|
func TestParts(t *testing.T) {
|
|
tests := []struct {
|
|
tag string
|
|
major, minor, rev int
|
|
}{
|
|
{"v1.2.3", 1, 2, 3},
|
|
{"1.2.3", 1, 2, 3},
|
|
{"v1.2.3-rc1", 1, 2, 3},
|
|
{"", 0, 0, 0},
|
|
{"abc1234", 0, 0, 0},
|
|
{"1.2", 0, 0, 0},
|
|
}
|
|
for _, tc := range tests {
|
|
Version = tc.tag
|
|
major, minor, rev := Parts()
|
|
if major != tc.major || minor != tc.minor || rev != tc.rev {
|
|
t.Errorf("Parts(%q) = %d,%d,%d; want %d,%d,%d", tc.tag, major, minor, rev, tc.major, tc.minor, tc.rev)
|
|
}
|
|
}
|
|
}
|