package updater import "testing" func TestIsNewer(t *testing.T) { cases := []struct { current, latest string want bool }{ {"v1.0.0", "v1.0.1", true}, {"v1.0.0", "v1.1.0", true}, {"v1.0.0", "v2.0.0", true}, {"v1.2.3", "v1.2.3", false}, {"v1.2.3", "v1.2.2", false}, {"v2.0.0", "v1.9.9", false}, // Сборка из рабочей копии не знает, что в ней, — предлагаем релиз. {"dev", "v1.0.0", true}, {"", "v1.0.0", true}, // Без релизов обновляться некуда. {"v1.0.0", "", false}, // Разное число компонентов. {"v1.0", "v1.0.1", true}, {"1.0.0", "v1.0.0", false}, // Предрелизные суффиксы в сравнении чисел не участвуют. {"v1.0.0-rc1", "v1.0.0", false}, {"v1.0.0", "v1.0.1-rc1", true}, } for _, c := range cases { if got := IsNewer(c.current, c.latest); got != c.want { t.Errorf("IsNewer(%q, %q) = %v, ожидалось %v", c.current, c.latest, got, c.want) } } } func TestAPIBase(t *testing.T) { cases := map[string]string{ "https://gitea.hsrv.site/mrleo1nid/pzmanager": "https://gitea.hsrv.site/api/v1/repos/mrleo1nid/pzmanager", "https://gitea.hsrv.site/mrleo1nid/pzmanager.git": "https://gitea.hsrv.site/api/v1/repos/mrleo1nid/pzmanager", "https://gitea.hsrv.site/mrleo1nid/pzmanager/": "https://gitea.hsrv.site/api/v1/repos/mrleo1nid/pzmanager", "http://192.168.0.5:3000/team/pzmanager": "http://192.168.0.5:3000/api/v1/repos/team/pzmanager", } for repo, want := range cases { got, err := New(repo, "dev").apiBase() if err != nil { t.Errorf("apiBase(%q): %v", repo, err) continue } if got != want { t.Errorf("apiBase(%q) = %q, ожидалось %q", repo, got, want) } } for _, bad := range []string{"gitea.hsrv.site/owner/repo", "https://gitea.hsrv.site", ""} { if _, err := New(bad, "dev").apiBase(); err == nil { t.Errorf("адрес %q принят, ожидалась ошибка", bad) } } } func TestNewerThan(t *testing.T) { notes := []ReleaseNote{ {Version: "v0.3.0"}, {Version: "v0.2.2"}, {Version: "v0.2.1"}, {Version: "v0.2.0"}, {Version: "v0.1.3"}, } got := NewerThan(notes, "v0.2.0") want := []string{"v0.3.0", "v0.2.2", "v0.2.1"} if len(got) != len(want) { t.Fatalf("отобрано %d версий, ожидалось %d: %v", len(got), len(want), got) } for i, version := range want { if got[i].Version != version { t.Errorf("changelog[%d] = %s, ожидалось %s", i, got[i].Version, version) } } // На последней версии показывать нечего. if got := NewerThan(notes, "v0.3.0"); len(got) != 0 { t.Errorf("на последней версии отобрано %d записей: %v", len(got), got) } // Сборка из рабочей копии не знает своей версии — показываем всё. if got := NewerThan(notes, "dev"); len(got) != len(notes) { t.Errorf("для dev отобрано %d из %d записей", len(got), len(notes)) } }