From 8ed2badefcc0fba4beadc729b4d7de57e273bb83 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 17 Nov 2019 15:46:30 +0100 Subject: [PATCH] Add test for shared layer unpack --- pkg/compiler/compiler_test.go | 34 +++++++++++++++++++ tests/fixtures/packagelayers/build/build.yaml | 3 ++ .../packagelayers/build/definition.yaml | 3 ++ .../fixtures/packagelayers/runtime/build.yaml | 8 +++++ .../packagelayers/runtime/definition.yaml | 3 ++ 5 files changed, 51 insertions(+) create mode 100644 tests/fixtures/packagelayers/build/build.yaml create mode 100644 tests/fixtures/packagelayers/build/definition.yaml create mode 100644 tests/fixtures/packagelayers/runtime/build.yaml create mode 100644 tests/fixtures/packagelayers/runtime/definition.yaml 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"