[Ubuntu] Migrate Toolset tests to Pester (#2339)

* migrate toolset tests to pester

* move test invocation

* minor fixes
This commit is contained in:
Dibir Magomedsaygitov
2020-12-28 15:07:00 +03:00
committed by GitHub
parent ab06a8a68f
commit f58f2c1e02
6 changed files with 69 additions and 98 deletions

View File

@@ -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"

View File

@@ -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
}
}
}

View 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
}
}
}
}
}
}
}

View File

@@ -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`}}",

View File

@@ -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`}}",

View File

@@ -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`}}",