github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/atc/exec/on_error_test.go (about) 1 package exec_test 2 3 import ( 4 "context" 5 "errors" 6 7 "github.com/pf-qiu/concourse/v6/atc/exec" 8 "github.com/pf-qiu/concourse/v6/atc/exec/build" 9 "github.com/pf-qiu/concourse/v6/atc/exec/execfakes" 10 "github.com/hashicorp/go-multierror" 11 . "github.com/onsi/ginkgo" 12 . "github.com/onsi/gomega" 13 ) 14 15 var _ = Describe("On Error Step", func() { 16 var ( 17 ctx context.Context 18 cancel func() 19 20 step *execfakes.FakeStep 21 hook *execfakes.FakeStep 22 23 repo *build.Repository 24 state *execfakes.FakeRunState 25 26 onErrorStep exec.Step 27 28 stepOk bool 29 stepErr error 30 31 disaster error 32 ) 33 34 BeforeEach(func() { 35 ctx, cancel = context.WithCancel(context.Background()) 36 37 step = &execfakes.FakeStep{} 38 hook = &execfakes.FakeStep{} 39 40 repo = build.NewRepository() 41 state = new(execfakes.FakeRunState) 42 state.ArtifactRepositoryReturns(repo) 43 44 onErrorStep = exec.OnError(step, hook) 45 46 stepErr = nil 47 48 disaster = multierror.Append(disaster, errors.New("disaster")) 49 }) 50 51 AfterEach(func() { 52 cancel() 53 }) 54 55 JustBeforeEach(func() { 56 stepOk, stepErr = onErrorStep.Run(ctx, state) 57 }) 58 59 Context("when the step errors", func() { 60 BeforeEach(func() { 61 step.RunReturns(false, disaster) 62 }) 63 64 It("runs the error hook", func() { 65 Expect(stepErr).To(Equal(disaster)) 66 Expect(hook.RunCallCount()).To(Equal(1)) 67 Expect(step.RunCallCount()).To(Equal(1)) 68 }) 69 }) 70 71 Context("when the step succeeds", func() { 72 BeforeEach(func() { 73 step.RunReturns(true, nil) 74 }) 75 76 It("is successful", func() { 77 Expect(stepOk).To(BeTrue()) 78 }) 79 80 It("does not run the error hook", func() { 81 Expect(hook.RunCallCount()).To(Equal(0)) 82 }) 83 }) 84 85 Context("when the step fails", func() { 86 BeforeEach(func() { 87 step.RunReturns(false, nil) 88 }) 89 90 It("is not successful", func() { 91 Expect(stepOk).ToNot(BeTrue()) 92 }) 93 94 It("does not run the error hook", func() { 95 Expect(step.RunCallCount()).To(Equal(1)) 96 Expect(hook.RunCallCount()).To(Equal(0)) 97 }) 98 }) 99 })