}) Context("when creating the task's container works", func() { var ( fakeContainer *wfakes.FakeContainer fakeProcess *gfakes.FakeProcess ) BeforeEach(func() { fakeContainer = new(wfakes.FakeContainer) fakeContainer.HandleReturns("some-handle") fakeWorkerClient.CreateContainerReturns(fakeContainer, nil) fakeProcess = new(gfakes.FakeProcess) fakeProcess.IDReturns(42) fakeContainer.RunReturns(fakeProcess, nil) fakeContainer.StreamInReturns(nil) }) Describe("before having created the container", func() { BeforeEach(func() { taskDelegate.InitializingStub = func(atc.TaskConfig) { defer GinkgoRecover() Ω(fakeWorkerClient.CreateContainerCallCount()).Should(BeZero()) } }) It("invokes the delegate's Initializing callback", func() { Ω(taskDelegate.InitializingCallCount()).Should(Equal(1)) Ω(taskDelegate.InitializingArgsForCall(0)).Should(Equal(fetchedConfig))
Context("when running the process succeeds", func() { var ( fakeProcess *gfakes.FakeProcess processExit chan int ) BeforeEach(func() { exit := make(chan int) processExit = exit fakeProcess = new(gfakes.FakeProcess) fakeProcess.WaitStub = func() (int, error) { return <-exit, nil } fakeContainer.RunReturns(fakeProcess, nil) }) AfterEach(func() { close(processExit) }) It("hijacks the build", func() { Eventually(fakeContainer.RunCallCount).Should(Equal(1)) _, lookedUpID := fakeWorkerClient.LookupContainerArgsForCall(0) Expect(lookedUpID).To(Equal(handle)) spec, io := fakeContainer.RunArgsForCall(0) Expect(spec).To(Equal(garden.ProcessSpec{ Path: "ls",