Context("when the command fails to start", func() { BeforeEach(func() { fakeSecureSession.StartReturns(errors.New("oh well")) }) It("returns the error", func() { Expect(sessionError).To(MatchError("oh well")) }) }) }) Context("when the shell or command has started", func() { var ( stdin *fake_io.FakeReadCloser stdout, stderr *fake_io.FakeWriter stdinPipe *fake_io.FakeWriteCloser stdoutPipe, stderrPipe *fake_io.FakeReader ) BeforeEach(func() { stdin = &fake_io.FakeReadCloser{} stdin.ReadStub = func(p []byte) (int, error) { p[0] = 0 return 1, io.EOF } stdinPipe = &fake_io.FakeWriteCloser{} stdinPipe.WriteStub = func(p []byte) (int, error) { defer GinkgoRecover() Expect(p[0]).To(Equal(byte(0))) return 1, nil }