diff options
Diffstat (limited to 'omnibus/omnibus-test.ps1')
-rw-r--r-- | omnibus/omnibus-test.ps1 | 82 |
1 files changed, 63 insertions, 19 deletions
diff --git a/omnibus/omnibus-test.ps1 b/omnibus/omnibus-test.ps1 index a0a0adadef..8e826cfb77 100644 --- a/omnibus/omnibus-test.ps1 +++ b/omnibus/omnibus-test.ps1 @@ -10,28 +10,72 @@ If ([string]::IsNullOrEmpty($product)) { $product = "chef" } $version = "$Env:VERSION" If ([string]::IsNullOrEmpty($version)) { $version = "latest" } -Write-Output "--- Downloading $channel $product $version" -$download_url = C:\opscode\omnibus-toolchain\embedded\bin\mixlib-install.bat download --url --channel "$channel" "$product" --version "$version" -$package_file = "$Env:Temp\$(Split-Path -Path $download_url -Leaf)" -Invoke-WebRequest -OutFile "$package_file" -Uri "$download_url" - -Write-Output "--- Checking that $package_file has been signed." -If ((Get-AuthenticodeSignature "$package_file").Status -eq 'Valid') { - Write-Output "Verified $package_file has been signed." -} -Else { - Write-Output "Exiting with an error because $package_file has not been signed. Check your omnibus project config." - exit 1 +Write-Output "--- Installing $channel $product $version" +$package_file = $(C:\opscode\omnibus-toolchain\bin\install-omnibus-product.ps1 -Product "$product" -Channel "$channel" -Version "$version" | Select-Object -Last 1) + +Write-Output "--- Verifying omnibus package is signed" +C:\opscode\omnibus-toolchain\bin\check-omnibus-package-signed.ps1 "$package_file" + +Write-Output "--- Running verification for $channel $product $version" + +# We don't want to add the embedded bin dir to the main PATH as this +# could mask issues in our binstub shebangs. +$embedded_bin_dir = "C:\opscode\$product\embedded\bin" + +# Set TEMP and TMP environment variables to a short path because buildkite-agent user's default path is so long it causes tests to fail +$Env:TEMP = "C:\cheftest" +$Env:TMP = "C:\cheftest" +Remove-Item -Recurse -Force $Env:TEMP -ErrorAction SilentlyContinue +New-Item -ItemType directory -Path $Env:TEMP + +ForEach ($b in + "chef-client", + "knife", + "chef-solo", + "ohai" +) { + Write-Output "Checking for existence of binfile $b..." + + If (Test-Path -PathType Leaf -Path "C:\opscode\$product\bin\$b") { + Write-Output "Found $b!" + } + Else { + Write-Output "Error: Could not find $b" + exit 1 + } } -Write-Output "--- Installing $channel $product $version" -Start-Process "$package_file" /quiet -Wait +$Env:PATH = "C:\opscode\$product\bin;$Env:PATH" + +chef-client --version + +# Exercise various packaged tools to validate binstub shebangs +& $embedded_bin_dir\ruby --version +& $embedded_bin_dir\gem.bat --version +& $embedded_bin_dir\bundle.bat --version +& $embedded_bin_dir\rspec.bat --version + +$Env:PATH = "C:\opscode\$product\bin;C:\opscode\$product\embedded\bin;$Env:PATH" + +# Test against the vendored chef gem (cd into the output of "gem which chef") +$chefdir = gem which chef +$chefdir = Split-Path -Path "$chefdir" -Parent +$chefdir = Split-Path -Path "$chefdir" -Parent +Set-Location -Path $chefdir + +Get-Location + +# ffi-yajl must run in c-extension mode for perf, so force it so we don't accidentally fall back to ffi +$Env:FORCE_FFI_YAJL = "ext" -Write-Output "--- Testing $channel $product $version" +# chocolatey functional tests fail so delete the chocolatey binary to avoid triggering them +Remove-Item -Path C:\ProgramData\chocolatey\bin\choco.exe -ErrorAction SilentlyContinue -$Env:PATH = "C:\opscode\chef\bin;${Env:PATH}" -$Env:PROJECT_NAME = $product +# some tests need winrm configured +winrm quickconfig -quiet -Write-Output "Running verification for $product" +bundle +If ($lastexitcode -ne 0) { Exit $lastexitcode } -ci/verify-chef.bat +bundle exec rspec -r rspec_junit_formatter -f RspecJunitFormatter -o test.xml -f documentation spec/functional +If ($lastexitcode -ne 0) { Exit $lastexitcode } |