spec := gardener.DesiredContainerSpec{Handle: "foo"} Expect(czr.Create(spec)).To(Succeed()) Expect(fakeRepo.CreateCallCount()).To(Equal(1)) Expect(fakeRepo.CreateArgsForCall(0)).To(Equal(spec)) }) Context("when the container exists", func() { It("delegates running to the repo", func() { anActualContainer := new(fakes.FakeActualContainer) fakeRepo.LookupReturns(anActualContainer, nil) stdout := gbytes.NewBuffer() czr.Run( "fishfinger", garden.ProcessSpec{Path: "foo"}, garden.ProcessIO{Stdout: stdout}, ) Expect(fakeRepo.LookupArgsForCall(0)).To(Equal("fishfinger")) Expect(anActualContainer.RunCallCount()).To(Equal(1)) spec, io := anActualContainer.RunArgsForCall(0) Expect(spec.Path).To(Equal("foo")) Expect(io.Stdout).To(Equal(stdout)) }) }) Context("when the container does not exist", func() { PIt("returns an error", func() { })
}) Context("when the start check fails", func() { It("returns the underlying error", func() { fakeStartChecker.CheckStub = func(_ lager.Logger, stdout io.Reader) error { return errors.New("I died") } Expect(containerizer.Create(logger, gardener.DesiredContainerSpec{Handle: "the-handle"})).To(MatchError("I died")) }) }) }) Describe("Run", func() { It("should ask the execer to exec a process in the container", func() { containerizer.Run(logger, "some-handle", garden.ProcessSpec{Path: "hello"}, garden.ProcessIO{}) Expect(fakeContainerRunner.ExecCallCount()).To(Equal(1)) _, path, id, spec, _ := fakeContainerRunner.ExecArgsForCall(0) Expect(path).To(Equal("/path/to/some-handle")) Expect(id).To(Equal("some-handle")) Expect(spec.Path).To(Equal("hello")) }) Context("when looking up the container fails", func() { It("returns an error", func() { fakeDepot.LookupReturns("", errors.New("blam")) _, err := containerizer.Run(logger, "some-handle", garden.ProcessSpec{}, garden.ProcessIO{}) Expect(err).To(HaveOccurred()) })