Expect(dst).To(Equal("/mount/point/" + layercake.NamespacedID(layercake.DockerImageID("some-image-id"), "jam").GraphID())) Expect(mountpoint).To(Equal("/mount/point/" + layercake.ContainerID("some-id").GraphID())) Expect(envvars).To(Equal( []string{ "env1=env1value", "env2=env2value", }, )) }) Context("unmounting the translation layer", func() { BeforeEach(func() { // ensure umount doesnt happen too quickly fakeNamespacer.NamespaceStub = func(_ lager.Logger, _ string) error { Expect(fakeCake.UnmountCallCount()).To(Equal(0)) return nil } }) It("unmounts the translation layer after performing namespacing", func() { Expect(fakeCake.UnmountCallCount()).Should(Equal(1)) Expect(fakeCake.UnmountArgsForCall(0)).To(Equal(layercake.NamespacedID(layercake.DockerImageID("some-image-id"), "jam"))) }) }) }) Context("and the image has already been translated", func() { BeforeEach(func() { fakeCake.PathStub = func(id layercake.ID) (string, error) { return "/mount/point/" + id.GraphID(), nil
Expect(aufsCake.Create(namespacedChildID, parentID, "")).To(Equal(testError)) }) }) Context("when getting parent's path fails", func() { BeforeEach(func() { cake.PathReturns("", testError) }) It("should return the error", func() { Expect(aufsCake.Create(namespacedChildID, parentID, "")).To(Equal(testError)) }) It("should not unmount the parent", func() { Expect(aufsCake.Create(namespacedChildID, parentID, "")).To(Equal(testError)) Expect(cake.UnmountCallCount()).To(Equal(0)) }) }) Context("when getting parent's path succeeds", func() { var succeedingRunner *fake_command_runner.FakeCommandRunner BeforeEach(func() { succeedingRunner = fake_command_runner.New() succeedingRunner.WhenRunning(fake_command_runner.CommandSpec{}, func(cmd *exec.Cmd) error { return nil }) }) It("should unmount the parentID", func() { aufsCake.Runner = succeedingRunner