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"