@@ -8,7 +8,6 @@ namespace GitVersion.Core.Tests;
8
8
[ TestFixture ]
9
9
public class SemanticVersionTests : TestBase
10
10
{
11
-
12
11
[ TestCase ( "1.2.3" , 1 , 2 , 3 , null , null , null , null , null , null , null , null ) ]
13
12
[ TestCase ( "1.2" , 1 , 2 , 0 , null , null , null , null , null , null , "1.2.0" , null ) ]
14
13
[ TestCase ( "1.2.3-beta" , 1 , 2 , 3 , "beta" , null , null , null , null , null , null , null ) ]
@@ -79,183 +78,97 @@ public void VersionSorting()
79
78
}
80
79
81
80
[ Test ]
82
- public void ToStringJTests ( )
81
+ public void ToStringWithInvalidFormatTest ( )
83
82
{
84
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "j" ) ) ;
85
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "j" ) ) ;
86
- var fullSemVer = new SemanticVersion
87
- {
88
- Major = 1 ,
89
- Minor = 2 ,
90
- Patch = 3 ,
91
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
92
- BuildMetaData = new SemanticVersionBuildMetaData
93
- {
94
- Sha = "theSha" ,
95
- Branch = "TheBranch" ,
96
- CommitsSinceTag = 5 ,
97
- OtherMetaData = "TheOtherMetaData"
98
- }
99
- } ;
100
- Assert . AreEqual ( "1.2.3" , fullSemVer . ToString ( "j" ) ) ;
83
+ var semVer = BuildSemVer ( 1 , 2 , 3 , "rc" , 1 , 1 ) ;
84
+ Should . Throw < FormatException > ( ( ) => semVer . ToString ( "invalid" ) ) ;
101
85
}
102
- [ Test ]
103
- public void ToStringSTests ( )
86
+
87
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
88
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta.4" ) ]
89
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-beta.4" ) ]
90
+ [ TestCase ( 1 , 2 , 3 , "" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-4" ) ]
91
+ public string ToStringTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
104
92
{
105
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "s" ) ) ;
106
- Assert . AreEqual ( "1.2.3-beta.4" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "s" ) ) ;
107
- var fullSemVer = new SemanticVersion
108
- {
109
- Major = 1 ,
110
- Minor = 2 ,
111
- Patch = 3 ,
112
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
113
- BuildMetaData = new SemanticVersionBuildMetaData
114
- {
115
- Sha = "theSha" ,
116
- Branch = "TheBranch" ,
117
- CommitsSinceTag = 5 ,
118
- OtherMetaData = "TheOtherMetaData"
119
- }
120
- } ;
121
- Assert . AreEqual ( "1.2.3-beta.4" , fullSemVer . ToString ( "s" ) ) ;
122
- var fullSemVerNoPreReleaseName = new SemanticVersion
123
- {
124
- Major = 1 ,
125
- Minor = 2 ,
126
- Patch = 3 ,
127
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "" , 4 ) ,
128
- BuildMetaData = new SemanticVersionBuildMetaData
129
- {
130
- Sha = "theSha" ,
131
- Branch = "TheBranch" ,
132
- CommitsSinceTag = 5 ,
133
- OtherMetaData = "TheOtherMetaData"
134
- }
135
- } ;
136
- Assert . AreEqual ( "1.2.3-4" , fullSemVerNoPreReleaseName . ToString ( "s" ) ) ;
93
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
94
+ return semVer . ToString ( ) ;
137
95
}
138
- [ Test ]
139
- public void ToStringLTests ( )
96
+
97
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
98
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta.4" ) ]
99
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-beta.4" ) ]
100
+ [ TestCase ( 1 , 2 , 3 , "" , 4 , 10 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-4" ) ]
101
+ public string ToStringWithSFormatTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
140
102
{
141
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "l" ) ) ;
142
- Assert . AreEqual ( "1.2.3-beta4" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "l" ) ) ;
143
- var fullSemVer = new SemanticVersion
144
- {
145
- Major = 1 ,
146
- Minor = 2 ,
147
- Patch = 3 ,
148
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
149
- BuildMetaData = new SemanticVersionBuildMetaData
150
- {
151
- Sha = "theSha" ,
152
- Branch = "TheBranch" ,
153
- CommitsSinceTag = 5 ,
154
- OtherMetaData = "TheOtherMetaData"
155
- }
156
- } ;
157
- Assert . AreEqual ( "1.2.3-beta4" , fullSemVer . ToString ( "l" ) ) ;
103
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
104
+ return semVer . ToString ( "s" ) ;
158
105
}
159
- [ Test ]
160
- public void ToStringLpTests ( )
106
+
107
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
108
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3" ) ]
109
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3" ) ]
110
+ public string ToStringWithFormatJTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
161
111
{
162
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "lp" ) ) ;
163
- Assert . AreEqual ( "1.2.3-beta0004" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "lp" ) ) ;
164
- var fullSemVer = new SemanticVersion
165
- {
166
- Major = 1 ,
167
- Minor = 2 ,
168
- Patch = 3 ,
169
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
170
- BuildMetaData = new SemanticVersionBuildMetaData
171
- {
172
- Sha = "theSha" ,
173
- Branch = "TheBranch" ,
174
- CommitsSinceTag = 5 ,
175
- OtherMetaData = "TheOtherMetaData"
176
- }
177
- } ;
178
- Assert . AreEqual ( "1.2.3-beta0004" , fullSemVer . ToString ( "lp" ) ) ;
112
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
113
+ return semVer . ToString ( "j" ) ;
179
114
}
180
- [ Test ]
181
- public void ToStringTests ( )
115
+
116
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
117
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta4" ) ]
118
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-beta4" ) ]
119
+ public string ToStringWithFormatLTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
182
120
{
183
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( ) ) ;
184
- Assert . AreEqual ( "1.2.3-beta.4" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( ) ) ;
185
- Assert . AreEqual ( "1.2.3-beta.4" , SemanticVersion . Parse ( "1.2.3-beta.4+5" , null ) . ToString ( ) ) ;
186
- var fullSemVer = new SemanticVersion
187
- {
188
- Major = 1 ,
189
- Minor = 2 ,
190
- Patch = 3 ,
191
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
192
- BuildMetaData = new SemanticVersionBuildMetaData
193
- {
194
- Sha = "theSha" ,
195
- Branch = "TheBranch" ,
196
- CommitsSinceTag = 5 ,
197
- OtherMetaData = "TheOtherMetaData"
198
- }
199
- } ;
200
- Assert . AreEqual ( "1.2.3-beta.4" , fullSemVer . ToString ( ) ) ;
201
- var fullSemVerNoPreReleaseName = new SemanticVersion
202
- {
203
- Major = 1 ,
204
- Minor = 2 ,
205
- Patch = 3 ,
206
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "" , 4 ) ,
207
- BuildMetaData = new SemanticVersionBuildMetaData
208
- {
209
- Sha = "theSha" ,
210
- Branch = "TheBranch" ,
211
- CommitsSinceTag = 5 ,
212
- OtherMetaData = "TheOtherMetaData"
213
- }
214
- } ;
215
- Assert . AreEqual ( "1.2.3-4" , fullSemVerNoPreReleaseName . ToString ( ) ) ;
121
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
122
+ return semVer . ToString ( "l" ) ;
216
123
}
217
- [ Test ]
218
- public void ToStringFTests ( )
124
+
125
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
126
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta0004" ) ]
127
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-beta0004" ) ]
128
+ public string ToStringWithFormatLpTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
219
129
{
220
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "f" ) ) ;
221
- Assert . AreEqual ( "1.2.3-beta.4" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "f" ) ) ;
222
- Assert . AreEqual ( "1.2.3-beta.4+5" , SemanticVersion . Parse ( "1.2.3-beta.4+5" , null ) . ToString ( "f" ) ) ;
223
- var fullSemVer = new SemanticVersion
224
- {
225
- Major = 1 ,
226
- Minor = 2 ,
227
- Patch = 3 ,
228
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
229
- BuildMetaData = new SemanticVersionBuildMetaData
230
- {
231
- Sha = "theSha" ,
232
- Branch = "TheBranch" ,
233
- CommitsSinceTag = 5 ,
234
- OtherMetaData = "TheOtherMetaData"
235
- }
236
- } ;
237
- Assert . AreEqual ( "1.2.3-beta.4+5" , fullSemVer . ToString ( "f" ) ) ;
130
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
131
+ return semVer . ToString ( "lp" ) ;
238
132
}
239
- [ Test ]
240
- public void ToStringITests ( )
133
+
134
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
135
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta.4" ) ]
136
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , null , null , null , ExpectedResult = "1.2.3-beta.4+5" ) ]
137
+ [ TestCase ( 1 , 2 , 3 , "" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-4+5" ) ]
138
+ public string ToStringWithFormatFTests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
241
139
{
242
- Assert . AreEqual ( "1.2.3-beta.4" , SemanticVersion . Parse ( "1.2.3-beta.4" , null ) . ToString ( "i" ) ) ;
243
- Assert . AreEqual ( "1.2.3" , SemanticVersion . Parse ( "1.2.3" , null ) . ToString ( "i" ) ) ;
244
- Assert . AreEqual ( "1.2.3-beta.4+5" , SemanticVersion . Parse ( "1.2.3-beta.4+5" , null ) . ToString ( "i" ) ) ;
245
- var fullSemVer = new SemanticVersion
140
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
141
+ return semVer . ToString ( "f" ) ;
142
+ }
143
+
144
+ [ TestCase ( 1 , 2 , 3 , null , null , null , null , null , null , ExpectedResult = "1.2.3" ) ]
145
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , null , null , null , null , ExpectedResult = "1.2.3-beta.4" ) ]
146
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , null , null , null , ExpectedResult = "1.2.3-beta.4+5" ) ]
147
+ [ TestCase ( 1 , 2 , 3 , "beta" , 4 , 5 , "theBranch" , "theSha" , "theOtherMetaData" , ExpectedResult = "1.2.3-beta.4+5.Branch.theBranch.Sha.theSha.theOtherMetaData" ) ]
148
+ public string ToStringWithFormatITests ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName , string sha , string otherMetadata )
149
+ {
150
+ var semVer = BuildSemVer ( major , minor , patch , preReleaseName , preReleaseVersion , buildCount , branchName , sha , otherMetadata ) ;
151
+ return semVer . ToString ( "i" ) ;
152
+ }
153
+
154
+ private static SemanticVersion BuildSemVer ( int major , int minor , int patch , string preReleaseName , int preReleaseVersion , int ? buildCount , string branchName = null , string sha = null , string otherMetadata = null )
155
+ {
156
+ var semVer = new SemanticVersion ( major , minor , patch ) ;
157
+ if ( preReleaseName != null )
246
158
{
247
- Major = 1 ,
248
- Minor = 2 ,
249
- Patch = 3 ,
250
- PreReleaseTag = new SemanticVersionPreReleaseTag ( "beta" , 4 ) ,
251
- BuildMetaData = new SemanticVersionBuildMetaData
159
+ semVer . PreReleaseTag = new SemanticVersionPreReleaseTag ( preReleaseName , preReleaseVersion ) ;
160
+ }
161
+ if ( buildCount . HasValue )
162
+ {
163
+ semVer . BuildMetaData = new SemanticVersionBuildMetaData
252
164
{
253
- Sha = "theSha" ,
254
- Branch = "TheBranch" ,
255
- CommitsSinceTag = 5 ,
256
- OtherMetaData = "TheOtherMetaData"
257
- }
258
- } ;
259
- Assert . AreEqual ( "1.2.3-beta.4+5.Branch.TheBranch.Sha.theSha.TheOtherMetaData" , fullSemVer . ToString ( "i" ) ) ;
165
+ CommitsSinceTag = buildCount . Value ,
166
+ Sha = sha ,
167
+ Branch = branchName ,
168
+ OtherMetaData = otherMetadata
169
+ } ;
170
+ }
171
+
172
+ return semVer ;
260
173
}
261
174
}
0 commit comments