packer/powershell/powershell_test.go
Taliesin Sisson 4b394c8563 Write output will put ouput from function, so we don't want to be getting line from output of function
Fix unit tests for not showing progress stream when using powershell
Ensure that progress stream does not get leaked into stdout
Using Write-Output instead of Write-Host since PS v5 now leaks the host stream to stderr
2016-12-12 22:44:33 +00:00

52 lines
1.1 KiB
Go

package powershell
import (
"bytes"
"testing"
)
func TestOutput(t *testing.T) {
var ps PowerShellCmd
cmdOut, err := ps.Output("")
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if cmdOut != "" {
t.Fatalf("output '%v' is not ''", cmdOut)
}
trueOutput, err := ps.Output("$True")
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if trueOutput != "True" {
t.Fatalf("output '%v' is not 'True'", trueOutput)
}
falseOutput, err := ps.Output("$False")
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if falseOutput != "False" {
t.Fatalf("output '%v' is not 'False'", falseOutput)
}
}
func TestRunFile(t *testing.T) {
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";`)
var ps PowerShellCmd
cmdOut, err := ps.Output(blockBuffer.String(), "a", "b", "5", "10")
if err != nil {
t.Fatalf("should not have error: %s", err)
}
if cmdOut != "a b 15" {
t.Fatalf("output '%v' is not 'a b 15'", cmdOut)
}
}