package debtik import "testing" func TestVersionOrder(t *testing.T) { for _, tc := range []struct { a, b string want bool }{{"1.10.0", "1.9.0", true}, {"2.0.0", "1.99.99", true}, {"1.1.0", "1.1.0", false}, {"1.0.9", "1.1.0", false}} { got, err := Newer(tc.a, tc.b) if err != nil || got != tc.want { t.Fatalf("%s > %s: %v %v", tc.a, tc.b, got, err) } } for _, v := range []string{"1.2", "01.2.3", "v1.2.3", "1.2.3-rc1", "1.2.3+build", "-1.2.3", "99999999999999999999999.0.0"} { if _, err := ParseVersion(v); err == nil { t.Fatalf("accepted %s", v) } } if _, err := ParseVersion(Version()); err != nil { t.Fatal(err) } } func TestLatestReleaseTags(t *testing.T) { input := "a refs/tags/v1.9.0\nb refs/tags/v1.10.0\nc refs/tags/v1.10.0^{}\nd refs/tags/v9.0.0-rc1\ne refs/heads/v99.0.0\n" version, commit, err := LatestTag(input) if err != nil || version != "1.10.0" || commit != "c" { t.Fatal(version, commit, err) } if _, _, err := LatestTag("a refs/tags/v1.0.0-rc1"); err == nil { t.Fatal("accepted prerelease only") } }