mirror of
https://github.com/mudler/luet.git
synced 2025-08-10 19:52:31 +00:00
Return provided if selector isn't a range in boltdb
This commit is contained in:
parent
720441be4c
commit
39c8895f80
@ -362,10 +362,22 @@ func (db *BoltDatabase) FindPackageCandidate(p Package) (Package, error) {
|
|||||||
// FindPackages return the list of the packages beloging to cat/name (any versions in requested range)
|
// FindPackages return the list of the packages beloging to cat/name (any versions in requested range)
|
||||||
// FIXME: Optimize, see inmemorydb
|
// FIXME: Optimize, see inmemorydb
|
||||||
func (db *BoltDatabase) FindPackages(p Package) (Packages, error) {
|
func (db *BoltDatabase) FindPackages(p Package) (Packages, error) {
|
||||||
|
if !p.IsSelector() {
|
||||||
|
pack, err := db.FindPackage(p)
|
||||||
|
if err != nil {
|
||||||
|
return []Package{}, err
|
||||||
|
}
|
||||||
|
return []Package{pack}, nil
|
||||||
|
}
|
||||||
|
|
||||||
// Provides: Treat as the replaced package here
|
// Provides: Treat as the replaced package here
|
||||||
if provided, err := db.getProvide(p); err == nil {
|
if provided, err := db.getProvide(p); err == nil {
|
||||||
p = provided
|
p = provided
|
||||||
|
if !provided.IsSelector() {
|
||||||
|
return Packages{provided}, nil
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
var versionsInWorld []Package
|
var versionsInWorld []Package
|
||||||
for _, w := range db.World() {
|
for _, w := range db.World() {
|
||||||
if w.GetName() != p.GetName() || w.GetCategory() != p.GetCategory() {
|
if w.GetName() != p.GetName() || w.GetCategory() != p.GetCategory() {
|
||||||
|
@ -81,7 +81,6 @@ var _ = Describe("BoltDB Database", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Find best package candidate", func() {
|
It("Find best package candidate", func() {
|
||||||
db := NewInMemoryDatabase(false)
|
|
||||||
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
@ -102,7 +101,6 @@ var _ = Describe("BoltDB Database", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Find specific package candidate", func() {
|
It("Find specific package candidate", func() {
|
||||||
db := NewInMemoryDatabase(false)
|
|
||||||
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
@ -123,7 +121,6 @@ var _ = Describe("BoltDB Database", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Provides replaces definitions", func() {
|
It("Provides replaces definitions", func() {
|
||||||
db := NewInMemoryDatabase(false)
|
|
||||||
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
@ -147,6 +144,144 @@ var _ = Describe("BoltDB Database", func() {
|
|||||||
Expect(pack).To(Equal(a3))
|
Expect(pack).To(Equal(a3))
|
||||||
})
|
})
|
||||||
|
|
||||||
|
Context("Provides", func() {
|
||||||
|
|
||||||
|
It("replaces definitions", func() {
|
||||||
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
a3.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: "1.0"}})
|
||||||
|
Expect(a3.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: "1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(a)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(a1)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(a3)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
pack, err := db.FindPackage(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(pack).To(Equal(a3))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("replaces definitions", func() {
|
||||||
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
a3 := NewPackage("A", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
a3.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: "1.0"}})
|
||||||
|
Expect(a3.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: "1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(a)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(a1)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(a3)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
packs, err := db.FindPackages(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(packs).To(ContainElement(a3))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("replaces definitions", func() {
|
||||||
|
a := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
z := NewPackage("Z", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
z.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}})
|
||||||
|
Expect(z.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(a)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(a1)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(z)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
packs, err := db.FindPackages(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(packs).To(ContainElement(z))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("replaces definitions of unexisting packages", func() {
|
||||||
|
a1 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
z := NewPackage("Z", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
z.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}})
|
||||||
|
Expect(z.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(a1)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
_, err = db.CreatePackage(z)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
packs, err := db.FindPackages(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(packs).To(ContainElement(z))
|
||||||
|
})
|
||||||
|
|
||||||
|
It("replaces definitions of a required package", func() {
|
||||||
|
|
||||||
|
c := NewPackage("C", "1.1", []*DefaultPackage{{Name: "A", Category: "", Version: ">=0"}}, []*DefaultPackage{})
|
||||||
|
z := NewPackage("Z", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
z.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}})
|
||||||
|
Expect(z.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(z)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
_, err = db.CreatePackage(c)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
packs, err := db.FindPackages(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(packs).To(ContainElement(z))
|
||||||
|
})
|
||||||
|
|
||||||
|
When("Searching with selectors", func() {
|
||||||
|
It("replaces definitions of a required package", func() {
|
||||||
|
|
||||||
|
c := NewPackage("C", "1.1", []*DefaultPackage{{Name: "A", Category: "", Version: ">=0"}}, []*DefaultPackage{})
|
||||||
|
z := NewPackage("Z", "1.3", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
z.SetProvides([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}})
|
||||||
|
Expect(z.GetProvides()).To(Equal([]*DefaultPackage{{Name: "A", Category: "", Version: ">=1.0"}}))
|
||||||
|
|
||||||
|
_, err := db.CreatePackage(z)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
_, err = db.CreatePackage(c)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
s := NewPackage("A", ">=1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
|
|
||||||
|
packs, err := db.FindPackages(s)
|
||||||
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
Expect(packs).To(ContainElement(z))
|
||||||
|
})
|
||||||
|
})
|
||||||
|
|
||||||
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
|
||||||
})
|
})
|
||||||
|
Loading…
Reference in New Issue
Block a user