@@ -3,62 +3,68 @@ package util
3
3
import (
4
4
"testing"
5
5
6
+ "github.com/coreos/go-semver/semver"
6
7
"github.com/stretchr/testify/assert"
7
8
)
8
9
9
10
func TestNewTiDBSemVersion (t * testing.T ) {
10
11
testCases := []struct {
11
12
name string
12
13
input string
13
- expected SemVersion
14
+ expected * semver. Version
14
15
ok bool
15
16
}{
16
17
{
17
18
name : "normal case with addition" ,
18
19
input : "5.7.25-TiDB-v7.1.0-alpha" ,
19
- expected : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
20
+ expected : & semver. Version {Major : 7 , Minor : 1 , Patch : 0 , PreRelease : "alpha" },
20
21
ok : true ,
21
22
},
22
23
{
23
24
name : "version without addition" ,
24
25
input : "5.7.25-TiDB-v7.4.1" ,
25
- expected : SemVersion {Major : 7 , Minor : 4 , Patch : 1 },
26
+ expected : & semver. Version {Major : 7 , Minor : 4 , Patch : 1 , PreRelease : "" },
26
27
ok : true ,
27
28
},
28
29
{
29
30
name : "multi-part addition" ,
30
31
input : "5.7.25-TiDB-v6.5.3-beta.2" ,
31
- expected : SemVersion {Major : 6 , Minor : 5 , Patch : 3 },
32
+ expected : & semver. Version {Major : 6 , Minor : 5 , Patch : 3 , PreRelease : "beta.2" },
32
33
ok : true ,
33
34
},
34
35
{
35
36
name : "empty addition due to trailing hyphen" ,
36
37
input : "5.7.25-TiDB-v7.1.0-" ,
37
- expected : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
38
+ expected : & semver.Version {Major : 7 , Minor : 1 , Patch : 0 , PreRelease : "" },
39
+ ok : true ,
40
+ },
41
+ {
42
+ input : "8.0.11-TiDB-v9.0.0-beta.1.pre-547-g4d34cac" ,
43
+ expected : & semver.Version {Major : 9 , Minor : 0 , Patch : 0 , PreRelease : "beta.1.pre" },
38
44
ok : true ,
39
45
},
40
46
{
41
47
name : "non-tidb database" ,
42
48
input : "MySQL 8.0.35" ,
43
- expected : SemVersion {} ,
49
+ expected : nil ,
44
50
ok : false ,
45
51
},
46
52
{
47
53
name : "missing version prefix" ,
48
54
input : "TiDB-7.2.0" ,
49
- expected : SemVersion {} ,
55
+ expected : nil ,
50
56
ok : false ,
51
57
},
52
58
{
53
59
name : "invalid patch version" ,
54
60
input : "5.7.25-TiDB-v7.1.x" ,
55
- expected : SemVersion {} ,
61
+ expected : nil ,
56
62
ok : false ,
57
63
},
58
64
{
59
65
name : "insufficient version parts" ,
60
66
input : "5.7.25-TiDB-v7.1" ,
61
- expected : SemVersion {} ,
67
+ expected : nil ,
62
68
ok : false ,
63
69
},
64
70
}
@@ -73,78 +79,3 @@ func TestNewTiDBSemVersion(t *testing.T) {
73
79
})
74
80
}
75
81
}
76
-
77
- func TestSemVersionCompare (t * testing.T ) {
78
- testCases := []struct {
79
- name string
80
- version1 SemVersion
81
- version2 SemVersion
82
- expected int
83
- }{
84
- {
85
- name : "major version greater" ,
86
- version1 : SemVersion {Major : 8 , Minor : 0 , Patch : 0 },
87
- version2 : SemVersion {Major : 7 , Minor : 5 , Patch : 10 },
88
- expected : 1 ,
89
- },
90
- {
91
- name : "major version less" ,
92
- version1 : SemVersion {Major : 6 , Minor : 9 , Patch : 9 },
93
- version2 : SemVersion {Major : 7 , Minor : 0 , Patch : 0 },
94
- expected : - 1 ,
95
- },
96
- {
97
- name : "major same, minor greater" ,
98
- version1 : SemVersion {Major : 7 , Minor : 2 , Patch : 0 },
99
- version2 : SemVersion {Major : 7 , Minor : 1 , Patch : 5 },
100
- expected : 1 ,
101
- },
102
- {
103
- name : "major same, minor less" ,
104
- version1 : SemVersion {Major : 7 , Minor : 1 , Patch : 10 },
105
- version2 : SemVersion {Major : 7 , Minor : 2 , Patch : 0 },
106
- expected : - 1 ,
107
- },
108
- {
109
- name : "major and minor same, patch greater" ,
110
- version1 : SemVersion {Major : 7 , Minor : 1 , Patch : 5 },
111
- version2 : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
112
- expected : 1 ,
113
- },
114
- {
115
- name : "major and minor same, patch less" ,
116
- version1 : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
117
- version2 : SemVersion {Major : 7 , Minor : 1 , Patch : 1 },
118
- expected : - 1 ,
119
- },
120
- {
121
- name : "identical versions" ,
122
- version1 : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
123
- version2 : SemVersion {Major : 7 , Minor : 1 , Patch : 0 },
124
- expected : 0 ,
125
- },
126
- {
127
- name : "extreme version differences" ,
128
- version1 : SemVersion {Major : 10 , Minor : 0 , Patch : 0 },
129
- version2 : SemVersion {Major : 1 , Minor : 99 , Patch : 99 },
130
- expected : 1 ,
131
- },
132
- }
133
-
134
- for _ , tc := range testCases {
135
- t .Run (tc .name , func (t * testing.T ) {
136
- result := tc .version1 .Compare (tc .version2 )
137
- if result != tc .expected {
138
- t .Errorf ("Expected %v.Compare(%v) = %v, got %v" ,
139
- tc .version1 , tc .version2 , tc .expected , result )
140
- }
141
-
142
- reverseResult := tc .version2 .Compare (tc .version1 )
143
- expectedReverse := - tc .expected
144
- if reverseResult != expectedReverse {
145
- t .Errorf ("Expected %v.Compare(%v) = %v, got %v" ,
146
- tc .version2 , tc .version1 , expectedReverse , reverseResult )
147
- }
148
- })
149
- }
150
- }
0 commit comments