-
Notifications
You must be signed in to change notification settings - Fork 534
Expand file tree
/
Copy pathcmpver_test.go
More file actions
126 lines (113 loc) · 4.39 KB
/
cmpver_test.go
File metadata and controls
126 lines (113 loc) · 4.39 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
// Copyright 2021 PingCAP, Inc.
//
// Licensed under the Apache License, Version 2.0 (the "License");
// you may not use this file except in compliance with the License.
// You may obtain a copy of the License at
//
// http://www.apache.org/licenses/LICENSE-2.0
//
// Unless required by applicable law or agreed to in writing, software
// distributed under the License is distributed on an "AS IS" BASIS,
// See the License for the specific language governing permissions and
// limitations under the License.
package cmpver
import (
"testing"
. "github.com/onsi/gomega"
)
type testcase struct {
ver1 string
op Operation
ver2 string
expect bool
}
func TestCompare(t *testing.T) {
g := NewGomegaWithT(t)
cases := genTestCases()
for _, testcase := range cases {
t.Logf("testcase: %s %s %s should be %v", testcase.ver1, testcase.op, testcase.ver2, testcase.expect)
ok, err := Compare(testcase.ver1, testcase.op, testcase.ver2)
g.Expect(err).Should(Succeed())
g.Expect(ok).Should(Equal(testcase.expect))
}
}
func TestConstraint(t *testing.T) {
t.Run("Check", func(t *testing.T) {
g := NewGomegaWithT(t)
cases := genTestCases()
for _, testcase := range cases {
t.Logf("testcase: %s %s %s should be %v", testcase.ver1, testcase.op, testcase.ver2, testcase.expect)
c, err := NewConstraint(testcase.op, testcase.ver2)
g.Expect(err).Should(Succeed())
ok, err := c.Check(testcase.ver1)
g.Expect(err).Should(Succeed())
g.Expect(ok).Should(Equal(testcase.expect))
}
})
}
func genTestCases() []testcase {
return []testcase{
// Greater
{"v5.3.1", Greater, "v5.1.2", true},
{"5.3.1", Greater, "5.1.2", true},
{"v5.3.1", Greater, "5.1.2", true},
{"v5.3.1-master-dirty", Greater, "5.1.2-alpha-308-gbd21a6ea5", true},
{"v5.1.2", Greater, "v5.3.1", false},
{"v5.3.1", Greater, "v5.3.1", false},
{"v5.3.1-dev12", Greater, "v5.1.2", true},
{"v5.3.1-dev12", Greater, "v5.3.1", false},
{"latest", Greater, "v5.3.1", true},
{"nightly", Greater, "v5.3.1", true},
{"master", Greater, "v5.3.1", true},
{"latest-dev", Greater, "v5.3.1", true},
{"nightly-dev", Greater, "v5.3.1", true},
{"master-dev", Greater, "v5.3.1", true},
{"d7f62aab6315b4378cbbfaaaaaaaaaaaaaaaa90ecaf7e0f22d2225304822ee2e", Greater, "v5.3.1", true},
// GreaterOrEqual
{"v5.3.1", GreaterOrEqual, "v5.1.2", true},
{"5.3.1", GreaterOrEqual, "5.1.2", true},
{"5.3.1", GreaterOrEqual, "v5.1.2", true},
{"5.3.1-master-dirty", GreaterOrEqual, "v5.1.2-alpha-308-gbd21a6ea5", true},
{"v5.1.2", GreaterOrEqual, "v5.3.1", false},
{"v5.3.1", GreaterOrEqual, "v5.3.1", true},
{"v5.3.1-dev12", GreaterOrEqual, "v5.1.2", true},
{"v5.3.1-dev12", GreaterOrEqual, "v5.3.1", true},
{"latest", GreaterOrEqual, "v5.3.1", true},
{"nightly", GreaterOrEqual, "v5.3.1", true},
{"master", GreaterOrEqual, "v5.3.1", true},
{"latest-dev", GreaterOrEqual, "v5.3.1", true},
{"nightly-dev", GreaterOrEqual, "v5.3.1", true},
{"master-dev", GreaterOrEqual, "v5.3.1", true},
{"d7f62aab6315b4378cbbfaaaaaaaaaaaaaaaa90ecaf7e0f22d2225304822ee2e", GreaterOrEqual, "v5.3.1", true},
// Less
{"v5.3.1", Less, "v5.1.2", false},
{"v5.1.2", Less, "v5.3.1", true},
{"5.1.2", Less, "5.3.1", true},
{"5.1.2-alpha-308-gbd21a6ea5-dirty", Less, "v5.3.1", true},
{"v5.3.1", Less, "v5.3.1", false},
{"v5.3.1-dev12", Less, "v5.1.2", false},
{"v5.3.1-dev12", Less, "v5.3.1", false},
{"latest", Less, "v5.3.1", false},
{"nightly", Less, "v5.3.1", false},
{"master", Less, "v5.3.1", false},
{"latest-dev", Less, "v5.3.1", false},
{"nightly-dev", Less, "v5.3.1", false},
{"master-dev", Less, "v5.3.1", false},
{"d7f62aab6315b4378cbbfaaaaaaaaaaaaaaaa90ecaf7e0f22d2225304822ee2e", Less, "v5.3.1", false},
// LessOrEqual
{"v5.3.1", LessOrEqual, "v5.1.2", false},
{"5.3.1", LessOrEqual, "5.1.2", false},
{"v5.3.1", LessOrEqual, "5.1.2-alpha-308-gbd21a6ea5-dirty", false},
{"v5.1.2", LessOrEqual, "v5.3.1", true},
{"v5.3.1", LessOrEqual, "v5.3.1", true},
{"v5.3.1-dev12", LessOrEqual, "v5.1.2", false},
{"v5.3.1-dev12", LessOrEqual, "v5.3.1", true},
{"latest", LessOrEqual, "v5.3.1", false},
{"nightly", LessOrEqual, "v5.3.1", false},
{"master", LessOrEqual, "v5.3.1", false},
{"latest-dev", LessOrEqual, "v5.3.1", false},
{"nightly-dev", LessOrEqual, "v5.3.1", false},
{"master-dev", LessOrEqual, "v5.3.1", false},
{"d7f62aab6315b4378cbbfaaaaaaaaaaaaaaaa90ecaf7e0f22d2225304822ee2e", LessOrEqual, "v5.3.1", false},
}
}