示例#1
0
					disaster := errors.New("nope")

					BeforeEach(func() {
						fakeVersionedSource.RunReturns(disaster)
					})

					It("exits with the failure", func() {
						Eventually(process.Wait()).Should(Receive(Equal(disaster)))
					})

					It("invokes the delegate's Failed callback without completing", func() {
						Eventually(process.Wait()).Should(Receive(Equal(disaster)))

						Expect(putDelegate.CompletedCallCount()).To(BeZero())

						Expect(putDelegate.FailedCallCount()).To(Equal(1))
						Expect(putDelegate.FailedArgsForCall(0)).To(Equal(disaster))
					})

					Describe("releasing", func() {
						It("releases the resource with a ttl of 1 hour", func() {
							<-process.Wait()

							Expect(fakeResource.ReleaseCallCount()).To(BeZero())

							step.Release()
							Expect(fakeResource.ReleaseCallCount()).To(Equal(1))
							Expect(fakeResource.ReleaseArgsForCall(0)).To(Equal(worker.FinalTTL(1 * time.Hour)))
						})
					})
				})
示例#2
0
				disaster := errors.New("nope")

				BeforeEach(func() {
					fakeVersionedSource.RunReturns(disaster)
				})

				It("exits with the failure", func() {
					Eventually(process.Wait()).Should(Receive(Equal(disaster)))
				})

				It("invokes the delegate's Failed callback without completing", func() {
					Eventually(process.Wait()).Should(Receive(Equal(disaster)))

					Ω(putDelegate.CompletedCallCount()).Should(BeZero())

					Ω(putDelegate.FailedCallCount()).Should(Equal(1))
					Ω(putDelegate.FailedArgsForCall(0)).Should(Equal(disaster))
				})

				Context("with a resource script failure", func() {
					var resourceScriptError resource.ErrResourceScriptFailed

					BeforeEach(func() {
						resourceScriptError = resource.ErrResourceScriptFailed{
							ExitStatus: 1,
						}

						fakeVersionedSource.RunReturns(resourceScriptError)
					})

					It("invokes the delegate's Finished callback instead of failed", func() {