packer-cn/packer/plugin/command_test.go

58 lines
1.4 KiB
Go

package plugin
import (
"cgl.tideland.biz/asserts"
"github.com/mitchellh/packer/packer"
"os/exec"
"testing"
)
// TODO: Test command cleanup functionality
// TODO: Test timeout functionality
type helperCommand byte
func (helperCommand) Run(packer.Environment, []string) int {
return 42
}
func (helperCommand) Synopsis() string {
return "1"
}
func TestCommand_NoExist(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
_, err := Command(exec.Command("i-should-never-ever-ever-exist"))
assert.NotNil(err, "should have an error")
}
func TestCommand_Good(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
command, err := Command(helperProcess("command"))
assert.Nil(err, "should start command properly")
assert.NotNil(command, "should have a command")
if command != nil {
result := command.Synopsis()
assert.Equal(result, "1", "should return result")
}
}
func TestCommand_CommandExited(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
_, err := Command(helperProcess("im-a-command-that-doesnt-work"))
assert.NotNil(err, "should have an error")
assert.Equal(err.Error(), "plugin exited before we could connect", "be correct error")
}
func TestCommand_BadRPC(t *testing.T) {
assert := asserts.NewTestingAsserts(t, true)
_, err := Command(helperProcess("invalid-rpc-address"))
assert.NotNil(err, "should have an error")
assert.Equal(err.Error(), "missing port in address lolinvalid", "be correct error")
}