Skip to content

Commit d36e8c4

Browse files
committed
Improve Test-Environment
1 parent 8979f5b commit d36e8c4

File tree

1 file changed

+64
-45
lines changed

1 file changed

+64
-45
lines changed

hugoalh.GitHubActionsToolkit/module/utility.psm1

Lines changed: 64 additions & 45 deletions
Original file line numberDiff line numberDiff line change
@@ -139,51 +139,70 @@ Function Test-Environment {
139139
[Alias('RequiredMessage', 'RequireMessage')][String]$MandatoryMessage = 'This process requires to invoke inside the GitHub Actions environment!',
140140
[Switch]$StepSummary# Deprecated, keep as legacy.
141141
)
142-
If (
143-
($Env:CI -ine 'true') -or
144-
[String]::IsNullOrWhiteSpace($Env:GITHUB_ACTION) -or
145-
($Env:GITHUB_ACTIONS -ine 'true') -or
146-
[String]::IsNullOrWhiteSpace($Env:GITHUB_ACTOR) -or
147-
[String]::IsNullOrWhiteSpace($Env:GITHUB_ACTOR_ID) -or
148-
[String]::IsNullOrWhiteSpace($Env:GITHUB_API_URL) -or
149-
[String]::IsNullOrWhiteSpace($Env:GITHUB_ENV) -or
150-
[String]::IsNullOrWhiteSpace($Env:GITHUB_EVENT_NAME) -or
151-
[String]::IsNullOrWhiteSpace($Env:GITHUB_EVENT_PATH) -or
152-
[String]::IsNullOrWhiteSpace($Env:GITHUB_GRAPHQL_URL) -or
153-
[String]::IsNullOrWhiteSpace($Env:GITHUB_JOB) -or
154-
[String]::IsNullOrWhiteSpace($Env:GITHUB_PATH) -or
155-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REF_NAME) -or
156-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REF_PROTECTED) -or
157-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REF_TYPE) -or
158-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REPOSITORY) -or
159-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REPOSITORY_ID) -or
160-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REPOSITORY_OWNER) -or
161-
[String]::IsNullOrWhiteSpace($Env:GITHUB_REPOSITORY_OWNER_ID) -or
162-
[String]::IsNullOrWhiteSpace($Env:GITHUB_RETENTION_DAYS) -or
163-
[String]::IsNullOrWhiteSpace($Env:GITHUB_RUN_ATTEMPT) -or
164-
[String]::IsNullOrWhiteSpace($Env:GITHUB_RUN_ID) -or
165-
[String]::IsNullOrWhiteSpace($Env:GITHUB_RUN_NUMBER) -or
166-
[String]::IsNullOrWhiteSpace($Env:GITHUB_SERVER_URL) -or
167-
[String]::IsNullOrWhiteSpace($Env:GITHUB_SHA) -or
168-
[String]::IsNullOrWhiteSpace($Env:GITHUB_STEP_SUMMARY) -or
169-
[String]::IsNullOrWhiteSpace($Env:GITHUB_WORKFLOW) -or
170-
[String]::IsNullOrWhiteSpace($Env:GITHUB_WORKFLOW_REF) -or
171-
[String]::IsNullOrWhiteSpace($Env:GITHUB_WORKFLOW_SHA) -or
172-
[String]::IsNullOrWhiteSpace($Env:GITHUB_WORKSPACE) -or
173-
[String]::IsNullOrWhiteSpace($Env:RUNNER_ARCH) -or
174-
[String]::IsNullOrWhiteSpace($Env:RUNNER_NAME) -or
175-
[String]::IsNullOrWhiteSpace($Env:RUNNER_OS) -or
176-
[String]::IsNullOrWhiteSpace($Env:RUNNER_TEMP) -or
177-
[String]::IsNullOrWhiteSpace($Env:RUNNER_TOOL_CACHE) -or
178-
((
179-
$Artifact.IsPresent -or
180-
$Cache.IsPresent
181-
) -and [String]::IsNullOrWhiteSpace($Env:ACTIONS_RUNTIME_TOKEN)) -or
182-
($Artifact.IsPresent -and [String]::IsNullOrWhiteSpace($Env:ACTIONS_RUNTIME_URL)) -or
183-
($Cache.IsPresent -and [String]::IsNullOrWhiteSpace($Env:ACTIONS_CACHE_URL)) -or
184-
($OpenIdConnect.IsPresent -and [String]::IsNullOrWhiteSpace($Env:ACTIONS_ID_TOKEN_REQUEST_TOKEN)) -or
185-
($OpenIdConnect.IsPresent -and [String]::IsNullOrWhiteSpace($Env:ACTIONS_ID_TOKEN_REQUEST_URL))
186-
) {
142+
[Hashtable[]]$Conditions = @(
143+
@{ NeedTest = $True; Name = 'CI'; ExpectedValue = 'true' },
144+
@{ NeedTest = $True; Name = 'GITHUB_ACTION'; },
145+
@{ NeedTest = $True; Name = 'GITHUB_ACTIONS'; ExpectedValue = 'true' },
146+
@{ NeedTest = $True; Name = 'GITHUB_ACTOR'; },
147+
@{ NeedTest = $True; Name = 'GITHUB_ACTOR_ID'; },
148+
@{ NeedTest = $True; Name = 'GITHUB_API_URL'; },
149+
@{ NeedTest = $True; Name = 'GITHUB_ENV'; },
150+
@{ NeedTest = $True; Name = 'GITHUB_EVENT_NAME'; },
151+
@{ NeedTest = $True; Name = 'GITHUB_EVENT_PATH'; },
152+
@{ NeedTest = $True; Name = 'GITHUB_GRAPHQL_URL'; },
153+
@{ NeedTest = $True; Name = 'GITHUB_JOB'; },
154+
@{ NeedTest = $True; Name = 'GITHUB_PATH'; },
155+
@{ NeedTest = $True; Name = 'GITHUB_REF_NAME'; },
156+
@{ NeedTest = $True; Name = 'GITHUB_REF_PROTECTED'; },
157+
@{ NeedTest = $True; Name = 'GITHUB_REF_TYPE'; },
158+
@{ NeedTest = $True; Name = 'GITHUB_REPOSITORY'; },
159+
@{ NeedTest = $True; Name = 'GITHUB_REPOSITORY_ID'; },
160+
@{ NeedTest = $True; Name = 'GITHUB_REPOSITORY_OWNER'; },
161+
@{ NeedTest = $True; Name = 'GITHUB_REPOSITORY_OWNER_ID'; },
162+
@{ NeedTest = $True; Name = 'GITHUB_RETENTION_DAYS'; },
163+
@{ NeedTest = $True; Name = 'GITHUB_RUN_ATTEMPT'; },
164+
@{ NeedTest = $True; Name = 'GITHUB_RUN_ID'; },
165+
@{ NeedTest = $True; Name = 'GITHUB_RUN_NUMBER'; },
166+
@{ NeedTest = $True; Name = 'GITHUB_SERVER_URL'; },
167+
@{ NeedTest = $True; Name = 'GITHUB_SHA'; },
168+
@{ NeedTest = $True; Name = 'GITHUB_STEP_SUMMARY'; },
169+
@{ NeedTest = $True; Name = 'GITHUB_WORKFLOW'; },
170+
@{ NeedTest = $True; Name = 'GITHUB_WORKFLOW_REF'; },
171+
@{ NeedTest = $True; Name = 'GITHUB_WORKFLOW_SHA'; },
172+
@{ NeedTest = $True; Name = 'GITHUB_WORKSPACE'; },
173+
@{ NeedTest = $True; Name = 'RUNNER_ARCH'; },
174+
@{ NeedTest = $True; Name = 'RUNNER_NAME'; },
175+
@{ NeedTest = $True; Name = 'RUNNER_OS'; },
176+
@{ NeedTest = $True; Name = 'RUNNER_TEMP'; },
177+
@{ NeedTest = $True; Name = 'RUNNER_TOOL_CACHE'; },
178+
@{ NeedTest = $Artifact.IsPresent -or $Cache.IsPresent; Name = 'ACTIONS_RUNTIME_TOKEN'; },
179+
@{ NeedTest = $Artifact.IsPresent; Name = 'ACTIONS_RUNTIME_URL'; },
180+
@{ NeedTest = $Cache.IsPresent; Name = 'ACTIONS_CACHE_URL'; },
181+
@{ NeedTest = $OpenIdConnect.IsPresent; Name = 'ACTIONS_ID_TOKEN_REQUEST_TOKEN'; },
182+
@{ NeedTest = $OpenIdConnect.IsPresent; Name = 'ACTIONS_ID_TOKEN_REQUEST_URL'; }
183+
)
184+
[Boolean]$Failed = $False
185+
ForEach ($Condition In $Conditions) {
186+
If ($Condition.NeedTest) {
187+
Try {
188+
If ($Null -ieq $Condition.ExpectedValue) {
189+
If ([String]::IsNullOrEmpty((Get-Content -LiteralPath "Env:\$($Condition.Name)" -ErrorAction 'SilentlyContinue'))) {
190+
Throw
191+
}
192+
}
193+
Else {
194+
If ((Get-Content -LiteralPath "Env:\$($Condition.Name)" -ErrorAction 'SilentlyContinue') -ine $Condition.ExpectedValue) {
195+
Throw
196+
}
197+
}
198+
}
199+
Catch {
200+
$Failed = $True
201+
Write-Warning -Message "Unable to get the GitHub Actions resources: Environment path ``$($Condition.Name)`` is undefined or not equal to expected value!"
202+
}
203+
}
204+
}
205+
If ($Failed) {
187206
If ($Mandatory.IsPresent) {
188207
Write-GitHubActionsFail -Message $MandatoryMessage
189208
Throw

0 commit comments

Comments
 (0)