diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index 5d2b31de..237d247e 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -436,4 +436,38 @@ var _ = Describe("Compiler", func() { }) }) + + Context("Packages which conents are the container image", func() { + It("Compiles it in parallel", func() { + generalRecipe := tree.NewCompilerRecipe(pkg.NewInMemoryDatabase(false)) + + err := generalRecipe.Load("../../tests/fixtures/packagelayers") + Expect(err).ToNot(HaveOccurred()) + Expect(generalRecipe.Tree()).ToNot(BeNil()) // It should be populated back at this point + + Expect(len(generalRecipe.Tree().GetPackageSet().GetPackages())).To(Equal(2)) + + compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.Tree(), generalRecipe.Tree().GetPackageSet()) + err = compiler.Prepare(1) + Expect(err).ToNot(HaveOccurred()) + + spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "runtime", Category: "layer", Version: "0.1"}) + Expect(err).ToNot(HaveOccurred()) + + Expect(spec.GetPackage().GetPath()).ToNot(Equal("")) + + tmpdir, err := ioutil.TempDir("", "tree") + Expect(err).ToNot(HaveOccurred()) + defer os.RemoveAll(tmpdir) // clean up + + spec.SetOutputPath(tmpdir) + artifacts, errs := compiler.CompileParallel(2, false, NewLuetCompilationspecs(spec)) + Expect(errs).To(BeNil()) + Expect(len(artifacts)).To(Equal(1)) + Expect(len(artifacts[0].GetDependencies())).To(Equal(1)) + Expect(helpers.Untar(spec.Rel("runtime-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) + Expect(helpers.Exists(spec.Rel("bin/sh"))).To(BeTrue()) + Expect(helpers.Exists(spec.Rel("var"))).ToNot(BeTrue()) + }) + }) }) diff --git a/tests/fixtures/packagelayers/build/build.yaml b/tests/fixtures/packagelayers/build/build.yaml new file mode 100644 index 00000000..a50e4f15 --- /dev/null +++ b/tests/fixtures/packagelayers/build/build.yaml @@ -0,0 +1,3 @@ + +unpack: true +image: "alpine" diff --git a/tests/fixtures/packagelayers/build/definition.yaml b/tests/fixtures/packagelayers/build/definition.yaml new file mode 100644 index 00000000..05a852f0 --- /dev/null +++ b/tests/fixtures/packagelayers/build/definition.yaml @@ -0,0 +1,3 @@ +category: "layer" +name: "build" +version: "0.1" diff --git a/tests/fixtures/packagelayers/runtime/build.yaml b/tests/fixtures/packagelayers/runtime/build.yaml new file mode 100644 index 00000000..208f24d7 --- /dev/null +++ b/tests/fixtures/packagelayers/runtime/build.yaml @@ -0,0 +1,8 @@ + +unpack: true +requires: +- category: "layer" + name: "build" + version: ">=0.1" +steps: +- rm -rfv /var diff --git a/tests/fixtures/packagelayers/runtime/definition.yaml b/tests/fixtures/packagelayers/runtime/definition.yaml new file mode 100644 index 00000000..3ab84f53 --- /dev/null +++ b/tests/fixtures/packagelayers/runtime/definition.yaml @@ -0,0 +1,3 @@ +category: "layer" +name: "runtime" +version: "0.1"