Pattern for infrastructure changed to quote filename and execute file with ampersand as everything is run in powershell now
Handle powershell commands by specifying any extra infrastructure around running scripts inside of ExecuteCommand and ElevatedExecuteCommand
This commit is contained in:
parent
d61513bf77
commit
e36051d394
|
@ -121,11 +121,11 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ExecuteCommand == "" {
|
if p.config.ExecuteCommand == "" {
|
||||||
p.config.ExecuteCommand = `{{.Vars}}{{.Path}}`
|
p.config.ExecuteCommand = `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode`
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ElevatedExecuteCommand == "" {
|
if p.config.ElevatedExecuteCommand == "" {
|
||||||
p.config.ElevatedExecuteCommand = `{{.Vars}}{{.Path}}'`
|
p.config.ElevatedExecuteCommand = `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode`
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.Inline != nil && len(p.config.Inline) == 0 {
|
if p.config.Inline != nil && len(p.config.Inline) == 0 {
|
||||||
|
@ -410,7 +410,7 @@ func (p *Provisioner) createCommandTextNonPrivileged() (command string, err erro
|
||||||
func (p *Provisioner) generateCommandLineRunner(command string) (commandText string, err error) {
|
func (p *Provisioner) generateCommandLineRunner(command string) (commandText string, err error) {
|
||||||
log.Printf("Building command line for: %s", command)
|
log.Printf("Building command line for: %s", command)
|
||||||
|
|
||||||
base64EncodedCommand, err := powershellEncode("if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; " + command + "; exit $LastExitCode")
|
base64EncodedCommand, err := powershellEncode(command)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Error encoding command: %s", err)
|
return "", fmt.Errorf("Error encoding command: %s", err)
|
||||||
}
|
}
|
||||||
|
@ -454,7 +454,7 @@ func (p *Provisioner) generateElevatedRunner(command string) (uploadedPath strin
|
||||||
// generate command
|
// generate command
|
||||||
var buffer bytes.Buffer
|
var buffer bytes.Buffer
|
||||||
|
|
||||||
base64EncodedCommand, err := powershellEncode("if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; " + command + "; exit $LastExitCode")
|
base64EncodedCommand, err := powershellEncode(command)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
return "", fmt.Errorf("Error encoding command: %s", err)
|
return "", fmt.Errorf("Error encoding command: %s", err)
|
||||||
}
|
}
|
||||||
|
|
|
@ -75,12 +75,12 @@ func TestProvisionerPrepare_Defaults(t *testing.T) {
|
||||||
t.Error("expected elevated_password to be empty")
|
t.Error("expected elevated_password to be empty")
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ExecuteCommand != `{{.Vars}}{{.Path}}` {
|
if p.config.ExecuteCommand != `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode` {
|
||||||
t.Fatalf("Default command should be '{{.Vars}}{{.Path}}', but got %s", p.config.ExecuteCommand)
|
t.Fatalf(`Default command should be "if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode", but got %s`, p.config.ExecuteCommand)
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ElevatedExecuteCommand != `{{.Vars}}{{.Path}}'` {
|
if p.config.ElevatedExecuteCommand != `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode` {
|
||||||
t.Fatalf("Default command should be '{{.Vars}}{{.Path}}', but got %s", p.config.ElevatedExecuteCommand)
|
t.Fatalf(`Default command should be "if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};{{.Vars}}&'{{.Path}}';exit $LastExitCode", but got %s`, p.config.ElevatedExecuteCommand)
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ValidExitCodes == nil {
|
if p.config.ValidExitCodes == nil {
|
||||||
|
@ -328,7 +328,7 @@ func TestProvisionerProvision_ValidExitCodes(t *testing.T) {
|
||||||
delete(config, "inline")
|
delete(config, "inline")
|
||||||
|
|
||||||
// Defaults provided by Packer
|
// Defaults provided by Packer
|
||||||
config["remote_path"] = "c:/Windows/Temp/inlineScript.bat"
|
config["remote_path"] = "c:/Windows/Temp/inlineScript.ps1"
|
||||||
config["inline"] = []string{"whoami"}
|
config["inline"] = []string{"whoami"}
|
||||||
ui := testUi()
|
ui := testUi()
|
||||||
p := new(Provisioner)
|
p := new(Provisioner)
|
||||||
|
@ -351,7 +351,7 @@ func TestProvisionerProvision_InvalidExitCodes(t *testing.T) {
|
||||||
delete(config, "inline")
|
delete(config, "inline")
|
||||||
|
|
||||||
// Defaults provided by Packer
|
// Defaults provided by Packer
|
||||||
config["remote_path"] = "c:/Windows/Temp/inlineScript.bat"
|
config["remote_path"] = "c:/Windows/Temp/inlineScript.ps1"
|
||||||
config["inline"] = []string{"whoami"}
|
config["inline"] = []string{"whoami"}
|
||||||
ui := testUi()
|
ui := testUi()
|
||||||
p := new(Provisioner)
|
p := new(Provisioner)
|
||||||
|
@ -374,7 +374,7 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
delete(config, "inline")
|
delete(config, "inline")
|
||||||
|
|
||||||
// Defaults provided by Packer
|
// Defaults provided by Packer
|
||||||
config["remote_path"] = "c:/Windows/Temp/inlineScript.bat"
|
config["remote_path"] = "c:/Windows/Temp/inlineScript.ps1"
|
||||||
config["inline"] = []string{"whoami"}
|
config["inline"] = []string{"whoami"}
|
||||||
ui := testUi()
|
ui := testUi()
|
||||||
p := new(Provisioner)
|
p := new(Provisioner)
|
||||||
|
@ -389,12 +389,12 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $env:PACKER_BUILDER_TYPE="iso"; $env:PACKER_BUILD_NAME="vmware"; c:/Windows/Temp/inlineScript.bat; exit $LastExitCode`
|
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};$env:PACKER_BUILDER_TYPE="iso"; $env:PACKER_BUILD_NAME="vmware"; &'c:/Windows/Temp/inlineScript.ps1';exit $LastExitCode`
|
||||||
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("should not have error when Utf 8 encoding")
|
t.Fatal("should not have error when Utf 8 encoding")
|
||||||
}
|
}
|
||||||
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIn07ICRlbnY6UEFDS0VSX0JVSUxERVJfVFlQRT0iaXNvIjsgJGVudjpQQUNLRVJfQlVJTERfTkFNRT0idm13YXJlIjsgYzovV2luZG93cy9UZW1wL2lubGluZVNjcmlwdC5iYXQ7IGV4aXQgJExhc3RFeGl0Q29kZQ==`
|
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSdTaWxlbnRseUNvbnRpbnVlJ307JGVudjpQQUNLRVJfQlVJTERFUl9UWVBFPSJpc28iOyAkZW52OlBBQ0tFUl9CVUlMRF9OQU1FPSJ2bXdhcmUiOyAmJ2M6L1dpbmRvd3MvVGVtcC9pbmxpbmVTY3JpcHQucHMxJztleGl0ICRMYXN0RXhpdENvZGU=`
|
||||||
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
||||||
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
||||||
|
|
||||||
|
@ -404,20 +404,19 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error when base64 decoding")
|
t.Fatal("should not have error when base64 decoding")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should run the command without alteration
|
if actualCommandDecoded != expectedCommandUtf8 {
|
||||||
if comm.StartCmd.Command != expectedCommandEncoded {
|
t.Fatalf("Expected decoded:%s, %s, got %s", expectedCommandEncoded, expectedCommandUtf8, actualCommandDecoded)
|
||||||
t.Fatalf("Expect command to be: %s, got %s.", expectedCommandEncoded, comm.StartCmd.Command)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if actualCommandDecoded != expectedCommandUtf8 {
|
if comm.StartCmd.Command != expectedCommandEncoded {
|
||||||
t.Fatalf("Expected decoded:%s, %s, got %s", expectedCommandEncoded, len(expectedCommandUtf8), len(actualCommandDecoded))
|
t.Fatalf("Expect command to be: %s, got %s", expectedCommandEncoded, comm.StartCmd.Command)
|
||||||
}
|
}
|
||||||
|
|
||||||
envVars := make([]string, 2)
|
envVars := make([]string, 2)
|
||||||
envVars[0] = "FOO=BAR"
|
envVars[0] = "FOO=BAR"
|
||||||
envVars[1] = "BAR=BAZ"
|
envVars[1] = "BAR=BAZ"
|
||||||
config["environment_vars"] = envVars
|
config["environment_vars"] = envVars
|
||||||
config["remote_path"] = "c:/Windows/Temp/inlineScript.bat"
|
config["remote_path"] = "c:/Windows/Temp/inlineScript.ps1"
|
||||||
|
|
||||||
p.Prepare(config)
|
p.Prepare(config)
|
||||||
err = p.Provision(ui, comm)
|
err = p.Provision(ui, comm)
|
||||||
|
@ -425,12 +424,12 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand = `if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $env:BAR="BAZ"; $env:FOO="BAR"; $env:PACKER_BUILDER_TYPE="iso"; $env:PACKER_BUILD_NAME="vmware"; c:/Windows/Temp/inlineScript.bat; exit $LastExitCode`
|
expectedCommand = `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};$env:BAR="BAZ"; $env:FOO="BAR"; $env:PACKER_BUILDER_TYPE="iso"; $env:PACKER_BUILD_NAME="vmware"; &'c:/Windows/Temp/inlineScript.ps1';exit $LastExitCode`
|
||||||
expectedCommandUtf8, err = powershellUtf8(expectedCommand)
|
expectedCommandUtf8, err = powershellUtf8(expectedCommand)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("should not have error when Utf 8 encoding")
|
t.Fatal("should not have error when Utf 8 encoding")
|
||||||
}
|
}
|
||||||
expectedCommandBase64Encoded = `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIn07ICRlbnY6QkFSPSJCQVoiOyAkZW52OkZPTz0iQkFSIjsgJGVudjpQQUNLRVJfQlVJTERFUl9UWVBFPSJpc28iOyAkZW52OlBBQ0tFUl9CVUlMRF9OQU1FPSJ2bXdhcmUiOyBjOi9XaW5kb3dzL1RlbXAvaW5saW5lU2NyaXB0LmJhdDsgZXhpdCAkTGFzdEV4aXRDb2Rl`
|
expectedCommandBase64Encoded = `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSdTaWxlbnRseUNvbnRpbnVlJ307JGVudjpCQVI9IkJBWiI7ICRlbnY6Rk9PPSJCQVIiOyAkZW52OlBBQ0tFUl9CVUlMREVSX1RZUEU9ImlzbyI7ICRlbnY6UEFDS0VSX0JVSUxEX05BTUU9InZtd2FyZSI7ICYnYzovV2luZG93cy9UZW1wL2lubGluZVNjcmlwdC5wczEnO2V4aXQgJExhc3RFeGl0Q29kZQ==`
|
||||||
expectedCommandPrefix = `powershell -executionpolicy bypass -encodedCommand `
|
expectedCommandPrefix = `powershell -executionpolicy bypass -encodedCommand `
|
||||||
expectedCommandEncoded = expectedCommandPrefix + expectedCommandBase64Encoded
|
expectedCommandEncoded = expectedCommandPrefix + expectedCommandBase64Encoded
|
||||||
|
|
||||||
|
@ -440,14 +439,13 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error when base64 decoding")
|
t.Fatal("should not have error when base64 decoding")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should run the command without alteration
|
|
||||||
if comm.StartCmd.Command != expectedCommandEncoded {
|
|
||||||
t.Fatalf("Expect command to be: %s, got %s.", expectedCommandEncoded, comm.StartCmd.Command)
|
|
||||||
}
|
|
||||||
|
|
||||||
if actualCommandDecoded != expectedCommandUtf8 {
|
if actualCommandDecoded != expectedCommandUtf8 {
|
||||||
t.Fatalf("Expected decoded: %s, got %s", expectedCommandUtf8, actualCommandDecoded)
|
t.Fatalf("Expected decoded: %s, got %s", expectedCommandUtf8, actualCommandDecoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if comm.StartCmd.Command != expectedCommandEncoded {
|
||||||
|
t.Fatalf("Expect command to be: %s, got %s", expectedCommandEncoded, comm.StartCmd.Command)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestProvisionerProvision_Scripts(t *testing.T) {
|
func TestProvisionerProvision_Scripts(t *testing.T) {
|
||||||
|
@ -468,12 +466,12 @@ func TestProvisionerProvision_Scripts(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $env:PACKER_BUILDER_TYPE="footype"; $env:PACKER_BUILD_NAME="foobuild"; c:/Windows/Temp/script.ps1; exit $LastExitCode`
|
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};$env:PACKER_BUILDER_TYPE="footype"; $env:PACKER_BUILD_NAME="foobuild"; &'c:/Windows/Temp/script.ps1';exit $LastExitCode`
|
||||||
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("should not have error when Utf 8 encoding")
|
t.Fatal("should not have error when Utf 8 encoding")
|
||||||
}
|
}
|
||||||
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIn07ICRlbnY6UEFDS0VSX0JVSUxERVJfVFlQRT0iZm9vdHlwZSI7ICRlbnY6UEFDS0VSX0JVSUxEX05BTUU9ImZvb2J1aWxkIjsgYzovV2luZG93cy9UZW1wL3NjcmlwdC5wczE7IGV4aXQgJExhc3RFeGl0Q29kZQ==`
|
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSdTaWxlbnRseUNvbnRpbnVlJ307JGVudjpQQUNLRVJfQlVJTERFUl9UWVBFPSJmb290eXBlIjsgJGVudjpQQUNLRVJfQlVJTERfTkFNRT0iZm9vYnVpbGQiOyAmJ2M6L1dpbmRvd3MvVGVtcC9zY3JpcHQucHMxJztleGl0ICRMYXN0RXhpdENvZGU=`
|
||||||
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
||||||
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
||||||
|
|
||||||
|
@ -483,13 +481,12 @@ func TestProvisionerProvision_Scripts(t *testing.T) {
|
||||||
t.Fatal("should not have error when base64 decoding")
|
t.Fatal("should not have error when base64 decoding")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should run the command without alteration
|
if actualCommandDecoded != expectedCommandUtf8 {
|
||||||
if comm.StartCmd.Command != expectedCommandEncoded {
|
t.Fatalf("Expected decoded: %s, got %s", expectedCommandUtf8, actualCommandDecoded)
|
||||||
t.Fatalf("Expect command to be: %s, got %s.", expectedCommandEncoded, comm.StartCmd.Command)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
if actualCommandDecoded != expectedCommandUtf8 {
|
if comm.StartCmd.Command != expectedCommandEncoded {
|
||||||
t.Fatalf("Expected decoded: %n, got %n", len(expectedCommandUtf8), len(actualCommandDecoded))
|
t.Fatalf("Expect command to be: %s, got %s", expectedCommandEncoded, comm.StartCmd.Command)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -518,12 +515,12 @@ func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $env:BAR="BAZ"; $env:FOO="BAR"; $env:PACKER_BUILDER_TYPE="footype"; $env:PACKER_BUILD_NAME="foobuild"; c:/Windows/Temp/script.ps1; exit $LastExitCode`
|
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};$env:BAR="BAZ"; $env:FOO="BAR"; $env:PACKER_BUILDER_TYPE="footype"; $env:PACKER_BUILD_NAME="foobuild"; &'c:/Windows/Temp/script.ps1';exit $LastExitCode`
|
||||||
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
expectedCommandUtf8, err := powershellUtf8(expectedCommand)
|
||||||
if err != nil {
|
if err != nil {
|
||||||
t.Fatal("should not have error when Utf 8 encoding")
|
t.Fatal("should not have error when Utf 8 encoding")
|
||||||
}
|
}
|
||||||
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIn07ICRlbnY6QkFSPSJCQVoiOyAkZW52OkZPTz0iQkFSIjsgJGVudjpQQUNLRVJfQlVJTERFUl9UWVBFPSJmb290eXBlIjsgJGVudjpQQUNLRVJfQlVJTERfTkFNRT0iZm9vYnVpbGQiOyBjOi9XaW5kb3dzL1RlbXAvc2NyaXB0LnBzMTsgZXhpdCAkTGFzdEV4aXRDb2Rl`
|
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSdTaWxlbnRseUNvbnRpbnVlJ307JGVudjpCQVI9IkJBWiI7ICRlbnY6Rk9PPSJCQVIiOyAkZW52OlBBQ0tFUl9CVUlMREVSX1RZUEU9ImZvb3R5cGUiOyAkZW52OlBBQ0tFUl9CVUlMRF9OQU1FPSJmb29idWlsZCI7ICYnYzovV2luZG93cy9UZW1wL3NjcmlwdC5wczEnO2V4aXQgJExhc3RFeGl0Q29kZQ==`
|
||||||
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
||||||
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
||||||
|
|
||||||
|
@ -533,14 +530,13 @@ func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) {
|
||||||
t.Fatal("should not have error when base64 decoding")
|
t.Fatal("should not have error when base64 decoding")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should run the command without alteration
|
|
||||||
if comm.StartCmd.Command != expectedCommandEncoded {
|
|
||||||
t.Fatalf("Expect command to be: %s, got %s.", expectedCommandEncoded, comm.StartCmd.Command)
|
|
||||||
}
|
|
||||||
|
|
||||||
if actualCommandDecoded != expectedCommandUtf8 {
|
if actualCommandDecoded != expectedCommandUtf8 {
|
||||||
t.Fatalf("Expected decoded: %s, got %s", expectedCommandUtf8, actualCommandDecoded)
|
t.Fatalf("Expected decoded: %s, got %s", expectedCommandUtf8, actualCommandDecoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if comm.StartCmd.Command != expectedCommandEncoded {
|
||||||
|
t.Fatalf("Expect command to be: %s, got %s", expectedCommandEncoded, comm.StartCmd.Command)
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func TestProvisionerProvision_UISlurp(t *testing.T) {
|
func TestProvisionerProvision_UISlurp(t *testing.T) {
|
||||||
|
@ -650,8 +646,8 @@ func TestProvision_createCommandText(t *testing.T) {
|
||||||
// Non-elevated
|
// Non-elevated
|
||||||
cmd, _ := p.createCommandText()
|
cmd, _ := p.createCommandText()
|
||||||
|
|
||||||
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $env:PACKER_BUILDER_TYPE=""; $env:PACKER_BUILD_NAME=""; c:/Windows/Temp/script.ps1; exit $LastExitCode`
|
expectedCommand := `if (Test-Path variable:global:ProgressPreference){$ProgressPreference='SilentlyContinue'};$env:PACKER_BUILDER_TYPE=""; $env:PACKER_BUILD_NAME=""; &'c:/Windows/Temp/script.ps1';exit $LastExitCode`
|
||||||
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSJTaWxlbnRseUNvbnRpbnVlIn07ICRlbnY6UEFDS0VSX0JVSUxERVJfVFlQRT0iIjsgJGVudjpQQUNLRVJfQlVJTERfTkFNRT0iIjsgYzovV2luZG93cy9UZW1wL3NjcmlwdC5wczE7IGV4aXQgJExhc3RFeGl0Q29kZQ==`
|
expectedCommandBase64Encoded := `aWYgKFRlc3QtUGF0aCB2YXJpYWJsZTpnbG9iYWw6UHJvZ3Jlc3NQcmVmZXJlbmNlKXskUHJvZ3Jlc3NQcmVmZXJlbmNlPSdTaWxlbnRseUNvbnRpbnVlJ307JGVudjpQQUNLRVJfQlVJTERFUl9UWVBFPSIiOyAkZW52OlBBQ0tFUl9CVUlMRF9OQU1FPSIiOyAmJ2M6L1dpbmRvd3MvVGVtcC9zY3JpcHQucHMxJztleGl0ICRMYXN0RXhpdENvZGU=`
|
||||||
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
expectedCommandPrefix := `powershell -executionpolicy bypass -encodedCommand `
|
||||||
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
expectedCommandEncoded := expectedCommandPrefix + expectedCommandBase64Encoded
|
||||||
|
|
||||||
|
@ -662,15 +658,14 @@ func TestProvision_createCommandText(t *testing.T) {
|
||||||
t.Fatal("should not have error when base64 decoding")
|
t.Fatal("should not have error when base64 decoding")
|
||||||
}
|
}
|
||||||
|
|
||||||
// Should run the command without alteration
|
|
||||||
if cmd != expectedCommandEncoded {
|
|
||||||
t.Fatalf("Expect command to be: %s, got %s.", expectedCommandEncoded, cmd)
|
|
||||||
}
|
|
||||||
|
|
||||||
if actualCommandDecoded != expectedCommand {
|
if actualCommandDecoded != expectedCommand {
|
||||||
t.Fatalf("Expected decoded: %s, got %s", expectedCommand, actualCommandDecoded)
|
t.Fatalf("Expected decoded: %s, got %s", expectedCommand, actualCommandDecoded)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if cmd != expectedCommandEncoded {
|
||||||
|
t.Fatalf("Expect command to be: %s, got %s", expectedCommandEncoded, cmd)
|
||||||
|
}
|
||||||
|
|
||||||
// Elevated
|
// Elevated
|
||||||
p.config.ElevatedUser = "vagrant"
|
p.config.ElevatedUser = "vagrant"
|
||||||
p.config.ElevatedPassword = "vagrant"
|
p.config.ElevatedPassword = "vagrant"
|
||||||
|
|
Loading…
Reference in New Issue