@@ -65,13 +65,20 @@ jobs:
6565 - name : Verify - Patch bump
6666 shell : pwsh
6767 env :
68+ GH_TOKEN : ${{ github.token }}
6869 RESOLVE_CREATE_RELEASE : ${{ steps.resolve.outputs.CreateRelease }}
6970 RESOLVE_VERSION : ${{ steps.resolve.outputs.Version }}
7071 RESOLVE_RELEASE_TYPE : ${{ steps.resolve.outputs.ReleaseType }}
7172 RESOLVE_FULL_VERSION : ${{ steps.resolve.outputs.FullVersion }}
7273 run : |
7374 $PSStyle.OutputRendering = 'Ansi'
7475
76+ $releases = (gh release list --json 'tagName,isLatest') | ConvertFrom-Json
77+ $latestTag = ($releases | Where-Object { $_.isLatest }).tagName
78+ if ([string]::IsNullOrEmpty($latestTag)) { $parts = @(0, 0, 0) }
79+ else { $parts = ($latestTag -replace '^v', '').Split('.') | ForEach-Object { [int]$_ } }
80+ $expectedVersion = "$($parts[0]).$($parts[1]).$($parts[2] + 1)"
81+
7582 Write-Host '--- Input ---'
7683 Write-Host "EventJson: {`"pull_request`":{`"head`":{`"ref`":`"feat/test-patch`"},`"labels`":[{`"name`":`"patch`"}]}}"
7784 Write-Host "Settings: ReleaseType=Release, AutoPatching=false, PatchLabels=patch"
@@ -80,23 +87,27 @@ jobs:
8087 @(
8188 [PSCustomObject]@{ Output = 'CreateRelease'; Expected = 'true'; Actual = $env:RESOLVE_CREATE_RELEASE; Passed = $env:RESOLVE_CREATE_RELEASE -eq 'true' }
8289 [PSCustomObject]@{ Output = 'ReleaseType'; Expected = 'Release'; Actual = $env:RESOLVE_RELEASE_TYPE; Passed = $env:RESOLVE_RELEASE_TYPE -eq 'Release' }
83- [PSCustomObject]@{ Output = 'Version'; Expected = '(non-empty)' ; Actual = $env:RESOLVE_VERSION; Passed = -not [string]::IsNullOrEmpty( $env:RESOLVE_VERSION) }
84- [PSCustomObject]@{ Output = 'FullVersion'; Expected = '(any)' ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $true }
90+ [PSCustomObject]@{ Output = 'Version'; Expected = $expectedVersion ; Actual = $env:RESOLVE_VERSION; Passed = $env:RESOLVE_VERSION -eq $expectedVersion }
91+ [PSCustomObject]@{ Output = 'FullVersion'; Expected = $expectedVersion ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -eq $expectedVersion }
8592 ) | Format-Table -AutoSize | Out-String -Width 200
8693
8794 $failed = $false
8895 if ($env:RESOLVE_CREATE_RELEASE -ne 'true') {
8996 Write-Error "CreateRelease: expected 'true', got '$env:RESOLVE_CREATE_RELEASE'"
9097 $failed = $true
9198 }
92- if ([string]::IsNullOrEmpty( $env:RESOLVE_VERSION) ) {
93- Write-Error "Version: expected non-empty , got empty "
99+ if ($env:RESOLVE_VERSION -ne $expectedVersion ) {
100+ Write-Error "Version: expected '$expectedVersion' , got '$env:RESOLVE_VERSION' "
94101 $failed = $true
95102 }
96103 if ($env:RESOLVE_RELEASE_TYPE -ne 'Release') {
97104 Write-Error "ReleaseType: expected 'Release', got '$env:RESOLVE_RELEASE_TYPE'"
98105 $failed = $true
99106 }
107+ if ($env:RESOLVE_FULL_VERSION -ne $expectedVersion) {
108+ Write-Error "FullVersion: expected '$expectedVersion', got '$env:RESOLVE_FULL_VERSION'"
109+ $failed = $true
110+ }
100111 if ($failed) { exit 1 }
101112
102113 ActionTest-MinorBump :
@@ -147,13 +158,20 @@ jobs:
147158 - name : Verify - Minor bump
148159 shell : pwsh
149160 env :
161+ GH_TOKEN : ${{ github.token }}
150162 RESOLVE_CREATE_RELEASE : ${{ steps.resolve.outputs.CreateRelease }}
151163 RESOLVE_VERSION : ${{ steps.resolve.outputs.Version }}
152164 RESOLVE_RELEASE_TYPE : ${{ steps.resolve.outputs.ReleaseType }}
153165 RESOLVE_FULL_VERSION : ${{ steps.resolve.outputs.FullVersion }}
154166 run : |
155167 $PSStyle.OutputRendering = 'Ansi'
156168
169+ $releases = (gh release list --json 'tagName,isLatest') | ConvertFrom-Json
170+ $latestTag = ($releases | Where-Object { $_.isLatest }).tagName
171+ if ([string]::IsNullOrEmpty($latestTag)) { $parts = @(0, 0, 0) }
172+ else { $parts = ($latestTag -replace '^v', '').Split('.') | ForEach-Object { [int]$_ } }
173+ $expectedVersion = "$($parts[0]).$($parts[1] + 1).0"
174+
157175 Write-Host '--- Input ---'
158176 Write-Host "EventJson: {`"pull_request`":{`"head`":{`"ref`":`"feat/test-minor`"},`"labels`":[{`"name`":`"minor`"}]}}"
159177 Write-Host "Settings: ReleaseType=Release, AutoPatching=false, MinorLabels=minor"
@@ -162,23 +180,27 @@ jobs:
162180 @(
163181 [PSCustomObject]@{ Output = 'CreateRelease'; Expected = 'true'; Actual = $env:RESOLVE_CREATE_RELEASE; Passed = $env:RESOLVE_CREATE_RELEASE -eq 'true' }
164182 [PSCustomObject]@{ Output = 'ReleaseType'; Expected = 'Release'; Actual = $env:RESOLVE_RELEASE_TYPE; Passed = $env:RESOLVE_RELEASE_TYPE -eq 'Release' }
165- [PSCustomObject]@{ Output = 'Version'; Expected = '(non-empty)' ; Actual = $env:RESOLVE_VERSION; Passed = -not [string]::IsNullOrEmpty( $env:RESOLVE_VERSION) }
166- [PSCustomObject]@{ Output = 'FullVersion'; Expected = '(any)' ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $true }
183+ [PSCustomObject]@{ Output = 'Version'; Expected = $expectedVersion ; Actual = $env:RESOLVE_VERSION; Passed = $env:RESOLVE_VERSION -eq $expectedVersion }
184+ [PSCustomObject]@{ Output = 'FullVersion'; Expected = $expectedVersion ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -eq $expectedVersion }
167185 ) | Format-Table -AutoSize | Out-String -Width 200
168186
169187 $failed = $false
170188 if ($env:RESOLVE_CREATE_RELEASE -ne 'true') {
171189 Write-Error "CreateRelease: expected 'true', got '$env:RESOLVE_CREATE_RELEASE'"
172190 $failed = $true
173191 }
174- if ([string]::IsNullOrEmpty( $env:RESOLVE_VERSION) ) {
175- Write-Error "Version: expected non-empty , got empty "
192+ if ($env:RESOLVE_VERSION -ne $expectedVersion ) {
193+ Write-Error "Version: expected '$expectedVersion' , got '$env:RESOLVE_VERSION' "
176194 $failed = $true
177195 }
178196 if ($env:RESOLVE_RELEASE_TYPE -ne 'Release') {
179197 Write-Error "ReleaseType: expected 'Release', got '$env:RESOLVE_RELEASE_TYPE'"
180198 $failed = $true
181199 }
200+ if ($env:RESOLVE_FULL_VERSION -ne $expectedVersion) {
201+ Write-Error "FullVersion: expected '$expectedVersion', got '$env:RESOLVE_FULL_VERSION'"
202+ $failed = $true
203+ }
182204 if ($failed) { exit 1 }
183205
184206 ActionTest-MajorBump :
@@ -229,13 +251,20 @@ jobs:
229251 - name : Verify - Major bump
230252 shell : pwsh
231253 env :
254+ GH_TOKEN : ${{ github.token }}
232255 RESOLVE_CREATE_RELEASE : ${{ steps.resolve.outputs.CreateRelease }}
233256 RESOLVE_VERSION : ${{ steps.resolve.outputs.Version }}
234257 RESOLVE_RELEASE_TYPE : ${{ steps.resolve.outputs.ReleaseType }}
235258 RESOLVE_FULL_VERSION : ${{ steps.resolve.outputs.FullVersion }}
236259 run : |
237260 $PSStyle.OutputRendering = 'Ansi'
238261
262+ $releases = (gh release list --json 'tagName,isLatest') | ConvertFrom-Json
263+ $latestTag = ($releases | Where-Object { $_.isLatest }).tagName
264+ if ([string]::IsNullOrEmpty($latestTag)) { $parts = @(0, 0, 0) }
265+ else { $parts = ($latestTag -replace '^v', '').Split('.') | ForEach-Object { [int]$_ } }
266+ $expectedVersion = "$($parts[0] + 1).0.0"
267+
239268 Write-Host '--- Input ---'
240269 Write-Host "EventJson: {`"pull_request`":{`"head`":{`"ref`":`"feat/test-major`"},`"labels`":[{`"name`":`"major`"}]}}"
241270 Write-Host "Settings: ReleaseType=Release, AutoPatching=false, MajorLabels=major"
@@ -244,23 +273,27 @@ jobs:
244273 @(
245274 [PSCustomObject]@{ Output = 'CreateRelease'; Expected = 'true'; Actual = $env:RESOLVE_CREATE_RELEASE; Passed = $env:RESOLVE_CREATE_RELEASE -eq 'true' }
246275 [PSCustomObject]@{ Output = 'ReleaseType'; Expected = 'Release'; Actual = $env:RESOLVE_RELEASE_TYPE; Passed = $env:RESOLVE_RELEASE_TYPE -eq 'Release' }
247- [PSCustomObject]@{ Output = 'Version'; Expected = '(non-empty)' ; Actual = $env:RESOLVE_VERSION; Passed = -not [string]::IsNullOrEmpty( $env:RESOLVE_VERSION) }
248- [PSCustomObject]@{ Output = 'FullVersion'; Expected = '(any)' ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $true }
276+ [PSCustomObject]@{ Output = 'Version'; Expected = $expectedVersion ; Actual = $env:RESOLVE_VERSION; Passed = $env:RESOLVE_VERSION -eq $expectedVersion }
277+ [PSCustomObject]@{ Output = 'FullVersion'; Expected = $expectedVersion ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -eq $expectedVersion }
249278 ) | Format-Table -AutoSize | Out-String -Width 200
250279
251280 $failed = $false
252281 if ($env:RESOLVE_CREATE_RELEASE -ne 'true') {
253282 Write-Error "CreateRelease: expected 'true', got '$env:RESOLVE_CREATE_RELEASE'"
254283 $failed = $true
255284 }
256- if ([string]::IsNullOrEmpty( $env:RESOLVE_VERSION) ) {
257- Write-Error "Version: expected non-empty , got empty "
285+ if ($env:RESOLVE_VERSION -ne $expectedVersion ) {
286+ Write-Error "Version: expected '$expectedVersion' , got '$env:RESOLVE_VERSION' "
258287 $failed = $true
259288 }
260289 if ($env:RESOLVE_RELEASE_TYPE -ne 'Release') {
261290 Write-Error "ReleaseType: expected 'Release', got '$env:RESOLVE_RELEASE_TYPE'"
262291 $failed = $true
263292 }
293+ if ($env:RESOLVE_FULL_VERSION -ne $expectedVersion) {
294+ Write-Error "FullVersion: expected '$expectedVersion', got '$env:RESOLVE_FULL_VERSION'"
295+ $failed = $true
296+ }
264297 if ($failed) { exit 1 }
265298
266299 ActionTest-AutoPatch :
@@ -309,13 +342,20 @@ jobs:
309342 - name : Verify - Auto-patch
310343 shell : pwsh
311344 env :
345+ GH_TOKEN : ${{ github.token }}
312346 RESOLVE_CREATE_RELEASE : ${{ steps.resolve.outputs.CreateRelease }}
313347 RESOLVE_VERSION : ${{ steps.resolve.outputs.Version }}
314348 RESOLVE_RELEASE_TYPE : ${{ steps.resolve.outputs.ReleaseType }}
315349 RESOLVE_FULL_VERSION : ${{ steps.resolve.outputs.FullVersion }}
316350 run : |
317351 $PSStyle.OutputRendering = 'Ansi'
318352
353+ $releases = (gh release list --json 'tagName,isLatest') | ConvertFrom-Json
354+ $latestTag = ($releases | Where-Object { $_.isLatest }).tagName
355+ if ([string]::IsNullOrEmpty($latestTag)) { $parts = @(0, 0, 0) }
356+ else { $parts = ($latestTag -replace '^v', '').Split('.') | ForEach-Object { [int]$_ } }
357+ $expectedVersion = "$($parts[0]).$($parts[1]).$($parts[2] + 1)"
358+
319359 Write-Host '--- Input ---'
320360 Write-Host "EventJson: {`"pull_request`":{`"head`":{`"ref`":`"feat/test-autopatch`"},`"labels`":[]}}"
321361 Write-Host "Settings: ReleaseType=Release, AutoPatching=true, PatchLabels=patch"
@@ -324,23 +364,27 @@ jobs:
324364 @(
325365 [PSCustomObject]@{ Output = 'CreateRelease'; Expected = 'true'; Actual = $env:RESOLVE_CREATE_RELEASE; Passed = $env:RESOLVE_CREATE_RELEASE -eq 'true' }
326366 [PSCustomObject]@{ Output = 'ReleaseType'; Expected = 'Release'; Actual = $env:RESOLVE_RELEASE_TYPE; Passed = $env:RESOLVE_RELEASE_TYPE -eq 'Release' }
327- [PSCustomObject]@{ Output = 'Version'; Expected = '(non-empty)' ; Actual = $env:RESOLVE_VERSION; Passed = -not [string]::IsNullOrEmpty( $env:RESOLVE_VERSION) }
328- [PSCustomObject]@{ Output = 'FullVersion'; Expected = '(any)' ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $true }
367+ [PSCustomObject]@{ Output = 'Version'; Expected = $expectedVersion ; Actual = $env:RESOLVE_VERSION; Passed = $env:RESOLVE_VERSION -eq $expectedVersion }
368+ [PSCustomObject]@{ Output = 'FullVersion'; Expected = $expectedVersion ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -eq $expectedVersion }
329369 ) | Format-Table -AutoSize | Out-String -Width 200
330370
331371 $failed = $false
332372 if ($env:RESOLVE_CREATE_RELEASE -ne 'true') {
333373 Write-Error "CreateRelease: expected 'true', got '$env:RESOLVE_CREATE_RELEASE'"
334374 $failed = $true
335375 }
336- if ([string]::IsNullOrEmpty( $env:RESOLVE_VERSION) ) {
337- Write-Error "Version: expected non-empty , got empty "
376+ if ($env:RESOLVE_VERSION -ne $expectedVersion ) {
377+ Write-Error "Version: expected '$expectedVersion' , got '$env:RESOLVE_VERSION' "
338378 $failed = $true
339379 }
340380 if ($env:RESOLVE_RELEASE_TYPE -ne 'Release') {
341381 Write-Error "ReleaseType: expected 'Release', got '$env:RESOLVE_RELEASE_TYPE'"
342382 $failed = $true
343383 }
384+ if ($env:RESOLVE_FULL_VERSION -ne $expectedVersion) {
385+ Write-Error "FullVersion: expected '$expectedVersion', got '$env:RESOLVE_FULL_VERSION'"
386+ $failed = $true
387+ }
344388 if ($failed) { exit 1 }
345389
346390 ActionTest-IgnoreLabel :
@@ -547,6 +591,7 @@ jobs:
547591 - name : Verify - Prerelease
548592 shell : pwsh
549593 env :
594+ GH_TOKEN : ${{ github.token }}
550595 RESOLVE_CREATE_RELEASE : ${{ steps.resolve.outputs.CreateRelease }}
551596 RESOLVE_VERSION : ${{ steps.resolve.outputs.Version }}
552597 RESOLVE_PRERELEASE : ${{ steps.resolve.outputs.Prerelease }}
@@ -555,6 +600,14 @@ jobs:
555600 run : |
556601 $PSStyle.OutputRendering = 'Ansi'
557602
603+ $releases = (gh release list --json 'tagName,isLatest') | ConvertFrom-Json
604+ $latestTag = ($releases | Where-Object { $_.isLatest }).tagName
605+ if ([string]::IsNullOrEmpty($latestTag)) { $parts = @(0, 0, 0) }
606+ else { $parts = ($latestTag -replace '^v', '').Split('.') | ForEach-Object { [int]$_ } }
607+ $expectedVersion = "$($parts[0]).$($parts[1] + 1).0"
608+ $expectedPrerelease = 'feataddprereleasesupport001'
609+ $expectedFullVersion = "$expectedVersion-$expectedPrerelease"
610+
558611 Write-Host '--- Input ---'
559612 Write-Host "EventJson: {`"pull_request`":{`"head`":{`"ref`":`"feat/add-prerelease-support`"},`"labels`":[{`"name`":`"minor`"}]}}"
560613 Write-Host "Settings: ReleaseType=Prerelease, AutoPatching=false, IncrementalPrerelease=true, MinorLabels=minor"
@@ -563,9 +616,9 @@ jobs:
563616 @(
564617 [PSCustomObject]@{ Output = 'CreateRelease'; Expected = 'true'; Actual = $env:RESOLVE_CREATE_RELEASE; Passed = $env:RESOLVE_CREATE_RELEASE -eq 'true' }
565618 [PSCustomObject]@{ Output = 'ReleaseType'; Expected = 'Prerelease'; Actual = $env:RESOLVE_RELEASE_TYPE; Passed = $env:RESOLVE_RELEASE_TYPE -eq 'Prerelease' }
566- [PSCustomObject]@{ Output = 'Version'; Expected = '(non-empty)' ; Actual = $env:RESOLVE_VERSION; Passed = -not [string]::IsNullOrEmpty( $env:RESOLVE_VERSION) }
567- [PSCustomObject]@{ Output = 'Prerelease'; Expected = 'feataddprereleasesupport*' ; Actual = $env:RESOLVE_PRERELEASE; Passed = $env:RESOLVE_PRERELEASE -like 'feataddprereleasesupport*' }
568- [PSCustomObject]@{ Output = 'FullVersion'; Expected = '(contains -)' ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -like '*-*' }
619+ [PSCustomObject]@{ Output = 'Version'; Expected = $expectedVersion ; Actual = $env:RESOLVE_VERSION; Passed = $env:RESOLVE_VERSION -eq $expectedVersion }
620+ [PSCustomObject]@{ Output = 'Prerelease'; Expected = $expectedPrerelease ; Actual = $env:RESOLVE_PRERELEASE; Passed = $env:RESOLVE_PRERELEASE -eq $expectedPrerelease }
621+ [PSCustomObject]@{ Output = 'FullVersion'; Expected = $expectedFullVersion ; Actual = $env:RESOLVE_FULL_VERSION; Passed = $env:RESOLVE_FULL_VERSION -eq $expectedFullVersion }
569622 ) | Format-Table -AutoSize | Out-String -Width 200
570623
571624 $failed = $false
@@ -577,24 +630,16 @@ jobs:
577630 Write-Error "ReleaseType: expected 'Prerelease', got '$env:RESOLVE_RELEASE_TYPE'"
578631 $failed = $true
579632 }
580- if ([string]::IsNullOrEmpty($env:RESOLVE_VERSION)) {
581- Write-Error "Version: expected non-empty, got empty"
582- $failed = $true
583- }
584- if ([string]::IsNullOrEmpty($env:RESOLVE_PRERELEASE)) {
585- Write-Error "Prerelease: expected non-empty (branch-derived tag), got empty"
586- $failed = $true
587- }
588- if ($env:RESOLVE_PRERELEASE -notlike 'feataddprereleasesupport*') {
589- Write-Error "Prerelease: expected to start with 'feataddprereleasesupport', got '$env:RESOLVE_PRERELEASE'"
633+ if ($env:RESOLVE_VERSION -ne $expectedVersion) {
634+ Write-Error "Version: expected '$expectedVersion', got '$env:RESOLVE_VERSION'"
590635 $failed = $true
591636 }
592- if ([string]::IsNullOrEmpty( $env:RESOLVE_FULL_VERSION) ) {
593- Write-Error "FullVersion : expected non-empty , got empty "
637+ if ($env:RESOLVE_PRERELEASE -ne $expectedPrerelease ) {
638+ Write-Error "Prerelease : expected '$expectedPrerelease' , got '$env:RESOLVE_PRERELEASE' "
594639 $failed = $true
595640 }
596- if ($env:RESOLVE_FULL_VERSION -notlike '*-*' ) {
597- Write-Error "FullVersion: expected to contain '-' (prerelease separator) , got '$env:RESOLVE_FULL_VERSION'"
641+ if ($env:RESOLVE_FULL_VERSION -ne $expectedFullVersion ) {
642+ Write-Error "FullVersion: expected '$expectedFullVersion' , got '$env:RESOLVE_FULL_VERSION'"
598643 $failed = $true
599644 }
600645 if ($failed) { exit 1 }
0 commit comments