1
0
Fork 0
mirror of https://github.com/actions/go-versions synced 2024-11-24 12:22:39 +00:00
go-versions/tests/Go.Tests.ps1
2024-06-28 16:44:00 +05:30

96 lines
3.8 KiB
PowerShell

Import-Module (Join-Path $PSScriptRoot "../helpers/pester-extensions.psm1")
Import-Module (Join-Path $PSScriptRoot "../helpers/common-helpers.psm1")
BeforeAll {
Set-Location -Path "source"
$sourceLocation = Get-Location
function Get-UseGoLogs {
# GitHub Windows images don't have `HOME` variable
$homeDir = $env:HOME ?? $env:HOMEDRIVE
$logsFolderPath = Join-Path -Path $homeDir -ChildPath "runners/*/_diag/pages" -Resolve
$useGoLogFile = Get-ChildItem -Path $logsFolderPath | Where-Object {
$logContent = Get-Content $_.Fullname -Raw
return $logContent -match "setup-go@v"
} | Select-Object -First 1
return $useGoLogFile.Fullname
}
}
Describe "Go" {
It "is available" {
"go version" | Should -ReturnZeroExitCode
}
It "version is correct" {
[version]$Version = $env:VERSION
$versionOutput = Invoke-Expression -Command "go version"
# Extract only the version number from the go version command output.
$installedVersion = ($versionOutput -split " ")[2] -replace "go", "" -replace "v", ""
$finalVersion = $Version.ToString(3)
If ($Version.Build -eq "0"){
$finalVersion = $Version.ToString(2)
}
$installedVersion | Should -Match $finalVersion
}
It "is used from tool-cache" {
$goPath = (Get-Command "go").Path
$goPath | Should -Not -BeNullOrEmpty
# GitHub Windows images don't have `AGENT_TOOLSDIRECTORY` variable
$toolcacheDir = $env:AGENT_TOOLSDIRECTORY ?? $env:RUNNER_TOOL_CACHE
$expectedPath = Join-Path -Path $toolcacheDir -ChildPath "go"
$goPath.startsWith($expectedPath) | Should -BeTrue -Because "'$goPath' is not started with '$expectedPath'"
}
if ($env:RUNNER_TYPE -eq "GitHub") {
# 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 {
# Get the installed version of Node.js
$nodeVersion = Invoke-Expression "node --version"
# Check if Node.js is installed
$nodeVersion | Should -Not -BeNullOrEmpty
# Check if the installed version of Node.js is the expected version
$nodeVersion | Should -Match $env:VERSION
}
It "Run simple code" {
$simpleLocation = Join-Path -Path $sourceLocation -ChildPath "simple"
Set-Location -Path $simpleLocation
"go run simple.go" | Should -ReturnZeroExitCode
"go build simple.go" | Should -ReturnZeroExitCode
$compiledPackageName = "simple"
if ($IsWindows) { $compiledPackageName += ".exe" }
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
}
It "Run maps code" {
$mapsLocation = Join-Path -Path $sourceLocation -ChildPath "maps"
Set-Location -Path $mapsLocation
"go run maps.go" | Should -ReturnZeroExitCode
"go build maps.go" | Should -ReturnZeroExitCode
$compiledPackageName = "maps"
if ($IsWindows) { $compiledPackageName += ".exe" }
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
}
It "Run methods code" {
$methodsLocation = Join-Path -Path $sourceLocation -ChildPath "methods"
Set-Location -Path $methodsLocation
"go run methods.go" | Should -ReturnZeroExitCode
"go build methods.go" | Should -ReturnZeroExitCode
$compiledPackageName = "methods"
if ($IsWindows) { $compiledPackageName += ".exe" }
(Resolve-Path "./$compiledPackageName").Path | Should -ReturnZeroExitCode
}
}