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) } } }