diff --git a/pkg/expect/expect.go b/pkg/expect/expect.go index 931a4e52b..34798998b 100644 --- a/pkg/expect/expect.go +++ b/pkg/expect/expect.go @@ -34,7 +34,7 @@ import ( const DEBUG_LINES_TAIL = 40 type ExpectProcess struct { - name string + cfg expectConfig cmd *exec.Cmd fpty *os.File @@ -58,15 +58,16 @@ func NewExpect(name string, arg ...string) (ep *ExpectProcess, err error) { // NewExpectWithEnv creates a new process with user defined env variables for expect testing. func NewExpectWithEnv(name string, args []string, env []string, serverProcessConfigName string) (ep *ExpectProcess, err error) { - cmd := exec.Command(name, args...) - cmd.Env = env ep = &ExpectProcess{ - name: serverProcessConfigName, - cmd: cmd, StopSignal: syscall.SIGTERM, + cfg: expectConfig{ + name: serverProcessConfigName, + cmd: name, + args: args, + env: env, + }, } - ep.cmd.Stderr = ep.cmd.Stdout - ep.cmd.Stdin = nil + ep.cmd = commandFromConfig(ep.cfg) if ep.fpty, err = pty.Start(ep.cmd); err != nil { return nil, err @@ -77,6 +78,21 @@ func NewExpectWithEnv(name string, args []string, env []string, serverProcessCon return ep, nil } +type expectConfig struct { + name string + cmd string + args []string + env []string +} + +func commandFromConfig(config expectConfig) *exec.Cmd { + cmd := exec.Command(config.cmd, config.args...) + cmd.Env = config.env + cmd.Stderr = cmd.Stdout + cmd.Stdin = nil + return cmd +} + func (ep *ExpectProcess) Pid() int { return ep.cmd.Process.Pid } @@ -90,7 +106,7 @@ func (ep *ExpectProcess) read() { ep.mu.Lock() if l != "" { if printDebugLines { - fmt.Printf("%s (%s) (%d): %s", ep.cmd.Path, ep.name, ep.cmd.Process.Pid, l) + fmt.Printf("%s (%s) (%d): %s", ep.cmd.Path, ep.cfg.name, ep.cmd.Process.Pid, l) } ep.lines = append(ep.lines, l) ep.count++