mirror of
https://github.com/mudler/luet.git
synced 2025-09-14 14:22:38 +00:00
Add package Revdeps expansion #12
This commit is contained in:
@@ -37,6 +37,7 @@ type Package interface {
|
||||
GetFingerPrint() string
|
||||
Requires([]*DefaultPackage) Package
|
||||
Conflicts([]*DefaultPackage) Package
|
||||
Revdeps(world *[]Package) []Package
|
||||
|
||||
GetRequires() []*DefaultPackage
|
||||
GetConflicts() []*DefaultPackage
|
||||
@@ -244,6 +245,23 @@ func (p *DefaultPackage) Expand(world *[]Package) ([]Package, error) {
|
||||
return versionsInWorld, nil
|
||||
}
|
||||
|
||||
func (p *DefaultPackage) Revdeps(world *[]Package) []Package {
|
||||
var versionsInWorld []Package
|
||||
for _, w := range *world {
|
||||
if w.GetFingerPrint() == p.GetFingerPrint() {
|
||||
continue
|
||||
}
|
||||
for _, r := range w.GetRequires() {
|
||||
if r.GetFingerPrint() == p.GetFingerPrint() {
|
||||
versionsInWorld = append(versionsInWorld, w)
|
||||
versionsInWorld = append(versionsInWorld, w.Revdeps(world)...)
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return versionsInWorld
|
||||
}
|
||||
|
||||
func DecodePackage(ID string) (Package, error) {
|
||||
return NewInMemoryDatabase(true).GetPackage(ID)
|
||||
}
|
||||
|
@@ -38,6 +38,35 @@ var _ = Describe("Package", func() {
|
||||
})
|
||||
})
|
||||
|
||||
Context("revdeps", func() {
|
||||
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||
b := NewPackage("B", "1.0", []*DefaultPackage{a}, []*DefaultPackage{})
|
||||
c := NewPackage("C", "1.1", []*DefaultPackage{b}, []*DefaultPackage{})
|
||||
d := NewPackage("D", "0.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||
It("Computes correctly", func() {
|
||||
lst := a.Revdeps(&[]Package{a, b, c, d})
|
||||
Expect(lst).To(ContainElement(b))
|
||||
Expect(lst).To(ContainElement(c))
|
||||
Expect(len(lst)).To(Equal(2))
|
||||
})
|
||||
})
|
||||
|
||||
Context("revdeps", func() {
|
||||
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||
b := NewPackage("B", "1.0", []*DefaultPackage{a}, []*DefaultPackage{})
|
||||
c := NewPackage("C", "1.1", []*DefaultPackage{b}, []*DefaultPackage{})
|
||||
d := NewPackage("D", "0.1", []*DefaultPackage{c}, []*DefaultPackage{})
|
||||
e := NewPackage("D", "0.1", []*DefaultPackage{c}, []*DefaultPackage{})
|
||||
|
||||
It("Computes correctly", func() {
|
||||
lst := b.Revdeps(&[]Package{a, b, c, d, e})
|
||||
Expect(lst).To(ContainElement(c))
|
||||
Expect(lst).To(ContainElement(d))
|
||||
Expect(lst).To(ContainElement(e))
|
||||
Expect(len(lst)).To(Equal(3))
|
||||
})
|
||||
})
|
||||
|
||||
Context("RequiresContains", func() {
|
||||
a := NewPackage("A", ">=1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||
a1 := NewPackage("A", "1.0", []*DefaultPackage{a}, []*DefaultPackage{})
|
||||
|
Reference in New Issue
Block a user