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))