11name : Action-Test
22
3- run-name : " Action-Test - [${{ github.event.pull_request.title }} #${{ github.event.pull_request.number }}] by @${{ github.actor }}"
3+ run-name : ' Action-Test - [${{ github.event.pull_request.title }} #${{ github.event.pull_request.number }}] by @${{ github.actor }}'
44
55on :
66 workflow_dispatch :
3939
4040 - name : Verify installed version
4141 shell : pwsh
42- env :
43- GITHUB_TOKEN : ${{ github.token }}
4442 run : |
45- # Requested version that came from the matrix
46- $requested = '${{ matrix.version }}'
47-
48- # When 'prerelease' → resolve to latest prerelease
49- if ($requested.Trim().ToLower() -eq 'prerelease') {
50- $releases = Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell/releases' `
51- -Headers @{
52- 'Accept' = 'application/vnd.github+json'
53- 'Authorization' = "Bearer $($env:GITHUB_TOKEN)"
54- 'X-GitHub-Api-Version' = '2022-11-28'
55- }
56- $latestPrerelease = $releases | Where-Object { $_.prerelease -eq $true } | Select-Object -First 1
57- if (-not $latestPrerelease) {
58- throw "No prerelease releases found for PowerShell/PowerShell."
59- }
60- $requested = $latestPrerelease.tag_name.TrimStart('v')
61- Write-Host "Resolved 'prerelease' → $requested"
62- }
63- # When empty / 'null' / 'latest' → resolve to latest stable release
64- elseif ([string]::IsNullOrWhiteSpace($requested) -or
65- $requested.Trim().ToLower() -in @('latest','null')) {
66-
67- $requested = (
68- Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell/releases/latest' `
69- -Headers @{
70- 'Accept' = 'application/vnd.github+json'
71- 'Authorization' = "Bearer $($env:GITHUB_TOKEN)"
72- 'X-GitHub-Api-Version' = '2022-11-28'
73- }
74- ).tag_name.TrimStart('v')
75- Write-Host "Resolved 'latest' → $requested"
76- }
77-
78- # On Windows, always verify by launching pwsh from the known install directory.
79- # This avoids relying on PATH resolution, which may still point to the pre-installed
80- # version if the runner's environment hasn't refreshed after the MSI install.
81- if ($IsWindows) {
82- $isPrerelease = $requested -match '-'
83- $majorVersion = ($requested -split '[\.-]')[0]
84- $installDir = if ($isPrerelease) { "$majorVersion-preview" } else { $majorVersion }
85- $pwshPath = "$env:ProgramFiles\PowerShell\$installDir\pwsh.exe"
86- Write-Host "Windows: verifying via subprocess at $pwshPath"
87- if (Test-Path $pwshPath) {
88- $installed = (& $pwshPath -NoLogo -NoProfile -Command '$PSVersionTable.PSVersion.ToString()')
89- } else {
90- Write-Host "Warning: Expected pwsh not found at $pwshPath, falling back to `$PSVersionTable"
91- $installed = ($PSVersionTable.PSVersion).ToString()
92- }
93- } else {
94- $installed = ($PSVersionTable.PSVersion).ToString()
95- }
96- Write-Host "Installed PowerShell version: $installed"
97- Write-Host "Expected PowerShell version: $requested"
98-
99- if ($installed -ne $requested) {
100- throw "Failed: expected $requested but got $installed"
101- }
102-
103- # For prerelease matrix entries, additionally assert the version string
104- # contains a prerelease segment so we never silently fall back to stable.
105- $matrixVersion = '${{ matrix.version }}'
106- if ($matrixVersion.Trim().ToLower() -eq 'prerelease') {
107- if ($installed -notmatch '-') {
108- throw "Prerelease validation failed: installed version '$installed' does not contain a prerelease segment."
109- }
110- Write-Host "Prerelease check passed: '$installed' contains a prerelease segment."
111- }
43+ ./test/scripts/Verify-InstalledVersion.ps1 -RequestedVersion '${{ matrix.version }}' -GitHubToken '${{ github.token }}'
11244
11345 ActionTestTokenUseCases :
11446 name : ' ubuntu-latest - [Token use cases]'
@@ -126,25 +58,8 @@ jobs:
12658
12759 - name : Verify default token behavior
12860 shell : pwsh
129- env :
130- GITHUB_TOKEN : ${{ github.token }}
13161 run : |
132- $expected = (
133- Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell/releases/latest' `
134- -Headers @{
135- 'Accept' = 'application/vnd.github+json'
136- 'Authorization' = "Bearer $($env:GITHUB_TOKEN)"
137- 'X-GitHub-Api-Version' = '2022-11-28'
138- }
139- ).tag_name.TrimStart('v')
140-
141- $installed = ($PSVersionTable.PSVersion).ToString()
142- Write-Host "Installed: $installed"
143- Write-Host "Expected : $expected"
144-
145- if ($installed -ne $expected) {
146- throw "Default token behavior failed: expected $expected but got $installed"
147- }
62+ ./test/scripts/Verify-InstalledVersion.ps1 -RequestedVersion 'latest' -GitHubToken '${{ github.token }}'
14863
14964 - name : Action-Test (Explicit token input)
15065 uses : ./
@@ -154,25 +69,8 @@ jobs:
15469
15570 - name : Verify explicit token input behavior
15671 shell : pwsh
157- env :
158- GITHUB_TOKEN : ${{ github.token }}
15972 run : |
160- $expected = (
161- Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell/releases/latest' `
162- -Headers @{
163- 'Accept' = 'application/vnd.github+json'
164- 'Authorization' = "Bearer $($env:GITHUB_TOKEN)"
165- 'X-GitHub-Api-Version' = '2022-11-28'
166- }
167- ).tag_name.TrimStart('v')
168-
169- $installed = ($PSVersionTable.PSVersion).ToString()
170- Write-Host "Installed: $installed"
171- Write-Host "Expected : $expected"
172-
173- if ($installed -ne $expected) {
174- throw "Explicit token behavior failed: expected $expected but got $installed"
175- }
73+ ./test/scripts/Verify-InstalledVersion.ps1 -RequestedVersion 'latest' -GitHubToken '${{ github.token }}'
17674
17775 - name : Action-Test (Anonymous mode)
17876 uses : ./
@@ -183,18 +81,4 @@ jobs:
18381 - name : Verify anonymous mode behavior
18482 shell : pwsh
18583 run : |
186- $expected = (
187- Invoke-RestMethod -Uri 'https://api.github.com/repos/PowerShell/PowerShell/releases/latest' `
188- -Headers @{
189- 'Accept' = 'application/vnd.github+json'
190- 'X-GitHub-Api-Version' = '2022-11-28'
191- }
192- ).tag_name.TrimStart('v')
193-
194- $installed = ($PSVersionTable.PSVersion).ToString()
195- Write-Host "Installed: $installed"
196- Write-Host "Expected : $expected"
197-
198- if ($installed -ne $expected) {
199- throw "Anonymous mode failed: expected $expected but got $installed"
200- }
84+ ./test/scripts/Verify-InstalledVersion.ps1 -RequestedVersion 'latest'
0 commit comments