From 55214bc6c8586c7be02f770b225685c1e45ffd1d Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Sun, 3 Nov 2019 13:53:41 +0100 Subject: [PATCH] Extend tests for each supported dbtype --- pkg/tree/builder/gentoo/gentoo_test.go | 17 +- pkg/tree/builder/gentoo/simpleparser_test.go | 34 ++-- pkg/tree/recipes_test.go | 171 ++++++++++--------- 3 files changed, 115 insertions(+), 107 deletions(-) diff --git a/pkg/tree/builder/gentoo/gentoo_test.go b/pkg/tree/builder/gentoo/gentoo_test.go index d836f6a6..9271d7c3 100644 --- a/pkg/tree/builder/gentoo/gentoo_test.go +++ b/pkg/tree/builder/gentoo/gentoo_test.go @@ -33,12 +33,17 @@ func (f *FakeParser) ScanEbuild(path string, t pkg.Tree) ([]pkg.Package, error) var _ = Describe("GentooBuilder", func() { Context("Simple test", func() { - It("parses correctly deps", func() { - gb := NewGentooBuilder(&FakeParser{}, 20, InMemory) - tree, err := gb.Generate("../../../../tests/fixtures/overlay") - Expect(err).ToNot(HaveOccurred()) - Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) - }) + for _, dbType := range []MemoryDB{InMemory, BoltDB} { + It("parses correctly deps", func() { + gb := NewGentooBuilder(&FakeParser{}, 20, dbType) + tree, err := gb.Generate("../../../../tests/fixtures/overlay") + defer func() { + Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) + }() + Expect(err).ToNot(HaveOccurred()) + Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) + }) + } }) }) diff --git a/pkg/tree/builder/gentoo/simpleparser_test.go b/pkg/tree/builder/gentoo/simpleparser_test.go index dd6bae66..002d9e80 100644 --- a/pkg/tree/builder/gentoo/simpleparser_test.go +++ b/pkg/tree/builder/gentoo/simpleparser_test.go @@ -25,24 +25,26 @@ import ( var _ = Describe("GentooBuilder", func() { Context("Simple test", func() { - It("parses correctly deps", func() { - gb := NewGentooBuilder(&SimpleEbuildParser{}, 20, InMemory) - tree, err := gb.Generate("../../../../tests/fixtures/overlay") - Expect(err).ToNot(HaveOccurred()) - defer func() { - Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) - }() - - Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) - - for _, pid := range tree.GetPackageSet().GetPackages() { - p, err := tree.GetPackageSet().GetPackage(pid) + for _, dbType := range []MemoryDB{InMemory, BoltDB} { + It("parses correctly deps", func() { + gb := NewGentooBuilder(&SimpleEbuildParser{}, 20, dbType) + tree, err := gb.Generate("../../../../tests/fixtures/overlay") Expect(err).ToNot(HaveOccurred()) - Expect(p.GetName()).To(ContainSubstring("pinentry")) - // Expect(p.GetVersion()).To(ContainSubstring("1.")) - } + defer func() { + Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) + }() - }) + Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) + + for _, pid := range tree.GetPackageSet().GetPackages() { + p, err := tree.GetPackageSet().GetPackage(pid) + Expect(err).ToNot(HaveOccurred()) + Expect(p.GetName()).To(ContainSubstring("pinentry")) + // Expect(p.GetVersion()).To(ContainSubstring("1.")) + } + + }) + } }) }) diff --git a/pkg/tree/recipes_test.go b/pkg/tree/recipes_test.go index c9aa8927..38be8002 100644 --- a/pkg/tree/recipes_test.go +++ b/pkg/tree/recipes_test.go @@ -22,99 +22,100 @@ type FakeParser struct { } var _ = Describe("Recipe", func() { - - Context("Tree generation and storing", func() { - It("parses and writes a tree", func() { - tmpdir, err := ioutil.TempDir("", "tree") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpdir) // clean up - - gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, gentoo.InMemory) - tree, err := gb.Generate("../../tests/fixtures/overlay") - Expect(err).ToNot(HaveOccurred()) - defer func() { - Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) - }() - - Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) - - generalRecipe := NewGeneralRecipe() - generalRecipe.WithTree(tree) - err = generalRecipe.Save(tmpdir) - Expect(err).ToNot(HaveOccurred()) - }) - }) - - Context("Reloading trees", func() { - It("writes and reads back the same tree", func() { - tmpdir, err := ioutil.TempDir("", "tree") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpdir) // clean up - - gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, gentoo.InMemory) - tree, err := gb.Generate("../../tests/fixtures/overlay") - Expect(err).ToNot(HaveOccurred()) - defer func() { - Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) - }() - - Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) - - generalRecipe := NewGeneralRecipe() - generalRecipe.WithTree(tree) - err = generalRecipe.Save(tmpdir) - Expect(err).ToNot(HaveOccurred()) - - generalRecipe.WithTree(nil) - Expect(generalRecipe.Tree()).To(BeNil()) - - err = generalRecipe.Load(tmpdir) - 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(10)) - - for _, pid := range tree.GetPackageSet().GetPackages() { - p, err := tree.GetPackageSet().GetPackage(pid) + for _, dbType := range []gentoo.MemoryDB{gentoo.InMemory, gentoo.BoltDB} { + Context("Tree generation and storing", func() { + It("parses and writes a tree", func() { + tmpdir, err := ioutil.TempDir("", "tree") Expect(err).ToNot(HaveOccurred()) - Expect(p.GetName()).To(ContainSubstring("pinentry")) - } + defer os.RemoveAll(tmpdir) // clean up + + gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, dbType) + tree, err := gb.Generate("../../tests/fixtures/overlay") + Expect(err).ToNot(HaveOccurred()) + defer func() { + Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) + }() + + Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) + + generalRecipe := NewGeneralRecipe() + generalRecipe.WithTree(tree) + err = generalRecipe.Save(tmpdir) + Expect(err).ToNot(HaveOccurred()) + }) }) - }) - Context("Simple solving with the fixture tree", func() { - It("writes and reads back the same tree", func() { - tmpdir, err := ioutil.TempDir("", "tree") - Expect(err).ToNot(HaveOccurred()) - defer os.RemoveAll(tmpdir) // clean up + Context("Reloading trees", func() { + It("writes and reads back the same tree", func() { + tmpdir, err := ioutil.TempDir("", "tree") + Expect(err).ToNot(HaveOccurred()) + defer os.RemoveAll(tmpdir) // clean up - gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, gentoo.InMemory) - tree, err := gb.Generate("../../tests/fixtures/overlay") - Expect(err).ToNot(HaveOccurred()) - defer func() { - Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) - }() + gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, dbType) + tree, err := gb.Generate("../../tests/fixtures/overlay") + Expect(err).ToNot(HaveOccurred()) + defer func() { + Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) + }() - Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) + Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) - pack, err := tree.FindPackage(&pkg.DefaultPackage{Name: "pinentry", Version: "1.0.0-r2", Category: "app-crypt"}) // Note: the definition depends on pinentry-base without an explicit version - Expect(err).ToNot(HaveOccurred()) - world, err := tree.World() - Expect(err).ToNot(HaveOccurred()) + generalRecipe := NewGeneralRecipe() + generalRecipe.WithTree(tree) + err = generalRecipe.Save(tmpdir) + Expect(err).ToNot(HaveOccurred()) - s := solver.NewSolver([]pkg.Package{}, world) - solution, err := s.Install([]pkg.Package{pack}) - Expect(err).ToNot(HaveOccurred()) - Expect(len(solution)).To(Equal(3)) + generalRecipe.WithTree(nil) + Expect(generalRecipe.Tree()).To(BeNil()) - var allSol string - for _, sol := range solution { - allSol = allSol + "\n" + sol.ToString() - } + err = generalRecipe.Load(tmpdir) + Expect(err).ToNot(HaveOccurred()) + Expect(generalRecipe.Tree()).ToNot(BeNil()) // It should be populated back at this point - Expect(allSol).To(ContainSubstring("app-crypt/pinentry-base installed: true")) - Expect(allSol).To(ContainSubstring("app-crypt/pinentry 1.1.0-r2 installed: false")) - Expect(allSol).To(ContainSubstring("app-crypt/pinentry 1.0.0-r2 installed: true")) + Expect(len(generalRecipe.Tree().GetPackageSet().GetPackages())).To(Equal(10)) + + for _, pid := range tree.GetPackageSet().GetPackages() { + p, err := tree.GetPackageSet().GetPackage(pid) + Expect(err).ToNot(HaveOccurred()) + Expect(p.GetName()).To(ContainSubstring("pinentry")) + } + }) }) - }) + + Context("Simple solving with the fixture tree", func() { + It("writes and reads back the same tree", func() { + tmpdir, err := ioutil.TempDir("", "tree") + Expect(err).ToNot(HaveOccurred()) + defer os.RemoveAll(tmpdir) // clean up + + gb := gentoo.NewGentooBuilder(&gentoo.SimpleEbuildParser{}, 20, dbType) + tree, err := gb.Generate("../../tests/fixtures/overlay") + Expect(err).ToNot(HaveOccurred()) + defer func() { + Expect(tree.GetPackageSet().Clean()).ToNot(HaveOccurred()) + }() + + Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10)) + + pack, err := tree.FindPackage(&pkg.DefaultPackage{Name: "pinentry", Version: "1.0.0-r2", Category: "app-crypt"}) // Note: the definition depends on pinentry-base without an explicit version + Expect(err).ToNot(HaveOccurred()) + world, err := tree.World() + Expect(err).ToNot(HaveOccurred()) + + s := solver.NewSolver([]pkg.Package{}, world) + solution, err := s.Install([]pkg.Package{pack}) + Expect(err).ToNot(HaveOccurred()) + Expect(len(solution)).To(Equal(3)) + + var allSol string + for _, sol := range solution { + allSol = allSol + "\n" + sol.ToString() + } + + Expect(allSol).To(ContainSubstring("app-crypt/pinentry-base installed: true")) + Expect(allSol).To(ContainSubstring("app-crypt/pinentry 1.1.0-r2 installed: false")) + Expect(allSol).To(ContainSubstring("app-crypt/pinentry 1.0.0-r2 installed: true")) + }) + }) + } })