Skip to content

Commit c3e9f96

Browse files
Compute exact expected versions from GH releases in verify steps
1 parent 9136f6c commit c3e9f96

1 file changed

Lines changed: 78 additions & 33 deletions

File tree

.github/workflows/Action-Test.yml

Lines changed: 78 additions & 33 deletions
Original file line numberDiff line numberDiff line change
@@ -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

Comments
 (0)