仰望星辰工作室

gitcat

gitcat/ internal/upgrade/upgrade_test.go 1.6 KB · 66 行 原始文件
1package upgrade
2
3import "testing"
4
5func TestCompare(t *testing.T) {
6 cases := []struct {
7 a, b string
8 want int
9 }{
10 {"1.0.0", "1.0.0", 0},
11 {"v1.0.0", "1.0.0", 0},
12 {"1.0.0", "1.0.1", -1},
13 {"1.2.0", "1.10.0", -1},
14 {"1.0.9", "1.0.10", -1},
15 {"2.0.0", "1.9.9", 1},
16 {"1.0.0-rc1", "1.0.0", -1},
17 {"1.0", "1.0.0", 0},
18 }
19 for _, c := range cases {
20 if got := Compare(c.a, c.b); got != c.want {
21 t.Errorf("Compare(%q,%q)=%d 期望 %d", c.a, c.b, got, c.want)
22 }
23 }
24}
25
26func TestIsDev(t *testing.T) {
27 for _, v := range []string{"", "dev", "1.0.0-dev", "1.0.0-dirty"} {
28 if !(Info{Version: v}).IsDev() {
29 t.Errorf("%q 应识别为开发版", v)
30 }
31 }
32 for _, v := range []string{"1.0.0", "v1.2.3", "2.0.0-rc1"} {
33 if (Info{Version: v}).IsDev() {
34 t.Errorf("%q 不应识别为开发版", v)
35 }
36 }
37}
38
39func TestValidVersion(t *testing.T) {
40 for _, v := range []string{"1", "1.2", "1.2.3", "v1.2.3", "0.0.1"} {
41 if !ValidVersion(v) {
42 t.Errorf("%q 应为合法版本", v)
43 }
44 }
45 for _, v := range []string{"", "abc", "v"} {
46 if ValidVersion(v) {
47 t.Errorf("%q 应为非法版本", v)
48 }
49 }
50}
51
52func TestPickRelease(t *testing.T) {
53 m := &Manifest{Latest: "1.1.0", Releases: []Release{
54 {Version: "1.1.0", OS: "plan9", Arch: "mips", URL: "https://x/other"},
55 {Version: "1.0.0", URL: "https://x/all"},
56 }}
57 if r := pickRelease(m, "1.0.0"); r == nil || r.URL != "https://x/all" {
58 t.Errorf("未标注平台的版本应可选,实际 %+v", r)
59 }
60 if r := pickRelease(m, "1.1.0"); r != nil {
61 t.Error("平台不匹配不应被选中")
62 }
63 if r := pickRelease(m, "9.9.9"); r != nil {
64 t.Error("清单外的版本不应被选中")
65 }
66}