mirror of
https://github.com/actions/runner-images-sangeeth.git
synced 2025-12-20 06:29:50 +00:00
[Ubuntu] Migrate Toolset tests to Pester (#2339)
* migrate toolset tests to pester * move test invocation * minor fixes
This commit is contained in:
committed by
GitHub
parent
ab06a8a68f
commit
f58f2c1e02
@@ -4,6 +4,8 @@
|
|||||||
## Desc: Configure toolset
|
## Desc: Configure toolset
|
||||||
################################################################################
|
################################################################################
|
||||||
|
|
||||||
|
Import-Module "$env:HELPER_SCRIPTS/Tests.Helpers.psm1" -DisableNameChecking
|
||||||
|
|
||||||
function Get-ToolsetToolFullPath
|
function Get-ToolsetToolFullPath
|
||||||
{
|
{
|
||||||
param
|
param
|
||||||
@@ -93,3 +95,5 @@ foreach ($tool in $toolset.toolcache)
|
|||||||
Invoke-Expression -Command $command
|
Invoke-Expression -Command $command
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
Invoke-PesterTests -TestFile "Toolset" -TestName "Toolset"
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
################################################################################
|
|
||||||
## File: Validate-Toolset.ps1
|
|
||||||
## Team: CI-Build
|
|
||||||
## Desc: Validate Toolset
|
|
||||||
################################################################################
|
|
||||||
|
|
||||||
function Run-ExecutableTests {
|
|
||||||
param (
|
|
||||||
[Parameter(Mandatory)] [string[]] $Executables,
|
|
||||||
[Parameter(Mandatory)] [string] $ToolPath
|
|
||||||
)
|
|
||||||
$versionCommand = $Executables["command"]
|
|
||||||
|
|
||||||
foreach ($executable in $Executables["tools"]) {
|
|
||||||
$executablePath = Join-Path $ToolPath $executable
|
|
||||||
Write-Host "Check $executable..."
|
|
||||||
if (Test-Path $executablePath) {
|
|
||||||
Write-Host "$executable is successfully installed: $(& $executablePath $versionCommand)"
|
|
||||||
} else {
|
|
||||||
Write-Host "$executablePath is not installed!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
$ErrorActionPreference = "Stop"
|
|
||||||
|
|
||||||
# Define executables for cached tools
|
|
||||||
$toolsExecutables = @{
|
|
||||||
Python = @{
|
|
||||||
tools = @("python", "bin/pip")
|
|
||||||
command = "--version"
|
|
||||||
}
|
|
||||||
node = @{
|
|
||||||
tools = @("bin/node", "bin/npm")
|
|
||||||
command = "--version"
|
|
||||||
}
|
|
||||||
PyPy = @{
|
|
||||||
tools = @("bin/python", "bin/pip")
|
|
||||||
command = "--version"
|
|
||||||
}
|
|
||||||
go = @{
|
|
||||||
tools = @("bin/go")
|
|
||||||
command = "version"
|
|
||||||
}
|
|
||||||
Ruby = @{
|
|
||||||
tools = @("bin/ruby")
|
|
||||||
command = "--version"
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
# Get toolset content
|
|
||||||
$toolset = Get-Content -Path "$env:INSTALLER_SCRIPT_FOLDER/toolset.json" -Raw
|
|
||||||
$tools = ConvertFrom-Json -InputObject $toolset | Select-Object -ExpandProperty toolcache
|
|
||||||
|
|
||||||
foreach($tool in $tools) {
|
|
||||||
|
|
||||||
$toolPath = Join-Path $env:AGENT_TOOLSDIRECTORY $tool.name
|
|
||||||
# Get executables for current tool
|
|
||||||
$toolExecs = $toolsExecutables[$tool.name]
|
|
||||||
|
|
||||||
foreach ($version in $tool.versions) {
|
|
||||||
# Add wildcard if missing
|
|
||||||
if ($version.Split(".").Length -lt 3) {
|
|
||||||
$version += ".*"
|
|
||||||
}
|
|
||||||
|
|
||||||
# Check if version folder exists
|
|
||||||
$expectedVersionPath = Join-Path $toolPath $version
|
|
||||||
if (-not (Test-Path $expectedVersionPath)) {
|
|
||||||
Write-Host "Expected $($tool.name) $version folder is not found!"
|
|
||||||
exit 1
|
|
||||||
}
|
|
||||||
|
|
||||||
# Take latest installed version in case if toolset version contains wildcards
|
|
||||||
$foundVersion = Get-Item $expectedVersionPath `
|
|
||||||
| Sort-Object -Property {[version]$_.name} -Descending `
|
|
||||||
| Select-Object -First 1
|
|
||||||
$foundVersionPath = Join-Path $foundVersion $tool.arch
|
|
||||||
|
|
||||||
if ($toolExecs) {
|
|
||||||
Write-Host "Run validation test for $($tool.name)($($tool.arch)) $($foundVersion.name) executables..."
|
|
||||||
Run-ExecutableTests -Executables $toolExecs -ToolPath $foundVersionPath
|
|
||||||
}
|
|
||||||
$foundVersionName = $foundVersion.name
|
|
||||||
if ($tool.name -eq 'PyPy')
|
|
||||||
{
|
|
||||||
$pypyVersion = & "$foundVersionPath/bin/python" -c "import sys;print(sys.version.split('\n')[1])"
|
|
||||||
$foundVersionName = "{0} {1}" -f $foundVersionName, $pypyVersion
|
|
||||||
}
|
|
||||||
}
|
|
||||||
}
|
|
||||||
62
images/linux/scripts/tests/Toolset.Tests.ps1
Normal file
62
images/linux/scripts/tests/Toolset.Tests.ps1
Normal file
@@ -0,0 +1,62 @@
|
|||||||
|
Describe "Toolset" {
|
||||||
|
$tools = (Get-ToolsetContent).toolcache
|
||||||
|
|
||||||
|
$toolsExecutables = @{
|
||||||
|
Python = @{
|
||||||
|
tools = @("python", "bin/pip")
|
||||||
|
command = "--version"
|
||||||
|
}
|
||||||
|
node = @{
|
||||||
|
tools = @("bin/node", "bin/npm")
|
||||||
|
command = "--version"
|
||||||
|
}
|
||||||
|
PyPy = @{
|
||||||
|
tools = @("bin/python", "bin/pip")
|
||||||
|
command = "--version"
|
||||||
|
}
|
||||||
|
go = @{
|
||||||
|
tools = @("bin/go")
|
||||||
|
command = "version"
|
||||||
|
}
|
||||||
|
Ruby = @{
|
||||||
|
tools = @("bin/ruby")
|
||||||
|
command = "--version"
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
foreach($tool in $tools) {
|
||||||
|
$toolName = $tool.Name
|
||||||
|
Context "$toolName" {
|
||||||
|
$toolExecs = $toolsExecutables[$toolName]
|
||||||
|
|
||||||
|
foreach ($version in $tool.versions) {
|
||||||
|
# Add wildcard if missing
|
||||||
|
if ($version.Split(".").Length -lt 3) {
|
||||||
|
$version += ".*"
|
||||||
|
}
|
||||||
|
|
||||||
|
$expectedVersionPath = Join-Path $env:AGENT_TOOLSDIRECTORY $toolName $version
|
||||||
|
|
||||||
|
It "$version version folder exists" -TestCases @{ ExpectedVersionPath = $expectedVersionPath} {
|
||||||
|
$ExpectedVersionPath | Should -Exist
|
||||||
|
}
|
||||||
|
|
||||||
|
$toolExecs = $toolsExecutables[$toolName]
|
||||||
|
$foundVersion = Get-Item $expectedVersionPath `
|
||||||
|
| Sort-Object -Property {[version]$_.name} -Descending `
|
||||||
|
| Select-Object -First 1
|
||||||
|
$foundVersionPath = Join-Path $foundVersion $tool.arch
|
||||||
|
|
||||||
|
if($toolExecs) {
|
||||||
|
foreach ($executable in $toolExecs["tools"]) {
|
||||||
|
$executablePath = Join-Path $foundVersionPath $executable
|
||||||
|
|
||||||
|
It "Validate $executable" -TestCases @{ExecutablePath = $executablePath} {
|
||||||
|
$ExecutablePath | Should -Exist
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
@@ -246,8 +246,7 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
||||||
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1"
|
||||||
"{{template_dir}}/scripts/installers/Validate-Toolset.ps1"
|
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||||
|
|||||||
@@ -250,8 +250,7 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
||||||
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1"
|
||||||
"{{template_dir}}/scripts/installers/Validate-Toolset.ps1"
|
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||||
|
|||||||
@@ -250,8 +250,7 @@
|
|||||||
"type": "shell",
|
"type": "shell",
|
||||||
"scripts": [
|
"scripts": [
|
||||||
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Install-Toolset.ps1",
|
||||||
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1",
|
"{{template_dir}}/scripts/installers/Configure-Toolset.ps1"
|
||||||
"{{template_dir}}/scripts/installers/Validate-Toolset.ps1"
|
|
||||||
],
|
],
|
||||||
"environment_vars": [
|
"environment_vars": [
|
||||||
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
"HELPER_SCRIPTS={{user `helper_script_folder`}}",
|
||||||
|
|||||||
Reference in New Issue
Block a user