Expect(err).NotTo(HaveOccurred()) logger = lagertest.NewTestLogger("test") retryable = repository_fetcher.Retryable{ RepositoryFetcher: fakeRemoteFetcher, Logger: logger, } }) Describe("Fetch failures", func() { Context("when fetching fails twice", func() { BeforeEach(func() { fakeRemoteFetcher.FetchStub = func(u *url.URL, diskQuota int64) (*repository_fetcher.Image, error) { if fakeRemoteFetcher.FetchCallCount() <= 2 { return nil, errors.New("error-talking-to-remote-repo") } else { return nil, nil } } _, err := retryable.Fetch(repoURL, 0) Expect(err).NotTo(HaveOccurred()) }) It("suceeds on third attempt", func() { Expect(fakeRemoteFetcher.FetchCallCount()).To(Equal(3)) }) It("logs failing attempts", func() { itLogsFailingAttempts(logger, 2, "test.failed-to-fetch") })