Ω(err).ShouldNot(HaveOccurred()) Ω(fakeContainer.StreamInCallCount()).Should(Equal(initial + 1)) spec = fakeContainer.StreamInArgsForCall(initial) Ω(spec.Path).Should(Equal("/tmp/build/a-random-guid/some-other-input/foo")) Ω(spec.User).Should(Equal("")) // use default Ω(spec.TarStream).Should(Equal(streamIn)) Eventually(process.Wait()).Should(Receive(BeNil())) }) Context("when streaming the bits in to the container fails", func() { disaster := errors.New("nope") BeforeEach(func() { inputSource.StreamToReturns(disaster) }) It("exits with the error", func() { Eventually(process.Wait()).Should(Receive(Equal(disaster))) }) It("does not run anything", func() { Eventually(process.Wait()).Should(Receive()) Ω(fakeContainer.RunCallCount()).Should(Equal(0)) }) 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))
Expect(destDir).To(Equal("first-source/foo")) Expect(stream).To(Equal(someStream)) Expect(secondDestination.StreamIn("foo", someStream)).To(Succeed()) Expect(fakeDestination.StreamInCallCount()).To(Equal(2)) destDir, stream = fakeDestination.StreamInArgsForCall(1) Expect(destDir).To(Equal("second-source/foo")) Expect(stream).To(Equal(someStream)) }) Context("when the any of the sources fails to stream", func() { disaster := errors.New("nope") BeforeEach(func() { secondSource.StreamToReturns(disaster) }) It("returns the error", func() { Expect(streamErr).To(Equal(disaster)) }) }) }) Describe("StreamFile", func() { var path string var stream io.Reader var streamErr error JustBeforeEach(func() {