github.com/pf-qiu/concourse/v6@v6.7.3-0.20201207032516-1f455d73275f/cmd/logging_runner_test.go (about) 1 package cmd_test 2 3 import ( 4 "errors" 5 "os" 6 7 "code.cloudfoundry.org/lager/lagertest" 8 . "github.com/pf-qiu/concourse/v6/cmd" 9 . "github.com/onsi/ginkgo" 10 . "github.com/onsi/gomega" 11 "github.com/tedsuo/ifrit" 12 ifritFakes "github.com/tedsuo/ifrit/fake_runner" 13 ) 14 15 var _ = Describe("LoggingRunner", func() { 16 17 var ( 18 runner ifrit.Runner 19 fakeRunner *ifritFakes.FakeRunner 20 logger *lagertest.TestLogger 21 fakeRunnerBlocker chan interface{} 22 fakeRunnerRunStubReturn error 23 runnerError chan error 24 signals <-chan os.Signal 25 ready chan<- struct{} 26 ) 27 28 BeforeEach(func() { 29 runnerError = make(chan error, 1) 30 31 fakeRunnerBlocker = make(chan interface{}) 32 signals = make(chan os.Signal) 33 ready = make(chan struct{}) 34 35 fakeRunner = new(ifritFakes.FakeRunner) 36 fakeRunner.RunStub = func(signals <-chan os.Signal, ready chan<- struct{}) error { 37 <-fakeRunnerBlocker 38 return fakeRunnerRunStubReturn 39 } 40 logger = lagertest.NewTestLogger("foo") 41 runner = NewLoggingRunner(logger, fakeRunner) 42 43 fakeRunnerRunStubReturn = errors.New("some-error") 44 close(fakeRunnerBlocker) 45 }) 46 47 JustBeforeEach(func() { 48 go func() { 49 runnerError <- runner.Run(signals, ready) 50 }() 51 }) 52 53 Describe("#Run", func() { 54 It("logs the member name", func() { 55 <-runnerError 56 Expect(logger.LogMessages()).To(ContainElement("foo.logging-runner-exited")) 57 }) 58 59 It("returns the child's return value", func() { 60 err := <-runnerError 61 Expect(err).To(Equal(fakeRunnerRunStubReturn)) 62 }) 63 64 It("invokes the child's Run with signals and ready", func() { 65 <-runnerError 66 Expect(fakeRunner.RunCallCount()).To(Equal(1)) 67 sig, read := fakeRunner.RunArgsForCall(0) 68 69 Expect(sig).To(Equal(signals)) 70 Expect(read).To(Equal(ready)) 71 }) 72 }) 73 })