From 38f799df3e81ec8188921c445b9f627f0d242543 Mon Sep 17 00:00:00 2001 From: Wilken Rivera Date: Mon, 4 May 2020 13:52:34 -0400 Subject: [PATCH] Add conditional to check if LastExitCode is defined * Add broken requires statement test case * Add test case to reproduce invalid LastExitCode --- provisioner/powershell/provisioner.go | 2 +- .../powershell/provisioner_acc_test.go | 2 +- .../powershell-exit_codes-provisioner.txt | 19 +++++++++++++++++++ .../powershell-provisioner-invalid.txt | 5 ----- .../scripts/set_version_latest.ps1 | 19 +++++++++++++++++++ 5 files changed, 40 insertions(+), 7 deletions(-) create mode 100644 provisioner/powershell/test-fixtures/powershell-exit_codes-provisioner.txt delete mode 100644 provisioner/powershell/test-fixtures/powershell-provisioner-invalid.txt create mode 100644 provisioner/powershell/test-fixtures/scripts/set_version_latest.ps1 diff --git a/provisioner/powershell/provisioner.go b/provisioner/powershell/provisioner.go index 4dc8486ec..9b3e30ef7 100644 --- a/provisioner/powershell/provisioner.go +++ b/provisioner/powershell/provisioner.go @@ -100,7 +100,7 @@ func (p *Provisioner) defaultExecuteCommand() string { baseCmd := `& { if (Test-Path variable:global:ProgressPreference)` + `{set-variable -name variable:global:ProgressPreference -value 'SilentlyContinue'};` + `{set-variable -name variable:global:ErrorActionPreference -value 'Continue'};` + - `%s. {{.Vars}};try { . '{{.Path}}' } catch { Write-Error $Error[0]; exit 1 }; exit $LastExitCode }` + `%s. {{.Vars}};try { & '{{.Path}}' } catch { Write-Error $Error[0]; exit 1 }; if ($LastExitCode) { exit $LastExitCode }}` var debugLine string if p.config.DebugMode != 0 { diff --git a/provisioner/powershell/provisioner_acc_test.go b/provisioner/powershell/provisioner_acc_test.go index 848ae04c8..bd96cddf7 100644 --- a/provisioner/powershell/provisioner_acc_test.go +++ b/provisioner/powershell/provisioner_acc_test.go @@ -44,7 +44,7 @@ func TestAccPowershellProvisioner_Invalid(t *testing.T) { // This provisioner should fail with an exit code of 1. To assert the failure the fixture // uses the valid_exit_codes option to confirm a non-zero exit code - testProvisioner := PowershellProvisionerAccTest{"powershell-provisioner-invalid.txt"} + testProvisioner := PowershellProvisionerAccTest{"powershell-exit_codes-provisioner.txt"} acc.TestProvisionersAgainstBuilders(&testProvisioner, t) } diff --git a/provisioner/powershell/test-fixtures/powershell-exit_codes-provisioner.txt b/provisioner/powershell/test-fixtures/powershell-exit_codes-provisioner.txt new file mode 100644 index 000000000..a8bfca090 --- /dev/null +++ b/provisioner/powershell/test-fixtures/powershell-exit_codes-provisioner.txt @@ -0,0 +1,19 @@ +{ + "type": "powershell", + "inline": ["invalid-cmdlet"], + "valid_exit_codes": ["1"] +}, +{ + "type": "powershell", + "inline": ["#Requires -Version 10.0"], + "valid_exit_codes": ["1"] +}, +{ + "type": "powershell", + "script": "../../provisioner/powershell/test-fixtures/scripts/set_version_latest.ps1" +}, +{ + "type": "powershell", + "inline": "sc.exe start Life", + "valid_exit_codes": ["1060"] +} diff --git a/provisioner/powershell/test-fixtures/powershell-provisioner-invalid.txt b/provisioner/powershell/test-fixtures/powershell-provisioner-invalid.txt deleted file mode 100644 index 037cb5551..000000000 --- a/provisioner/powershell/test-fixtures/powershell-provisioner-invalid.txt +++ /dev/null @@ -1,5 +0,0 @@ -{ - "type": "powershell", - "inline": ["invalid-cmdlet"], - "valid_exit_codes": ["1"] -} diff --git a/provisioner/powershell/test-fixtures/scripts/set_version_latest.ps1 b/provisioner/powershell/test-fixtures/scripts/set_version_latest.ps1 new file mode 100644 index 000000000..a8bbfff22 --- /dev/null +++ b/provisioner/powershell/test-fixtures/scripts/set_version_latest.ps1 @@ -0,0 +1,19 @@ +Set-StrictMode -Version Latest +$ErrorActionPreference = "Stop" + +function test +{ + + $myNumbersCollection = 1..5 + + if($myNumbersCollection -contains 3) + { + "collection contains 3" + } + else + { + "collection doesn't contain 3" + } +} + +test