@@ -78,13 +78,10 @@ class AzureEngSemanticVersion : IComparable {
78
78
79
79
if ($null -eq $matches [' prelabel' ])
80
80
{
81
- # artifically provide these values for non-prereleases to enable easy sorting of them later than prereleases.
82
- $this.PrereleaseLabel = " zzz"
83
- $this.PrereleaseNumber = 99999999
84
81
$this.IsPrerelease = $false
85
82
$this.VersionType = " GA"
86
83
if ($this.Major -eq 0 ) {
87
- # Treat initial 0 versions as a prerelease beta's
84
+ # Treat initial 0 versions as a prerelease beta's
88
85
$this.VersionType = " Beta"
89
86
$this.IsPrerelease = $true
90
87
}
@@ -116,7 +113,7 @@ class AzureEngSemanticVersion : IComparable {
116
113
# See https://azure.github.io/azure-sdk/policies_releases.html#package-versioning
117
114
[bool ] HasValidPrereleaseLabel()
118
115
{
119
- if ($this.IsPrerelease -eq $true ) {
116
+ if ($this.PrereleaseLabel ) {
120
117
if ($this.PrereleaseLabel -ne $this.DefaultPrereleaseLabel -and $this.PrereleaseLabel -ne $this.DefaultAlphaReleaseLabel ) {
121
118
Write-Host " Unexpected pre-release identifier '$ ( $this.PrereleaseLabel ) ', " `
122
119
" should be '$ ( $this.DefaultPrereleaseLabel ) ' or '$ ( $this.DefaultAlphaReleaseLabel ) '"
@@ -136,7 +133,7 @@ class AzureEngSemanticVersion : IComparable {
136
133
{
137
134
$versionString = " {0}.{1}.{2}" -F $this.Major , $this.Minor , $this.Patch
138
135
139
- if ($this.IsPrerelease -and $this . PrereleaseLabel -ne " zzz " )
136
+ if ($this.PrereleaseLabel )
140
137
{
141
138
$versionString += $this.PrereleaseLabelSeparator + $this.PrereleaseLabel + `
142
139
$this.PrereleaseNumberSeparator + $this.PrereleaseNumber
@@ -147,24 +144,42 @@ class AzureEngSemanticVersion : IComparable {
147
144
return $versionString ;
148
145
}
149
146
150
- [void ] IncrementAndSetToPrerelease() {
151
- if ($this.IsPrerelease -eq $false )
147
+ [void ] IncrementAndSetToPrerelease($Segment ) {
148
+ if ($this.BuildNumber )
152
149
{
153
- $this.PrereleaseLabel = $this.DefaultPrereleaseLabel
154
- $this.PrereleaseNumber = 1
155
- $this.Minor ++
156
- $this.Patch = 0
157
- $this.IsPrerelease = $true
150
+ throw " Cannot increment releases tagged with azure pipelines build numbers"
151
+ }
152
+
153
+ if ($this.PrereleaseLabel )
154
+ {
155
+ $this.PrereleaseNumber ++
158
156
}
159
157
else
160
158
{
161
- if ($this.BuildNumber ) {
162
- throw " Cannot increment releases tagged with azure pipelines build numbers"
159
+ $this .$Segment ++
160
+ if ($Segment -eq " Major" ) {
161
+ $this.Minor = 0
162
+ $this.Patch = 0
163
163
}
164
- $this.PrereleaseNumber ++
164
+ if ($Segment -eq " Minor" ) {
165
+ $this.Patch = 0
166
+ }
167
+
168
+ # If the major version is 0, we don't need a prerelease label
169
+ if ($this.Major -ne 0 )
170
+ {
171
+ $this.PrereleaseLabel = $this.DefaultPrereleaseLabel
172
+ $this.PrereleaseNumber = 1
173
+ }
174
+
175
+ $this.IsPrerelease = $true
165
176
}
166
177
}
167
178
179
+ [void ] IncrementAndSetToPrerelease() {
180
+ $this.IncrementAndSetToPrerelease (" Minor" )
181
+ }
182
+
168
183
[void ] SetupPythonConventions()
169
184
{
170
185
# Python uses no separators and "b" for beta so this sets up the the object to work with those conventions
@@ -198,11 +213,30 @@ class AzureEngSemanticVersion : IComparable {
198
213
$ret = $this.Patch.CompareTo ($other.Patch )
199
214
if ($ret ) { return $ret }
200
215
216
+ # provide artificial prerelease values for non-prereleases to sort them later than prereleases.
217
+ if ($this.PrereleaseLabel ) {
218
+ $thisPrereleaseLabel = $this.PrereleaseLabel
219
+ $thisPrereleaseNumber = $this.PrereleaseNumber
220
+ }
221
+ else {
222
+ $thisPrereleaseLabel = " zzz"
223
+ $thisPrereleaseNumber = 99999999
224
+ }
225
+
226
+ if ($other.PrereleaseLabel ) {
227
+ $otherPrereleaseLabel = $other.PrereleaseLabel
228
+ $otherPrereleaseNumber = $other.PrereleaseNumber
229
+ }
230
+ else {
231
+ $otherPrereleaseLabel = " zzz"
232
+ $otherPrereleaseNumber = 99999999
233
+ }
234
+
201
235
# Mimic PowerShell that uses case-insensitive comparisons by default.
202
- $ret = [string ]::Compare($this .PrereleaseLabel , $other .PrereleaseLabel , $true )
236
+ $ret = [string ]::Compare($thisPrereleaseLabel , $otherPrereleaseLabel , $true )
203
237
if ($ret ) { return $ret }
204
238
205
- $ret = $this .PrereleaseNumber. CompareTo ($other .PrereleaseNumber )
239
+ $ret = $thisPrereleaseNumber . CompareTo ($otherPrereleaseNumber )
206
240
if ($ret ) { return $ret }
207
241
208
242
return ([int ] $this.BuildNumber ).CompareTo([int ] $other.BuildNumber )
@@ -360,6 +394,41 @@ class AzureEngSemanticVersion : IComparable {
360
394
Write-Host " Error: Python beta string did not correctly increment"
361
395
}
362
396
397
+ $version = [AzureEngSemanticVersion ]::ParseVersionString(" 0.1.2" )
398
+ $version.IncrementAndSetToPrerelease ()
399
+ $expected = " 0.2.0"
400
+ if ($expected -ne $version.ToString ()) {
401
+ Write-Host " Error: version string did not correctly increment. Expected: $expected , Actual: $version "
402
+ }
403
+
404
+ $version = [AzureEngSemanticVersion ]::ParseVersionString(" 0.1.2" )
405
+ $version.IncrementAndSetToPrerelease (" patch" )
406
+ $expected = " 0.1.3"
407
+ if ($expected -ne $version.ToString ()) {
408
+ Write-Host " Error: version string did not correctly increment. Expected: $expected , Actual: $version "
409
+ }
410
+
411
+ $version = [AzureEngSemanticVersion ]::ParseVersionString(" 0.1.2" )
412
+ $version.IncrementAndSetToPrerelease (" minor" )
413
+ $expected = " 0.2.0"
414
+ if ($expected -ne $version.ToString ()) {
415
+ Write-Host " Error: version string did not correctly increment. Expected: $expected , Actual: $version "
416
+ }
417
+
418
+ $version = [AzureEngSemanticVersion ]::ParseVersionString(" 0.1.2" )
419
+ $version.IncrementAndSetToPrerelease (" major" )
420
+ $expected = " 1.0.0-beta.1"
421
+ if ($expected -ne $version.ToString ()) {
422
+ Write-Host " Error: version string did not correctly increment. Expected: $expected , Actual: $version "
423
+ }
424
+
425
+ $version = [AzureEngSemanticVersion ]::ParseVersionString(" 1.0.0-beta.1" )
426
+ $version.IncrementAndSetToPrerelease ()
427
+ $expected = " 1.0.0-beta.2"
428
+ if ($expected -ne $version.ToString ()) {
429
+ Write-Host " Error: version string did not correctly increment. Expected: $expected , Actual: $version "
430
+ }
431
+
363
432
Write-Host " QuickTests done"
364
433
}
365
- }
434
+ }
0 commit comments