It("exits with the failure", func() { Eventually(process.Wait()).Should(Receive(Equal(disaster))) }) It("invokes the delegate's Failed callback", func() { Eventually(process.Wait()).Should(Receive(Equal(disaster))) Ω(taskDelegate.FailedCallCount()).Should(Equal(1)) Ω(taskDelegate.FailedArgsForCall(0)).Should(Equal(disaster)) }) }) Context("when setting the process property fails", func() { disaster := errors.New("nope") BeforeEach(func() { fakeContainer.SetPropertyReturns(disaster) }) It("exits with the error", func() { Eventually(process.Wait()).Should(Receive(Equal(disaster))) }) It("invokes the delegate's Failed callback", func() { Eventually(process.Wait()).Should(Receive(Equal(disaster))) Ω(taskDelegate.FailedCallCount()).Should(Equal(1)) Ω(taskDelegate.FailedArgsForCall(0)).Should(Equal(disaster)) }) }) Describe("signalling", func() { var stopped chan struct{}