1package release_test 2 3import ( 4 "errors" 5 6 . "github.com/onsi/ginkgo" 7 . "github.com/onsi/gomega" 8 9 . "github.com/cloudfoundry/bosh-cli/release" 10 fakerel "github.com/cloudfoundry/bosh-cli/release/releasefakes" 11 fakeres "github.com/cloudfoundry/bosh-cli/release/resource/resourcefakes" 12) 13 14var _ = Describe("BuiltReader", func() { 15 Describe("Read", func() { 16 var ( 17 innerReader *fakerel.FakeReader 18 devIndicies ArchiveIndicies 19 finalIndicies ArchiveIndicies 20 reader BuiltReader 21 ) 22 23 BeforeEach(func() { 24 innerReader = &fakerel.FakeReader{} 25 26 devIndicies = ArchiveIndicies{ 27 Jobs: &fakeres.FakeArchiveIndex{ 28 FindStub: func(_, _ string) (string, string, error) { return "dev", "", nil }, 29 }, 30 Packages: &fakeres.FakeArchiveIndex{}, 31 Licenses: &fakeres.FakeArchiveIndex{}, 32 } 33 34 finalIndicies = ArchiveIndicies{ 35 Jobs: &fakeres.FakeArchiveIndex{ 36 FindStub: func(_, _ string) (string, string, error) { return "final", "", nil }, 37 }, 38 Packages: &fakeres.FakeArchiveIndex{}, 39 Licenses: &fakeres.FakeArchiveIndex{}, 40 } 41 42 reader = NewBuiltReader(innerReader, devIndicies, finalIndicies, 3) 43 }) 44 45 It("reads and builds release", func() { 46 readRelease := &fakerel.FakeRelease{} 47 innerReader.ReadReturns(readRelease, nil) 48 49 release, err := reader.Read("/release.tgz") 50 Expect(err).ToNot(HaveOccurred()) 51 Expect(release).To(Equal(readRelease)) 52 53 Expect(readRelease.BuildCallCount()).To(Equal(1)) 54 55 dev, final, parallel := readRelease.BuildArgsForCall(0) 56 Expect(dev).To(Equal(devIndicies)) 57 Expect(final).To(Equal(finalIndicies)) 58 Expect(parallel).To(Equal(3)) 59 }) 60 61 It("returns error if read fails", func() { 62 innerReader.ReadReturns(nil, errors.New("fake-err")) 63 64 _, err := reader.Read("/release.tgz") 65 Expect(err).To(Equal(errors.New("fake-err"))) 66 }) 67 68 It("returns error if building fails", func() { 69 readRelease := &fakerel.FakeRelease{} 70 innerReader.ReadReturns(readRelease, nil) 71 72 readRelease.BuildReturns(errors.New("fake-err")) 73 74 _, err := reader.Read("/release.tgz") 75 Expect(err).To(Equal(errors.New("fake-err"))) 76 }) 77 78 Context("parallel is less than 1", func() { 79 BeforeEach(func() { 80 reader = NewBuiltReader(innerReader, devIndicies, finalIndicies, 0) 81 }) 82 83 It("builds with parallel of 1", func() { 84 readRelease := &fakerel.FakeRelease{} 85 innerReader.ReadReturns(readRelease, nil) 86 87 _, err := reader.Read("/release.tgz") 88 Expect(err).NotTo(HaveOccurred()) 89 90 _, _, parallel := readRelease.BuildArgsForCall(0) 91 Expect(parallel).To(Equal(1)) 92 }) 93 }) 94 }) 95}) 96