2020-06-02 15:21:42 +00:00
|
|
|
Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
|
2020-04-23 09:58:18 +00:00
|
|
|
|
2020-08-24 17:07:31 +00:00
|
|
|
BeforeAll {
|
|
|
|
function Get-UseNodeLogs {
|
2024-06-26 09:13:49 +00:00
|
|
|
# GitHub Windows images don't have `HOME` variable
|
|
|
|
$homeDir = $env:HOME ?? $env:HOMEDRIVE
|
|
|
|
$logsFolderPath = Join-Path -Path $homeDir -ChildPath "runners/*/_diag/pages" -Resolve
|
|
|
|
|
|
|
|
$useNodeLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object {
|
|
|
|
$logContent = Get-Content $_.Fullname -Raw
|
|
|
|
return $logContent -match "setup-node@v"
|
|
|
|
} | Select-Object -First 1
|
|
|
|
return $useNodeLogFile.Fullname
|
|
|
|
}
|
|
|
|
}
|
2020-08-24 17:07:31 +00:00
|
|
|
|
2020-04-23 09:58:18 +00:00
|
|
|
Describe "Node.js" {
|
|
|
|
It "is available" {
|
|
|
|
"node --version" | Should -ReturnZeroExitCode
|
|
|
|
}
|
|
|
|
|
|
|
|
It "version is correct" {
|
|
|
|
$versionOutput = Invoke-Expression "node --version"
|
2020-08-24 17:07:31 +00:00
|
|
|
$versionOutput | Should -Match $env:VERSION
|
2020-04-23 09:58:18 +00:00
|
|
|
}
|
|
|
|
|
|
|
|
It "is used from tool-cache" {
|
|
|
|
$nodePath = (Get-Command "node").Path
|
|
|
|
$nodePath | Should -Not -BeNullOrEmpty
|
2020-08-24 08:10:43 +00:00
|
|
|
|
|
|
|
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
|
|
|
|
$toolcacheDir = $env:AGENT_TOOLSDIRECTORY ?? $env:RUNNER_TOOL_CACHE
|
|
|
|
$expectedPath = Join-Path -Path $toolcacheDir -ChildPath "node"
|
2020-04-23 09:58:18 +00:00
|
|
|
$nodePath.startsWith($expectedPath) | Should -BeTrue -Because "'$nodePath' is not started with '$expectedPath'"
|
|
|
|
}
|
|
|
|
|
2024-06-26 12:26:28 +00:00
|
|
|
It "cached version is used without downloading" {
|
2024-06-26 12:14:26 +00:00
|
|
|
# Set a custom variable to check for architecture and OS
|
2024-06-27 05:34:32 +00:00
|
|
|
$isWindows = if ($IsWindows) {$true} else {$false}
|
2024-06-26 12:26:28 +00:00
|
|
|
$isArm64Linux = if ((uname -m) -eq 'aarch64' -and ((uname -o) -eq 'GNU/Linux')) {$true} else {$false}
|
2024-06-26 12:14:26 +00:00
|
|
|
|
2024-06-27 05:34:32 +00:00
|
|
|
if (!$isWindows -and !$isArm64Linux) {
|
2024-06-26 12:14:26 +00:00
|
|
|
# Analyze output of previous steps to check if Node.js was consumed from cache or downloaded
|
|
|
|
$useNodeLogFile = Get-UseNodeLogs
|
|
|
|
$useNodeLogFile | Should -Exist
|
|
|
|
$useNodeLogContent = Get-Content $useNodeLogFile -Raw
|
|
|
|
$useNodeLogContent | Should -Match "Found in cache"
|
|
|
|
} else {
|
|
|
|
# Skip the test for arm64 on Windows and Linux
|
|
|
|
Set-ItResult -Skipped -Because "Skipping this test for arm64 on Windows and Linux"
|
2020-04-23 09:58:18 +00:00
|
|
|
}
|
2024-06-26 12:14:26 +00:00
|
|
|
}
|
2024-06-25 09:45:20 +00:00
|
|
|
|
2020-04-23 09:58:18 +00:00
|
|
|
It "Run simple code" {
|
|
|
|
"node ./simple-test.js" | Should -ReturnZeroExitCode
|
|
|
|
}
|
2024-06-25 06:45:12 +00:00
|
|
|
}
|