diff --git a/pkg/solver/solver.go b/pkg/solver/solver.go index 65c5f812..1943e01f 100644 --- a/pkg/solver/solver.go +++ b/pkg/solver/solver.go @@ -266,7 +266,7 @@ func (s *Solver) Conflicts(pack pkg.Package, lsp pkg.Packages) (bool, error) { if revdepsErr == nil { revdepsErr = errors.New("") } - revdepsErr = errors.New(fmt.Sprintf("%s\n%s", revdepsErr.Error(), r.HumanReadableString())) + revdepsErr = fmt.Errorf("%s\n%s", revdepsErr.Error(), r.HumanReadableString()) } return len(revdeps) != 0, revdepsErr @@ -278,7 +278,6 @@ func (s *Solver) ConflictsWith(pack pkg.Package, lsp pkg.Packages) (bool, error) p, err := s.DefinitionDatabase.FindPackage(pack) if err != nil { p = pack //Relax search, otherwise we cannot compute solutions for packages not in definitions - // return false, errors.Wrap(err, "Package not found in definition db") } diff --git a/pkg/solver/solver_test.go b/pkg/solver/solver_test.go index 4bcc7c58..ab9005b1 100644 --- a/pkg/solver/solver_test.go +++ b/pkg/solver/solver_test.go @@ -753,6 +753,29 @@ var _ = Describe("Solver", func() { }) + It("Fails to uninstall if a package is required", func() { + D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{}) + B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{}) + C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{}) + A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{}) + Z := pkg.NewPackage("Z", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{}) + F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{Z}, []*pkg.DefaultPackage{}) + + for _, p := range []pkg.Package{A, B, C, D, Z, F} { + _, err := dbDefinitions.CreatePackage(p) + Expect(err).ToNot(HaveOccurred()) + } + + for _, p := range []pkg.Package{A, B, C, D, Z, F} { + _, err := dbInstalled.CreatePackage(p) + Expect(err).ToNot(HaveOccurred()) + } + + solution, err := s.Uninstall(true, false, B) + Expect(err).To(HaveOccurred()) + Expect(len(solution)).To(Equal(0)) + }) + It("UninstallUniverse simple package correctly", func() { C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})