From 40fc948c6ed340c5c342cee982f15b93150cde56 Mon Sep 17 00:00:00 2001 From: Ettore Di Giacinto Date: Mon, 11 Jan 2021 23:35:18 +0100 Subject: [PATCH] Stabilize tests after changes With BuildWorld() we get more results back (now we return the whole model, including the false assertions). Besides, now solving with BuildWorld() detects an invalid case: when we supply a provided, the definitionDB shouldn't explictly supply also the package that has to be provided. This would cause to 'shadow' packages between repositories. The test was invalid before, and shouldn't have contained A1. Moved the test to Pending to inspect it further in subsequent dev iterations --- pkg/solver/parallel_test.go | 2 +- pkg/solver/resolver_test.go | 7 +++---- pkg/solver/solver.go | 1 - pkg/solver/solver_test.go | 41 +++++++++++++++++++++++++++++++------ 4 files changed, 39 insertions(+), 12 deletions(-) diff --git a/pkg/solver/parallel_test.go b/pkg/solver/parallel_test.go index c7ecdaa9..556fa683 100644 --- a/pkg/solver/parallel_test.go +++ b/pkg/solver/parallel_test.go @@ -111,7 +111,7 @@ var _ = Describe("Parallel", func() { Expect(solution).ToNot(ContainElement(PackageAssert{Package: B, Value: true})) Expect(solution).ToNot(ContainElement(PackageAssert{Package: D, Value: true})) - Expect(len(solution)).To(Equal(3)) + Expect(len(solution)).To(Equal(5)) }) It("Solves correctly if the selected package to install has requirements", func() { diff --git a/pkg/solver/resolver_test.go b/pkg/solver/resolver_test.go index 49c12309..be298b70 100644 --- a/pkg/solver/resolver_test.go +++ b/pkg/solver/resolver_test.go @@ -79,7 +79,7 @@ var _ = Describe("Resolver", func() { solution, err := s.Install([]pkg.Package{D, F}) // D and F should go as they have no deps. A/E should be filtered by QLearn Expect(err).ToNot(HaveOccurred()) - Expect(len(solution)).To(Equal(3)) + Expect(len(solution)).To(Equal(6)) Expect(solution).ToNot(ContainElement(PackageAssert{Package: A, Value: true})) Expect(solution).ToNot(ContainElement(PackageAssert{Package: B, Value: true})) @@ -117,7 +117,7 @@ var _ = Describe("Resolver", func() { Expect(solution).To(ContainElement(PackageAssert{Package: C, Value: true})) Expect(solution).To(ContainElement(PackageAssert{Package: D, Value: true})) - Expect(len(solution)).To(Equal(2)) + Expect(len(solution)).To(Equal(4)) }) It("will find out that we can install D and F by ignoring E and A", func() { @@ -148,8 +148,7 @@ var _ = Describe("Resolver", func() { Expect(solution).To(ContainElement(PackageAssert{Package: D, Value: true})) Expect(solution).ToNot(ContainElement(PackageAssert{Package: E, Value: true})) Expect(solution).To(ContainElement(PackageAssert{Package: F, Value: true})) - Expect(len(solution)).To(Equal(3)) - + Expect(len(solution)).To(Equal(6)) }) }) diff --git a/pkg/solver/solver.go b/pkg/solver/solver.go index 32cf5fdf..e078ddf2 100644 --- a/pkg/solver/solver.go +++ b/pkg/solver/solver.go @@ -167,7 +167,6 @@ func (s *Solver) BuildWorld(includeInstalled bool) (bf.Formula, error) { } for _, p := range s.World() { - solvable, err := p.BuildFormula(s.DefinitionDatabase, s.SolverDatabase) if err != nil { return nil, err diff --git a/pkg/solver/solver_test.go b/pkg/solver/solver_test.go index c4a8603b..96ee2bc4 100644 --- a/pkg/solver/solver_test.go +++ b/pkg/solver/solver_test.go @@ -111,7 +111,7 @@ var _ = Describe("Solver", func() { // Expect(solution).To(ContainElement(PackageAssert{Package: B, Value: false})) //Expect(solution).To(ContainElement(PackageAssert{Package: D, Value: false})) - Expect(len(solution)).To(Equal(3)) + Expect(len(solution)).To(Equal(5)) }) It("Solves correctly if the selected package to install has requirements", func() { @@ -1283,7 +1283,37 @@ var _ = Describe("Solver", func() { }) It("upgrades correctly with provides", func() { - B.SetProvides([]*pkg.DefaultPackage{&pkg.DefaultPackage{Name: "a", Version: ">=0", Category: "test"}, &pkg.DefaultPackage{Name: "c", Version: ">=0", Category: "test"}}) + B.SetProvides([]*pkg.DefaultPackage{ + &pkg.DefaultPackage{Name: "a", Version: ">=0", Category: "test"}, + &pkg.DefaultPackage{Name: "c", Version: ">=0", Category: "test"}, + }) + + for _, p := range []pkg.Package{B} { + _, err := dbDefinitions.CreatePackage(p) + Expect(err).ToNot(HaveOccurred()) + } + + for _, p := range []pkg.Package{A, C} { + _, err := dbInstalled.CreatePackage(p) + Expect(err).ToNot(HaveOccurred()) + } + uninstall, solution, err := s.Upgrade(true, true) + Expect(err).ToNot(HaveOccurred()) + + Expect(len(uninstall)).To(Equal(2)) + + Expect(uninstall).To(ContainElement(C)) + Expect(uninstall).To(ContainElement(A)) + + Expect(solution).To(ContainElement(PackageAssert{Package: B, Value: true})) + Expect(len(solution)).To(Equal(1)) + }) + + PIt("upgrades correctly with provides, also if definitiondb contains both a provide, and the package to be provided", func() { + B.SetProvides([]*pkg.DefaultPackage{ + &pkg.DefaultPackage{Name: "a", Version: ">=0", Category: "test"}, + &pkg.DefaultPackage{Name: "c", Version: ">=0", Category: "test"}, + }) for _, p := range []pkg.Package{A1, B} { _, err := dbDefinitions.CreatePackage(p) @@ -1298,10 +1328,9 @@ var _ = Describe("Solver", func() { Expect(err).ToNot(HaveOccurred()) Expect(len(uninstall)).To(Equal(2)) - Expect(uninstall[1].GetName()).To(Equal("c")) - Expect(uninstall[1].GetVersion()).To(Equal("1.5")) - Expect(uninstall[0].GetName()).To(Equal("a")) - Expect(uninstall[0].GetVersion()).To(Equal("1.1")) + + Expect(uninstall).To(ContainElement(C)) + Expect(uninstall).To(ContainElement(A)) Expect(solution).To(ContainElement(PackageAssert{Package: B, Value: true})) Expect(len(solution)).To(Equal(1))