diff --git a/provisioner/shell-local/communicator_test.go b/provisioner/shell-local/communicator_test.go new file mode 100644 index 000000000..90402324b --- /dev/null +++ b/provisioner/shell-local/communicator_test.go @@ -0,0 +1,45 @@ +package shell + +import ( + "bytes" + "runtime" + "strings" + "testing" + + "github.com/mitchellh/packer/packer" +) + +func TestCommunicator_impl(t *testing.T) { + var _ packer.Communicator = new(Communicator) +} + +func TestCommunicator(t *testing.T) { + if runtime.GOOS == "windows" { + t.Skip("windows not supported for this test") + return + } + + c := &Communicator{ + ExecuteCommand: []string{"/bin/sh", "-c", "{{.Command}}"}, + } + + var buf bytes.Buffer + cmd := &packer.RemoteCmd{ + Command: "echo foo", + Stdout: &buf, + } + + if err := c.Start(cmd); err != nil { + t.Fatalf("err: %s", err) + } + + cmd.Wait() + + if cmd.ExitStatus != 0 { + t.Fatalf("err bad exit status: %d", cmd.ExitStatus) + } + + if strings.TrimSpace(buf.String()) != "foo" { + t.Fatalf("bad: %s", buf.String()) + } +}