Make hiding of progress backward compatible with old versions of powershell
This commit is contained in:
parent
7c754bf791
commit
5d5809b27e
|
@ -37,7 +37,7 @@ func TestOutput(t *testing.T) {
|
||||||
|
|
||||||
func TestRunFile(t *testing.T) {
|
func TestRunFile(t *testing.T) {
|
||||||
var blockBuffer bytes.Buffer
|
var blockBuffer bytes.Buffer
|
||||||
blockBuffer.WriteString(`param([string]$a, [string]$b, [int]$x, [int]$y) $ProgressPreference='SilentlyContinue'; $n = $x + $y; Write-Output "$a $b $n";`)
|
blockBuffer.WriteString(`param([string]$a, [string]$b, [int]$x, [int]$y) if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}; $n = $x + $y; Write-Output "$a $b $n";`)
|
||||||
|
|
||||||
var ps PowerShellCmd
|
var ps PowerShellCmd
|
||||||
cmdOut, err := ps.Output(blockBuffer.String(), "a", "b", "5", "10")
|
cmdOut, err := ps.Output(blockBuffer.String(), "a", "b", "5", "10")
|
||||||
|
|
|
@ -58,7 +58,7 @@ $t.XmlText = @'
|
||||||
</Actions>
|
</Actions>
|
||||||
</Task>
|
</Task>
|
||||||
'@
|
'@
|
||||||
$ProgressPreference="SilentlyContinue";
|
if (Test-Path variable:global:ProgressPreference){$ProgressPreference="SilentlyContinue"}
|
||||||
$f = $s.GetFolder("\")
|
$f = $s.GetFolder("\")
|
||||||
$f.RegisterTaskDefinition($name, $t, 6, "{{.User}}", "{{.Password}}", 1, $null) | Out-Null
|
$f.RegisterTaskDefinition($name, $t, 6, "{{.User}}", "{{.Password}}", 1, $null) | Out-Null
|
||||||
$t = $f.GetTask("\$name")
|
$t = $f.GetTask("\$name")
|
||||||
|
|
|
@ -120,11 +120,11 @@ func (p *Provisioner) Prepare(raws ...interface{}) error {
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ExecuteCommand == "" {
|
if p.config.ExecuteCommand == "" {
|
||||||
p.config.ExecuteCommand = `powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}'`
|
p.config.ExecuteCommand = `powershell '& {if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; {{.Vars}}{{.Path}}; exit $LastExitCode}'`
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ElevatedExecuteCommand == "" {
|
if p.config.ElevatedExecuteCommand == "" {
|
||||||
p.config.ElevatedExecuteCommand = `powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}'`
|
p.config.ElevatedExecuteCommand = `powershell '& {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 {
|
||||||
|
@ -425,7 +425,7 @@ func (p *Provisioner) generateElevatedRunner(command string) (uploadedPath strin
|
||||||
Password: p.config.ElevatedPassword,
|
Password: p.config.ElevatedPassword,
|
||||||
TaskDescription: "Packer elevated task",
|
TaskDescription: "Packer elevated task",
|
||||||
TaskName: fmt.Sprintf("packer-%s", uuid.TimeOrderedUUID()),
|
TaskName: fmt.Sprintf("packer-%s", uuid.TimeOrderedUUID()),
|
||||||
EncodedCommand: powershellEncode([]byte("$ProgressPreference=\"SilentlyContinue\"; " + command + "; exit $LASTEXITCODE")),
|
EncodedCommand: powershellEncode([]byte("if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; " + command + "; exit $LASTEXITCODE")),
|
||||||
})
|
})
|
||||||
|
|
||||||
if err != nil {
|
if err != nil {
|
||||||
|
|
|
@ -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 != `powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}'` {
|
if p.config.ExecuteCommand != `powershell '& {if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; {{.Vars}}{{.Path}}; exit $LastExitCode}'` {
|
||||||
t.Fatalf("Default command should be powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}', but got %s", p.config.ExecuteCommand)
|
t.Fatalf("Default command should be powershell '& {if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; {{.Vars}}{{.Path}}; exit $LastExitCode}', but got %s", p.config.ExecuteCommand)
|
||||||
}
|
}
|
||||||
|
|
||||||
if p.config.ElevatedExecuteCommand != `powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}'` {
|
if p.config.ElevatedExecuteCommand != `powershell '& {if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; {{.Vars}}{{.Path}}; exit $LastExitCode}'` {
|
||||||
t.Fatalf("Default command should be powershell powershell '& {$ProgressPreference=\"SilentlyContinue\"; {{.Vars}}{{.Path}}; exit $LastExitCode}', but got %s", p.config.ElevatedExecuteCommand)
|
t.Fatalf("Default command should be powershell powershell '& {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 {
|
||||||
|
@ -389,7 +389,7 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand := `powershell '& {$ProgressPreference=\"SilentlyContinue\"; $env:PACKER_BUILDER_TYPE=\"iso\"; $env:PACKER_BUILD_NAME=\"vmware\"; c:/Windows/Temp/inlineScript.bat; exit $LastExitCode}'`
|
expectedCommand := `powershell '& {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}'`
|
||||||
|
|
||||||
// Should run the command without alteration
|
// Should run the command without alteration
|
||||||
if comm.StartCmd.Command != expectedCommand {
|
if comm.StartCmd.Command != expectedCommand {
|
||||||
|
@ -408,7 +408,7 @@ func TestProvisionerProvision_Inline(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand = `powershell '& {$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 = `powershell '& {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}'`
|
||||||
|
|
||||||
// Should run the command without alteration
|
// Should run the command without alteration
|
||||||
if comm.StartCmd.Command != expectedCommand {
|
if comm.StartCmd.Command != expectedCommand {
|
||||||
|
@ -435,7 +435,7 @@ func TestProvisionerProvision_Scripts(t *testing.T) {
|
||||||
}
|
}
|
||||||
|
|
||||||
//powershell -Command "$env:PACKER_BUILDER_TYPE=''"; powershell -Command "$env:PACKER_BUILD_NAME='foobuild'"; powershell -Command c:/Windows/Temp/script.ps1
|
//powershell -Command "$env:PACKER_BUILDER_TYPE=''"; powershell -Command "$env:PACKER_BUILD_NAME='foobuild'"; powershell -Command c:/Windows/Temp/script.ps1
|
||||||
expectedCommand := `powershell '& {$ProgressPreference=\"SilentlyContinue\"; $env:PACKER_BUILDER_TYPE=\"footype\"; $env:PACKER_BUILD_NAME=\"foobuild\"; c:/Windows/Temp/script.ps1; exit $LastExitCode}'`
|
expectedCommand := `powershell '& {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}'`
|
||||||
|
|
||||||
// Should run the command without alteration
|
// Should run the command without alteration
|
||||||
if comm.StartCmd.Command != expectedCommand {
|
if comm.StartCmd.Command != expectedCommand {
|
||||||
|
@ -468,7 +468,7 @@ func TestProvisionerProvision_ScriptsWithEnvVars(t *testing.T) {
|
||||||
t.Fatal("should not have error")
|
t.Fatal("should not have error")
|
||||||
}
|
}
|
||||||
|
|
||||||
expectedCommand := `powershell '& {$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 := `powershell '& {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}'`
|
||||||
|
|
||||||
// Should run the command without alteration
|
// Should run the command without alteration
|
||||||
if comm.StartCmd.Command != expectedCommand {
|
if comm.StartCmd.Command != expectedCommand {
|
||||||
|
@ -582,7 +582,7 @@ func TestProvision_createCommandText(t *testing.T) {
|
||||||
|
|
||||||
// Non-elevated
|
// Non-elevated
|
||||||
cmd, _ := p.createCommandText()
|
cmd, _ := p.createCommandText()
|
||||||
if cmd != `powershell '& {$ProgressPreference=\"SilentlyContinue\"; $env:PACKER_BUILDER_TYPE=\"\"; $env:PACKER_BUILD_NAME=\"\"; c:/Windows/Temp/script.ps1; exit $LastExitCode}'` {
|
if cmd != `powershell '& {if (Test-Path variable:global:ProgressPreference){$ProgressPreference=\"SilentlyContinue\"}; $env:PACKER_BUILDER_TYPE=\"\"; $env:PACKER_BUILD_NAME=\"\"; c:/Windows/Temp/script.ps1; exit $LastExitCode}'` {
|
||||||
t.Fatalf("Got unexpected non-elevated command: %s", cmd)
|
t.Fatalf("Got unexpected non-elevated command: %s", cmd)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
Loading…
Reference in New Issue