From cd73d950ccd41156c6db2a4dabaaf3a29ee3ca9c Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Thu, 14 Nov 2019 20:28:21 +0100 Subject: [PATCH] Add fixture and test for includes and layered packages --- pkg/compiler/compiler_test.go | 73 +++++++++++++++++++ tests/fixtures/include/build.yaml | 11 +++ tests/fixtures/include/definition.yaml | 3 + tests/fixtures/layered/layer/base/build.yaml | 2 + .../layered/layer/base/definition.yaml | 3 + tests/fixtures/layered/layer/extra/build.yaml | 10 +++ .../layered/layer/extra/definition.yaml | 3 + .../fixtures/layered/pkgs-checker/build.yaml | 12 +++ .../layered/pkgs-checker/definition.yaml | 3 + 9 files changed, 120 insertions(+) create mode 100644 tests/fixtures/include/build.yaml create mode 100644 tests/fixtures/include/definition.yaml create mode 100644 tests/fixtures/layered/layer/base/build.yaml create mode 100644 tests/fixtures/layered/layer/base/definition.yaml create mode 100644 tests/fixtures/layered/layer/extra/build.yaml create mode 100644 tests/fixtures/layered/layer/extra/definition.yaml create mode 100644 tests/fixtures/layered/pkgs-checker/build.yaml create mode 100644 tests/fixtures/layered/pkgs-checker/definition.yaml diff --git a/pkg/compiler/compiler_test.go b/pkg/compiler/compiler_test.go index 44027442..3343fbbf 100644 --- a/pkg/compiler/compiler_test.go +++ b/pkg/compiler/compiler_test.go @@ -203,5 +203,78 @@ var _ = Describe("Compiler", func() { Expect(helpers.Exists(spec.Rel("etc/hosts"))).To(BeTrue()) Expect(helpers.Exists(spec.Rel("test1"))).To(BeTrue()) }) + + It("Compiles and includes ony wanted files", func() { + generalRecipe := tree.NewCompilerRecipe() + tmpdir, err := ioutil.TempDir("", "package") + Expect(err).ToNot(HaveOccurred()) + defer os.RemoveAll(tmpdir) // clean up + + err = generalRecipe.Load("../../tests/fixtures/include") + 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(1)) + + compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.Tree()) + spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "b", Category: "test", Version: "1.0"}) + Expect(err).ToNot(HaveOccurred()) + + // err = generalRecipe.Tree().ResolveDeps(3) + // Expect(err).ToNot(HaveOccurred()) + + spec.SetOutputPath(tmpdir) + + artifacts, errs := compiler.CompileParallel(1, false, []CompilationSpec{spec}) + Expect(errs).To(BeNil()) + Expect(len(artifacts)).To(Equal(1)) + + for _, artifact := range artifacts { + Expect(helpers.Exists(artifact.GetPath())).To(BeTrue()) + Expect(helpers.Untar(artifact.GetPath(), tmpdir, false)).ToNot(HaveOccurred()) + } + Expect(helpers.Exists(spec.Rel("test5"))).To(BeTrue()) + Expect(helpers.Exists(spec.Rel("marvin"))).To(BeTrue()) + Expect(helpers.Exists(spec.Rel("test6"))).ToNot(BeTrue()) + }) + + It("Compiles a more complex tree", func() { + generalRecipe := tree.NewCompilerRecipe() + tmpdir, err := ioutil.TempDir("", "package") + Expect(err).ToNot(HaveOccurred()) + defer os.RemoveAll(tmpdir) // clean up + + err = generalRecipe.Load("../../tests/fixtures/layered") + 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(3)) + + compiler := NewLuetCompiler(sd.NewSimpleDockerBackend(), generalRecipe.Tree()) + spec, err := compiler.FromPackage(&pkg.DefaultPackage{Name: "pkgs-checker", Category: "package", Version: "9999"}) + Expect(err).ToNot(HaveOccurred()) + + // err = generalRecipe.Tree().ResolveDeps(3) + // Expect(err).ToNot(HaveOccurred()) + + spec.SetOutputPath(tmpdir) + + artifacts, errs := compiler.CompileParallel(1, false, []CompilationSpec{spec}) + Expect(errs).To(BeNil()) + Expect(len(artifacts)).To(Equal(1)) + + for _, artifact := range artifacts { + Expect(helpers.Exists(artifact.GetPath())).To(BeTrue()) + Expect(helpers.Untar(artifact.GetPath(), tmpdir, false)).ToNot(HaveOccurred()) + } + Expect(helpers.Untar(spec.Rel("extra-layer-0.1.package.tar"), tmpdir, false)).ToNot(HaveOccurred()) + + Expect(helpers.Exists(spec.Rel("extra-layer"))).To(BeTrue()) + + Expect(helpers.Exists(spec.Rel("usr/bin/pkgs-checker"))).To(BeTrue()) + Expect(helpers.Exists(spec.Rel("base-layer-0.1.package.tar"))).To(BeTrue()) + Expect(helpers.Exists(spec.Rel("extra-layer-0.1.package.tar"))).To(BeTrue()) + }) + }) }) diff --git a/tests/fixtures/include/build.yaml b/tests/fixtures/include/build.yaml new file mode 100644 index 00000000..db014b3e --- /dev/null +++ b/tests/fixtures/include/build.yaml @@ -0,0 +1,11 @@ +image: "alpine" +prelude: + - echo foo > /test + - echo bar > /test2 +steps: + - echo artifact5 > /test5 + - echo artifact6 > /test6 + - echo artifact43 > /marvin +includes: +- /test5 +- mar.* diff --git a/tests/fixtures/include/definition.yaml b/tests/fixtures/include/definition.yaml new file mode 100644 index 00000000..b02a44e8 --- /dev/null +++ b/tests/fixtures/include/definition.yaml @@ -0,0 +1,3 @@ +category: "test" +name: "b" +version: "1.0" diff --git a/tests/fixtures/layered/layer/base/build.yaml b/tests/fixtures/layered/layer/base/build.yaml new file mode 100644 index 00000000..f438c59a --- /dev/null +++ b/tests/fixtures/layered/layer/base/build.yaml @@ -0,0 +1,2 @@ +image: "golang:alpine" +unpack: true diff --git a/tests/fixtures/layered/layer/base/definition.yaml b/tests/fixtures/layered/layer/base/definition.yaml new file mode 100644 index 00000000..0a3a2905 --- /dev/null +++ b/tests/fixtures/layered/layer/base/definition.yaml @@ -0,0 +1,3 @@ +category: "layer" +name: "base" +version: "0.1" diff --git a/tests/fixtures/layered/layer/extra/build.yaml b/tests/fixtures/layered/layer/extra/build.yaml new file mode 100644 index 00000000..98734b8b --- /dev/null +++ b/tests/fixtures/layered/layer/extra/build.yaml @@ -0,0 +1,10 @@ +requires: + - category: "layer" + name: "base" + version: "0.1" +prelude: +- apk update +- apk add git +- rm -rf /go/pkg/mod +steps: +- echo test > /extra-layer diff --git a/tests/fixtures/layered/layer/extra/definition.yaml b/tests/fixtures/layered/layer/extra/definition.yaml new file mode 100644 index 00000000..366eeb17 --- /dev/null +++ b/tests/fixtures/layered/layer/extra/definition.yaml @@ -0,0 +1,3 @@ +category: "layer" +name: "extra" +version: "0.1" diff --git a/tests/fixtures/layered/pkgs-checker/build.yaml b/tests/fixtures/layered/pkgs-checker/build.yaml new file mode 100644 index 00000000..166311f1 --- /dev/null +++ b/tests/fixtures/layered/pkgs-checker/build.yaml @@ -0,0 +1,12 @@ +requires: + - category: "layer" + name: "extra" + version: "0.1" +prelude: +- apk add git +- mkdir -p /go/src/github.com/Sabayon/ +- git clone https://github.com/Sabayon/pkgs-checker /go/src/github.com/Sabayon/pkgs-checker +steps: +- cd /go/src/github.com/Sabayon/pkgs-checker && go build -o /usr/bin/pkgs-checker && chmod +x /usr/bin/pkgs-checker +includes: +- pkgs-checker diff --git a/tests/fixtures/layered/pkgs-checker/definition.yaml b/tests/fixtures/layered/pkgs-checker/definition.yaml new file mode 100644 index 00000000..ea712d9a --- /dev/null +++ b/tests/fixtures/layered/pkgs-checker/definition.yaml @@ -0,0 +1,3 @@ +category: "package" +name: "pkgs-checker" +version: "9999"