1111using ReleasePreparationError = Nerdbank . GitVersioning . ReleaseManager . ReleasePreparationError ;
1212using ReleasePreparationException = Nerdbank . GitVersioning . ReleaseManager . ReleasePreparationException ;
1313using ReleaseVersionIncrement = Nerdbank . GitVersioning . VersionOptions . ReleaseVersionIncrement ;
14+ using Version = System . Version ;
1415
1516public class ReleaseManagerTests : RepoTestBase
1617{
@@ -200,42 +201,45 @@ public void PrepeareRelease_ReleaseBranchWithVersionDecrement(string initialVers
200201
201202 [ Theory ]
202203 // base test cases
203- [ InlineData ( "1.2-beta" , null , null , null , null , null , "v1.2" , "1.2" , "1.3-alpha" ) ]
204- [ InlineData ( "1.2-beta" , null , null , null , "rc" , null , "v1.2" , "1.2-rc" , "1.3-alpha" ) ]
205- [ InlineData ( "1.2-beta.{height}" , null , null , null , null , null , "v1.2" , "1.2" , "1.3-alpha.{height}" ) ]
206- [ InlineData ( "1.2-beta.{height}" , null , null , null , "rc" , null , "v1.2" , "1.2-rc.{height}" , "1.3-alpha.{height}" ) ]
204+ [ InlineData ( "1.2-beta" , null , null , null , null , null , null , "v1.2" , "1.2" , "1.3-alpha" ) ]
205+ [ InlineData ( "1.2-beta" , null , null , null , "rc" , null , null , "v1.2" , "1.2-rc" , "1.3-alpha" ) ]
206+ [ InlineData ( "1.2-beta.{height}" , null , null , null , null , null , null , "v1.2" , "1.2" , "1.3-alpha.{height}" ) ]
207+ [ InlineData ( "1.2-beta.{height}" , null , null , null , "rc" , null , null , "v1.2" , "1.2-rc.{height}" , "1.3-alpha.{height}" ) ]
207208 // modify release.branchName
208- [ InlineData ( "1.2-beta" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , null , null , "v1.2release" , "1.2" , "1.3-alpha" ) ]
209- [ InlineData ( "1.2-beta" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , "v1.2release" , "1.2-rc" , "1.3-alpha" ) ]
210- [ InlineData ( "1.2-beta.{height}" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , null , null , "v1.2release" , "1.2" , "1.3-alpha.{height}" ) ]
211- [ InlineData ( "1.2-beta.{height}" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , "v1.2release" , "1.2-rc.{height}" , "1.3-alpha.{height}" ) ]
209+ [ InlineData ( "1.2-beta" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , null , null , null , "v1.2release" , "1.2" , "1.3-alpha" ) ]
210+ [ InlineData ( "1.2-beta" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , null , "v1.2release" , "1.2-rc" , "1.3-alpha" ) ]
211+ [ InlineData ( "1.2-beta.{height}" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , null , null , null , "v1.2release" , "1.2" , "1.3-alpha.{height}" ) ]
212+ [ InlineData ( "1.2-beta.{height}" , "v{version}release" , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , null , "v1.2release" , "1.2-rc.{height}" , "1.3-alpha.{height}" ) ]
212213 // modify release.versionIncrement: "Major"
213- [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , "v1.2" , "1.2" , "2.0-alpha" ) ]
214- [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Major , "alpha" , "rc" , null , "v1.2" , "1.2-rc" , "2.0-alpha" ) ]
215- [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , "v1.2" , "1.2" , "2.0-alpha.{height}" ) ]
216- [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Major , "alpha" , "rc" , null , "v1.2" , "1.2-rc.{height}" , "2.0-alpha.{height}" ) ]
214+ [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , null , "v1.2" , "1.2" , "2.0-alpha" ) ]
215+ [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Major , "alpha" , "rc" , null , null , "v1.2" , "1.2-rc" , "2.0-alpha" ) ]
216+ [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , null , "v1.2" , "1.2" , "2.0-alpha.{height}" ) ]
217+ [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Major , "alpha" , "rc" , null , null , "v1.2" , "1.2-rc.{height}" , "2.0-alpha.{height}" ) ]
217218 // modify release.versionIncrement: "Build"
218- [ InlineData ( "1.2.3-beta" , null , ReleaseVersionIncrement . Build , "alpha" , null , null , "v1.2.3" , "1.2.3" , "1.2.4-alpha" ) ]
219- [ InlineData ( "1.2.3-beta" , null , ReleaseVersionIncrement . Build , "alpha" , "rc" , null , "v1.2.3" , "1.2.3-rc" , "1.2.4-alpha" ) ]
220- [ InlineData ( "1.2.3-beta.{height}" , null , ReleaseVersionIncrement . Build , "alpha" , null , null , "v1.2.3" , "1.2.3" , "1.2.4-alpha.{height}" ) ]
221- [ InlineData ( "1.2.3-beta.{height}" , null , ReleaseVersionIncrement . Build , "alpha" , "rc" , null , "v1.2.3" , "1.2.3-rc.{height}" , "1.2.4-alpha.{height}" ) ]
219+ [ InlineData ( "1.2.3-beta" , null , ReleaseVersionIncrement . Build , "alpha" , null , null , null , "v1.2.3" , "1.2.3" , "1.2.4-alpha" ) ]
220+ [ InlineData ( "1.2.3-beta" , null , ReleaseVersionIncrement . Build , "alpha" , "rc" , null , null , "v1.2.3" , "1.2.3-rc" , "1.2.4-alpha" ) ]
221+ [ InlineData ( "1.2.3-beta.{height}" , null , ReleaseVersionIncrement . Build , "alpha" , null , null , null , "v1.2.3" , "1.2.3" , "1.2.4-alpha.{height}" ) ]
222+ [ InlineData ( "1.2.3-beta.{height}" , null , ReleaseVersionIncrement . Build , "alpha" , "rc" , null , null , "v1.2.3" , "1.2.3-rc.{height}" , "1.2.4-alpha.{height}" ) ]
222223 // modify release.firstUnstableTag
223- [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Minor , "preview" , null , null , "v1.2" , "1.2" , "1.3-preview" ) ]
224- [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Minor , "preview" , "rc" , null , "v1.2" , "1.2-rc" , "1.3-preview" ) ]
225- [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Minor , "preview" , null , null , "v1.2" , "1.2" , "1.3-preview.{height}" ) ]
226- [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Minor , "preview" , "rc" , null , "v1.2" , "1.2-rc.{height}" , "1.3-preview.{height}" ) ]
224+ [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Minor , "preview" , null , null , null , "v1.2" , "1.2" , "1.3-preview" ) ]
225+ [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Minor , "preview" , "rc" , null , null , "v1.2" , "1.2-rc" , "1.3-preview" ) ]
226+ [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Minor , "preview" , null , null , null , "v1.2" , "1.2" , "1.3-preview.{height}" ) ]
227+ [ InlineData ( "1.2-beta.{height}" , null , ReleaseVersionIncrement . Minor , "preview" , "rc" , null , null , "v1.2" , "1.2-rc.{height}" , "1.3-preview.{height}" ) ]
227228 // include build metadata in version
228- [ InlineData ( "1.2-beta+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , "v1.2" , "1.2+metadata" , "1.3-alpha+metadata" ) ]
229- [ InlineData ( "1.2-beta+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , "v1.2" , "1.2-rc+metadata" , "1.3-alpha+metadata" ) ]
230- [ InlineData ( "1.2-beta.{height}+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , "v1.2" , "1.2+metadata" , "1.3-alpha.{height}+metadata" ) ]
231- [ InlineData ( "1.2-beta.{height}+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , "v1.2" , "1.2-rc.{height}+metadata" , "1.3-alpha.{height}+metadata" ) ]
229+ [ InlineData ( "1.2-beta+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , null , "v1.2" , "1.2+metadata" , "1.3-alpha+metadata" ) ]
230+ [ InlineData ( "1.2-beta+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , null , "v1.2" , "1.2-rc+metadata" , "1.3-alpha+metadata" ) ]
231+ [ InlineData ( "1.2-beta.{height}+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , null , "v1.2" , "1.2+metadata" , "1.3-alpha.{height}+metadata" ) ]
232+ [ InlineData ( "1.2-beta.{height}+metadata" , null , ReleaseVersionIncrement . Minor , "alpha" , "rc" , null , null , "v1.2" , "1.2-rc.{height}+metadata" , "1.3-alpha.{height}+metadata" ) ]
232233 // versions without prerelease tags
233- [ InlineData ( "1.2" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , "v1.2" , "1.2" , "1.3-alpha" ) ]
234- [ InlineData ( "1.2" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , "v1.2" , "1.2" , "2.0-alpha" ) ]
235- // explicitly set next version (firstUnstableTag setting will be ignored)
236- [ InlineData ( "1.2-beta" , null , null , null , null , "4.5" , "v1.2" , "1.2" , "4.5" ) ]
237- [ InlineData ( "1.2-beta" , null , null , null , null , "4.5-pre" , "v1.2" , "1.2" , "4.5-pre" ) ]
238- [ InlineData ( "1.2-beta.{height}" , null , null , null , null , "4.5-pre.{height}" , "v1.2" , "1.2" , "4.5-pre.{height}" ) ]
234+ [ InlineData ( "1.2" , null , ReleaseVersionIncrement . Minor , "alpha" , null , null , null , "v1.2" , "1.2" , "1.3-alpha" ) ]
235+ [ InlineData ( "1.2" , null , ReleaseVersionIncrement . Major , "alpha" , null , null , null , "v1.2" , "1.2" , "2.0-alpha" ) ]
236+ // explicitly set next version
237+ [ InlineData ( "1.2-beta" , null , null , null , null , "4.5" , null , "v1.2" , "1.2" , "4.5-alpha" ) ]
238+ [ InlineData ( "1.2-beta.{height}" , null , null , null , null , "4.5" , null , "v1.2" , "1.2" , "4.5-alpha.{height}" ) ]
239+ [ InlineData ( "1.2-beta.{height}" , null , null , "pre" , null , "4.5.6" , null , "v1.2" , "1.2" , "4.5.6-pre.{height}" ) ]
240+ // explicitly set version increment overriding the setting from ReleaseOptions
241+ [ InlineData ( "1.2-beta" , null , ReleaseVersionIncrement . Minor , null , null , null , ReleaseVersionIncrement . Major , "v1.2" , "1.2" , "2.0-alpha" ) ]
242+ [ InlineData ( "1.2.3-beta" , null , ReleaseVersionIncrement . Minor , null , null , null , ReleaseVersionIncrement . Build , "v1.2.3" , "1.2.3" , "1.2.4-alpha" ) ]
239243 public void PrepareRelease_Master (
240244 // data for initial setup (version and release options configured in version.json)
241245 string initialVersion ,
@@ -245,6 +249,7 @@ public void PrepareRelease_Master(
245249 // arguments passed to PrepareRelease()
246250 string releaseUnstableTag ,
247251 string nextVersion ,
252+ ReleaseVersionIncrement ? parameterVersionIncrement ,
248253 // expected versions and branch name after running PrepareRelease()
249254 string expectedBranchName ,
250255 string resultingReleaseVersion ,
@@ -295,7 +300,7 @@ public void PrepareRelease_Master(
295300
296301 // prepare release
297302 var releaseManager = new ReleaseManager ( ) ;
298- releaseManager . PrepareRelease ( this . RepoPath , releaseUnstableTag , ( nextVersion == null ? null : SemanticVersion . Parse ( nextVersion ) ) ) ;
303+ releaseManager . PrepareRelease ( this . RepoPath , releaseUnstableTag , ( nextVersion == null ? null : Version . Parse ( nextVersion ) ) , parameterVersionIncrement ) ;
299304
300305 // check if a branch was created
301306 Assert . Contains ( this . Repo . Branches , branch => branch . FriendlyName == expectedBranchName ) ;
@@ -371,7 +376,7 @@ public void PrepareRelease_MasterWithVersionDecrement(string initialVersion, str
371376 // running PrepareRelease should result in an error
372377 // because we're trying to add a prerelease tag to a version without prerelease tag
373378 this . AssertError (
374- ( ) => new ReleaseManager ( ) . PrepareRelease ( this . RepoPath , releaseUnstableTag , ( nextVersion == null ? null : SemanticVersion . Parse ( nextVersion ) ) ) ,
379+ ( ) => new ReleaseManager ( ) . PrepareRelease ( this . RepoPath , releaseUnstableTag , ( nextVersion == null ? null : Version . Parse ( nextVersion ) ) ) ,
375380 ReleasePreparationError . VersionDecrement ) ;
376381 }
377382
0 commit comments