It("returns two failed statuses when both scripts fail", func() { existingScript1.RunReturns(errors.New("fake-error")) existingScript2.RunReturns(errors.New("fake-error")) err := parallelScript.Run() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(ContainSubstring("2 of 2 run-me scripts failed. Failed Jobs:")) Expect(err.Error()).To(ContainSubstring("fake-job-1")) Expect(err.Error()).To(ContainSubstring("fake-job-2")) Expect(err.Error()).ToNot(ContainSubstring("Successful Jobs")) }) It("returns one failed status when first script fail and second script pass, and when one fails continue waiting for unfinished tasks", func() { existingScript1.RunStub = func() error { time.Sleep(2 * time.Second) return errors.New("fake-error") } existingScript2.RunReturns(nil) err := parallelScript.Run() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("1 of 2 run-me scripts failed. Failed Jobs: fake-job-1. Successful Jobs: fake-job-2.")) }) It("returns one failed status when first script pass and second script fail", func() { existingScript1.RunReturns(nil) existingScript2.RunReturns(errors.New("fake-error")) err := parallelScript.Run() Expect(err).To(HaveOccurred()) Expect(err.Error()).To(Equal("1 of 2 run-me scripts failed. Failed Jobs: fake-job-2. Successful Jobs: fake-job-1."))