data, err := json.Marshal(&spec) Expect(err).ToNot(HaveOccurred()) request = &container_daemon.RequestMessage{ Type: container_daemon.ProcessRequest, Data: data, } listener.ListenStub = func(cb container_daemon.ConnectionHandler) error { b, err := json.Marshal(request) Expect(err).ToNot(HaveOccurred()) response, handlerError = cb.Handle(json.NewDecoder(bytes.NewReader(b))) if response != nil { handleFileHandles = response.Files handlerPid = response.Pid } else { handleFileHandles = nil handlerPid = 0 } return nil } daemon.Run(listener) }) It("runs the spawner with a prepared command", func() { Expect(preparer.PrepareCmdCallCount()).To(Equal(1)) Expect(preparer.PrepareCmdArgsForCall(0)).To(Equal(spec)) Expect(spawner.SpawnCallCount()).To(Equal(1))
Env: []string{"foo=bar", "baz=barry"}, } preparer.PrepareCmdReturns(exec.Command("foo"), nil) spawner.SpawnStub = func(cmd *exec.Cmd, withTty bool) ([]*os.File, error) { cmd.Process = &os.Process{Pid: 123} return nil, nil } }) JustBeforeEach(func() { listener.ListenStub = func(cb unix_socket.ConnectionHandler) error { b, err := json.Marshal(spec) Expect(err).ToNot(HaveOccurred()) handleFileHandles, handlerPid, handlerError = cb.Handle(json.NewDecoder(bytes.NewReader(b))) return nil } daemon.Run(listener) }) It("runs the spawner with a prepared command", func() { Expect(preparer.PrepareCmdCallCount()).To(Equal(1)) Expect(preparer.PrepareCmdArgsForCall(0)).To(Equal(spec)) Expect(spawner.SpawnCallCount()).To(Equal(1)) }) It("returns the PID of the spawned process", func() { Expect(handlerPid).To(Equal(123))