示例#1
0
					})

					Context("when the layer is retained", func() {
						JustBeforeEach(func() {
							retainer.Retain(lagertest.NewTestLogger(""), layercake.DockerImageID("child"))
						})

						It("should not remove the layer", func() {
							Expect(gc.GC(logger, fakeCake)).To(Succeed())
							Expect(fakeCake.RemoveCallCount()).To(Equal(0))
						})
					})

					Context("when removing fails", func() {
						It("returns an error", func() {
							fakeCake.RemoveReturns(errors.New("cake failure"))
							Expect(gc.GC(logger, fakeCake)).To(MatchError("cake failure"))
						})
					})
				})

				Context("when the layer has a parent", func() {
					BeforeEach(func() {
						child2parent[layercake.DockerImageID("child")] = layercake.DockerImageID("parent")
					})

					Context("and the parent has no other children", func() {
						It("removes the layer, and its parent", func() {
							Expect(gc.GC(logger, fakeCake)).To(Succeed())

							Expect(fakeCake.RemoveCallCount()).To(Equal(2))
示例#2
0
				testImage := &image.Image{Parent: "this-parent"}
				cake.GetReturns(testImage, nil)

				img, err := aufsCake.Get(childID)
				Expect(cake.GetCallCount()).To(Equal(1))
				Expect(cake.GetArgsForCall(0)).To(Equal(childID))
				Expect(err).To(BeNil())
				Expect(img).To(Equal(testImage))
			})
		})
	})

	Describe("Remove", func() {
		Context("when the image ID is not namespaced", func() {
			It("should return the error when cake fails", func() {
				cake.RemoveReturns(testError)
				Expect(aufsCake.Remove(childID)).To(Equal(testError))
			})

			It("should delegate to the cake", func() {
				Expect(aufsCake.Remove(childID)).To(Succeed())
				Expect(cake.RemoveCallCount()).To(Equal(1))
				Expect(cake.RemoveArgsForCall(0)).To(Equal(childID))
			})
		})

		Context("when the image ID is namespaced", func() {
			var (
				parentDir               string
				namespacedChildDir      string
				otherNamespacedChildDir string