From 2a6b411a80c8c539786165b2fa3afcae90744794 Mon Sep 17 00:00:00 2001 From: Sam Doran Date: Mon, 7 Dec 2020 18:33:52 -0500 Subject: [PATCH] [stable-2.10] ansible-test - skip installing PowerShell sanity test reqs if they are already installed (#72423) (#72424) (cherry picked from commit 809d5fc398) Co-authored-by: Jordan Borean --- .../fragments/ps-sanity-requirements.yml | 2 ++ .../_data/requirements/sanity.ps1 | 23 +++++++++++++++++-- 2 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 changelogs/fragments/ps-sanity-requirements.yml diff --git a/changelogs/fragments/ps-sanity-requirements.yml b/changelogs/fragments/ps-sanity-requirements.yml new file mode 100644 index 00000000000..682a23f3aa2 --- /dev/null +++ b/changelogs/fragments/ps-sanity-requirements.yml @@ -0,0 +1,2 @@ +bugfixes: +- ansible-test - Skip installing requirements if they are already installed. diff --git a/test/lib/ansible_test/_data/requirements/sanity.ps1 b/test/lib/ansible_test/_data/requirements/sanity.ps1 index 1875c306ba3..1ea1f8e5502 100755 --- a/test/lib/ansible_test/_data/requirements/sanity.ps1 +++ b/test/lib/ansible_test/_data/requirements/sanity.ps1 @@ -10,8 +10,27 @@ Set-StrictMode -Version 2.0 $ErrorActionPreference = "Stop" $ProgressPreference = 'SilentlyContinue' +Function Install-PSModule { + [CmdletBinding()] + param( + [Parameter(Mandatory=$true)] + [String] + $Name, + + [Parameter(Mandatory=$true)] + [Version] + $RequiredVersion + ) + + # In case PSGallery is down we check if the module is already installed. + $installedModule = Get-Module -Name $Name -ListAvailable | Where-Object Version -eq $RequiredVersion + if (-not $installedModule) { + Install-Module -Name $Name -RequiredVersion $RequiredVersion -Scope CurrentUser + } +} + Set-PSRepository -Name PSGallery -InstallationPolicy Trusted -Install-Module -Name PSScriptAnalyzer -RequiredVersion 1.18.0 -Scope CurrentUser +Install-PSModule -Name PSScriptAnalyzer -RequiredVersion 1.18.0 if ($IsContainer) { # PSScriptAnalyzer contain lots of json files for the UseCompatibleCommands check. We don't use this rule so by @@ -23,4 +42,4 @@ if ($IsContainer) { } # Installed the PSCustomUseLiteralPath rule -Install-Module -Name PSSA-PSCustomUseLiteralPath -RequiredVersion 0.1.1 -Scope CurrentUser +Install-PSModule -Name PSSA-PSCustomUseLiteralPath -RequiredVersion 0.1.1