step.Release() Expect(fakeResource.ReleaseCallCount()).To(Equal(1)) Expect(fakeResource.ReleaseArgsForCall(0)).To(Equal(worker.FinalTTL(5 * time.Minute))) }) }) Describe("signalling", func() { var receivedSignals <-chan os.Signal BeforeEach(func() { sigs := make(chan os.Signal) receivedSignals = sigs fakeVersionedSource.RunStub = func(signals <-chan os.Signal, ready chan<- struct{}) error { close(ready) sigs <- <-signals return nil } }) It("forwards to the resource", func() { process.Signal(os.Interrupt) Eventually(receivedSignals).Should(Receive(Equal(os.Interrupt))) Eventually(process.Wait()).Should(Receive()) }) }) Context("when performing the put fails", func() { Context("with an unknown error", func() { disaster := errors.New("nope")
Expect(ioConfig.Stderr).To(Equal(stderrBuf)) }) Context("when the cache is not initialized", func() { BeforeEach(func() { fakeCache.IsInitializedReturns(false, nil) }) It("runs the get resource action", func() { Expect(fakeVersionedSource.RunCallCount()).To(Equal(1)) }) Context("after the 'get' action completes", func() { BeforeEach(func() { fakeVersionedSource.RunStub = func(signals <-chan os.Signal, ready chan<- struct{}) error { Expect(fakeCache.InitializeCallCount()).To(Equal(0)) return nil } }) It("exits with no error", func() { Expect(<-process.Wait()).To(BeNil()) }) It("marks the cache as initialized", func() { <-process.Wait() Expect(fakeCache.InitializeCallCount()).To(Equal(1)) }) It("reports the fetched version info", func() { <-process.Wait()