first commit
This commit is contained in:
@@ -0,0 +1,77 @@
|
||||
package lexicomai
|
||||
|
||||
import "testing"
|
||||
|
||||
func TestParseVersion(t *testing.T) {
|
||||
if got := ParseVersion("7.012").String(); got != "7.12" {
|
||||
t.Errorf("ParseVersion(7.012) = %q, want 7.12", got)
|
||||
}
|
||||
if got := ParseVersion("7").String(); got != "7" {
|
||||
t.Errorf("ParseVersion(7) = %q", got)
|
||||
}
|
||||
}
|
||||
|
||||
func TestCompareVersions(t *testing.T) {
|
||||
cases := []struct {
|
||||
a, b string
|
||||
want int
|
||||
}{
|
||||
{"7.12", "7.9", 1}, // семантически больше (в отличие от лексикографии)
|
||||
{"7.9", "7.12", -1},
|
||||
{"7.5", "7.5", 0},
|
||||
{"7", "7.0", -1}, // короткая версия меньше при равенстве сегментов
|
||||
}
|
||||
for _, c := range cases {
|
||||
if got := CompareVersions(c.a, c.b); got != c.want {
|
||||
t.Errorf("Compare(%q,%q) = %d, want %d", c.a, c.b, got, c.want)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
func TestParseDistroName(t *testing.T) {
|
||||
p, err := parseDistroName("ups-7.012-release.sh")
|
||||
if err != nil {
|
||||
t.Fatalf("parse error: %v", err)
|
||||
}
|
||||
if p.Product != "ups" || p.Version != "7.012" || p.Branch != "release" {
|
||||
t.Errorf("unexpected parts %+v", p)
|
||||
}
|
||||
if _, err := parseDistroName("readme.txt"); err == nil {
|
||||
t.Error("non-distro name should error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestResolveDistro(t *testing.T) {
|
||||
names := []string{"ups-7.009-release.sh", "ups-7.012-release.sh", "ups-7.005-beta.sh", "spr-7.011-release.sh"}
|
||||
// последняя release
|
||||
got, err := ResolveDistro(names, "ups", "", "release")
|
||||
if err != nil || got != "ups-7.012-release.sh" {
|
||||
t.Errorf("latest release: %q, %v", got, err)
|
||||
}
|
||||
// точная версия
|
||||
got, _ = ResolveDistro(names, "ups", "7.009", "release")
|
||||
if got != "ups-7.009-release.sh" {
|
||||
t.Errorf("exact version: %q", got)
|
||||
}
|
||||
// ветка beta
|
||||
got, _ = ResolveDistro(names, "ups", "", "beta")
|
||||
if got != "ups-7.005-beta.sh" {
|
||||
t.Errorf("beta: %q", got)
|
||||
}
|
||||
// отсутствует
|
||||
if _, err := ResolveDistro(names, "ses", "", "release"); err == nil {
|
||||
t.Error("missing product should error")
|
||||
}
|
||||
}
|
||||
|
||||
func TestNormalizeBranch(t *testing.T) {
|
||||
if b, _ := normalizeBranch(""); b != "release" {
|
||||
t.Errorf("empty branch = %q", b)
|
||||
}
|
||||
if b, _ := normalizeBranch("BETA"); b != "beta" {
|
||||
t.Errorf("BETA = %q", b)
|
||||
}
|
||||
if _, err := normalizeBranch("dev"); err == nil {
|
||||
t.Error("unknown branch should error")
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user