7 "gopkg.in/fatih/set.v0"
8 gover "github.com/hashicorp/go-version"
11 func TestCompare(t *testing.T) {
12 v1, err := gover.NewVersion(Version)
14 t.Fatal("Version 1 format error.")
16 v2, err := gover.NewVersion(Version + "+f873dfca")
18 t.Fatal("Version 2 format error.")
20 if v1.GreaterThan(v2) || v1.GreaterThan(v2) {
21 t.Error("Version comparison error.")
25 func TestCompatibleWith(t *testing.T) {
68 for i, c := range cases {
70 if result, _ := CompatibleWith(c.b); c.result != result {
71 t.Errorf("case %d: got %t want %t", i, c.result, result)
76 func TestCheckUpdate(t *testing.T) {
86 desc: "has large version number update",
88 remotePeers: []string{"1.0", "2.0", "1.0.3"},
89 wantStatus: hasMUpdate,
90 wantmaxVerSeen: "2.0",
94 desc: "some remote version less than local version, but some remote verison larger than local version",
96 remotePeers: []string{"0.8", "1.1", "1.0.3", "0.9"},
97 wantStatus: hasUpdate,
98 wantmaxVerSeen: "1.1",
102 desc: "has small version number update",
104 remotePeers: []string{"1.0", "1.0.3", "1.0.2"},
105 wantStatus: hasUpdate,
106 wantmaxVerSeen: "1.0.3",
110 desc: "the remote equals to local version",
112 remotePeers: []string{"1.0", "1.0", "1.0"},
113 wantStatus: noUpdate,
114 wantmaxVerSeen: "1.0",
118 desc: "the remote version less than local version",
120 remotePeers: []string{"0.8", "0.8", "0.8"},
121 wantStatus: noUpdate,
122 wantmaxVerSeen: "1.0",
127 for i, c := range cases {
128 status := &UpdateStatus{
129 maxVerSeen: c.localVer,
132 versionStatus: noUpdate,
134 for i, remoteVer := range c.remotePeers {
135 peer := fmt.Sprintf("peer%d", i)
136 status.seedSet.Add(peer)
137 if err := status.CheckUpdate(c.localVer, remoteVer, peer); err != nil {
142 if status.versionStatus != c.wantStatus {
143 t.Errorf("#%d(%s) got version status:%d, want version status:%d", i, c.desc, status.versionStatus, c.wantStatus)
146 if status.notified != c.wantNotified {
147 t.Errorf("#%d(%s) got notified:%t, want notified:%t", i, c.desc, status.notified, c.wantNotified)
150 if status.maxVerSeen != c.wantmaxVerSeen {
151 t.Errorf("#%d(%s) got max version seen%s, want max version seen%s", i, c.desc, status.maxVerSeen, c.wantmaxVerSeen)
156 // In case someone edit the iota part and have the mapping changed:
160 func TestFlag(t *testing.T) {
162 t.Error("noUpdate value error")
165 t.Error("hasUpdate value error")
168 t.Error("noUpdate value error")