}, Pidfile: Pidfile{pidfile}, IO: nil, } }) AfterEach(func() { os.Remove(pidfile) }) It("sends the correct process payload to the server", func() { err := process.Start() Expect(err).ToNot(HaveOccurred()) Expect(socketConnector.ConnectCallCount()).To(Equal(1)) Expect(socketConnector.ConnectArgsForCall(0)).To(Equal(process.Spec)) }) Context("when the process is interactive (i.e. connected to a TTY)", func() { BeforeEach(func() { process.Spec.TTY = &garden.TTYSpec{} }) It("makes stdin a raw terminal (because the remote terminal will handle echoing etc.)", func() { socketConnector.ConnectReturns([]unix_socket.Fd{FakeFd(0), FakeFd(0)}, 0, nil) Expect(process.Start()).To(Succeed()) Expect(fakeTerm.SetRawTerminalCallCount()).To(Equal(1)) }) It("restores the terminal state when the process is cleaned up", func() {
Args: []string{"Hello world"}, }, IO: nil, } }) It("sends the correct process payload to the server", func() { err := process.Start() Expect(err).ToNot(HaveOccurred()) payload, err := json.Marshal(&process.Spec) Expect(err).ToNot(HaveOccurred()) Expect(socketConnector.ConnectCallCount()).To(Equal(1)) socketMessage := socketConnector.ConnectArgsForCall(0) Expect(socketMessage.Data).To(Equal(json.RawMessage(payload))) }) Describe("Signalling", func() { var ( signalSent syscall.Signal ) Context("when signalling is enabled", func() { BeforeEach(func() { response.Pid = 12 process.ReadSignals = true socketConnector.ConnectReturns(response, nil) Expect(process.Start()).To(Succeed())