1
1
package version
2
2
3
3
import (
4
+ "fmt"
4
5
"testing"
5
6
"time"
7
+
8
+ "github.com/stretchr/testify/require"
6
9
)
7
10
8
11
func TestVersion (t * testing.T ) {
@@ -26,3 +29,166 @@ func TestVersion(t *testing.T) {
26
29
t .Errorf ("have %s, want %s" , have , want )
27
30
}
28
31
}
32
+
33
+ func Test_VersionNum (t * testing.T ) {
34
+ t .Parallel ()
35
+
36
+ var tests = map [string ]struct {
37
+ semver string
38
+ expectedVersionNum int
39
+ }{
40
+ "empty version" : {
41
+ semver : "" ,
42
+ expectedVersionNum : 0 ,
43
+ },
44
+ "basic version" : {
45
+ semver : "1.2.3" ,
46
+ expectedVersionNum : 1002003 ,
47
+ },
48
+ "max version" : {
49
+ semver : "999.999.999" ,
50
+ expectedVersionNum : 999999999 ,
51
+ },
52
+ "semver with leading v" : {
53
+ semver : "v1.1.2" ,
54
+ expectedVersionNum : 1001002 ,
55
+ },
56
+ "semver with leading zeros" : {
57
+ semver : "01.01.002" ,
58
+ expectedVersionNum : 1001002 ,
59
+ },
60
+ "semver with trailing branch info" : {
61
+ semver : "1.10.3-1-g98Paoe" ,
62
+ expectedVersionNum : 1010003 ,
63
+ },
64
+ "semver with leading v and trailing branch info" : {
65
+ semver : "v1.10.3-1-g98Paoe" ,
66
+ expectedVersionNum : 1010003 ,
67
+ },
68
+ "zero version" : {
69
+ semver : "0.0.0" ,
70
+ expectedVersionNum : 0 ,
71
+ },
72
+ }
73
+
74
+ for name , tt := range tests {
75
+ tt := tt
76
+ t .Run (name , func (t * testing.T ) {
77
+ t .Parallel ()
78
+ version = tt .semver
79
+ require .Equal (t , tt .expectedVersionNum , VersionNum ())
80
+ })
81
+ }
82
+ }
83
+
84
+ func Test_SemverFromVersionNum (t * testing.T ) {
85
+ t .Parallel ()
86
+
87
+ var tests = map [string ]struct {
88
+ versionNum int
89
+ expectedSemver string
90
+ }{
91
+ "zero version" : {
92
+ versionNum : 0 ,
93
+ expectedSemver : "0.0.0" ,
94
+ },
95
+ "1.10.3" : {
96
+ versionNum : 1010003 ,
97
+ expectedSemver : "1.10.3" ,
98
+ },
99
+ "max version" : {
100
+ versionNum : 999999999 ,
101
+ expectedSemver : "999.999.999" ,
102
+ },
103
+ "1.112.43" : {
104
+ versionNum : 1112043 ,
105
+ expectedSemver : "1.112.43" ,
106
+ },
107
+ }
108
+
109
+ for name , tt := range tests {
110
+ tt := tt
111
+ t .Run (name , func (t * testing.T ) {
112
+ t .Parallel ()
113
+ require .Equal (t , tt .expectedSemver , SemverFromVersionNum (tt .versionNum ))
114
+ })
115
+ }
116
+ }
117
+
118
+ func Test_VersionNumComparisons (t * testing.T ) {
119
+ t .Parallel ()
120
+
121
+ var tests = map [string ]struct {
122
+ lesserVersion string
123
+ greaterVersion string
124
+ }{
125
+ "empty version" : {
126
+ lesserVersion : "" ,
127
+ greaterVersion : "0.0.1" ,
128
+ },
129
+ "basic versions" : {
130
+ lesserVersion : "1.2.3" ,
131
+ greaterVersion : "1.2.4" ,
132
+ },
133
+ "max versions" : {
134
+ lesserVersion : "999.999.998" ,
135
+ greaterVersion : "999.999.999" ,
136
+ },
137
+ "large minor versions, no collisions" : {
138
+ lesserVersion : "v1.999.999" ,
139
+ greaterVersion : "v2.0.0" ,
140
+ },
141
+ }
142
+
143
+ for name , tt := range tests {
144
+ tt := tt
145
+ t .Run (name , func (t * testing.T ) {
146
+ t .Parallel ()
147
+ version = tt .lesserVersion
148
+ lesserParsed := VersionNum ()
149
+ version = tt .greaterVersion
150
+ greaterParsed := VersionNum ()
151
+ require .True (t , lesserParsed < greaterParsed ,
152
+ fmt .Sprintf ("expected %s to parse as lesser than %s. got lesser %d >= greater %d" ,
153
+ tt .lesserVersion ,
154
+ tt .greaterVersion ,
155
+ lesserParsed ,
156
+ greaterParsed ,
157
+ ),
158
+ )
159
+ })
160
+ }
161
+ }
162
+
163
+ func Test_VersionNumIsReversible (t * testing.T ) {
164
+ t .Parallel ()
165
+
166
+ var tests = map [string ]struct {
167
+ testedVersion string
168
+ }{
169
+ "zero version" : {
170
+ testedVersion : "0.0.0" ,
171
+ },
172
+ "basic version" : {
173
+ testedVersion : "1.2.3" ,
174
+ },
175
+ "max version" : {
176
+ testedVersion : "999.999.999" ,
177
+ },
178
+ "random version" : {
179
+ testedVersion : "107.61.10" ,
180
+ },
181
+ "random version 2" : {
182
+ testedVersion : "0.118.919" ,
183
+ },
184
+ }
185
+
186
+ for name , tt := range tests {
187
+ tt := tt
188
+ t .Run (name , func (t * testing.T ) {
189
+ t .Parallel ()
190
+ version = tt .testedVersion
191
+ require .Equal (t , tt .testedVersion , SemverFromVersionNum (VersionNum ()))
192
+ })
193
+ }
194
+ }
0 commit comments