mirror of
https://github.com/mudler/luet.git
synced 2025-09-02 07:45:02 +00:00
Adapt tests and fixup races in spinner
Signed-off-by: Ettore Di Giacinto <mudler@gentoo.org>
This commit is contained in:
@@ -102,7 +102,7 @@ var _ = Describe("Compiler", func() {
|
|||||||
spec.SetOutputPath(tmpdir)
|
spec.SetOutputPath(tmpdir)
|
||||||
spec2.SetOutputPath(tmpdir)
|
spec2.SetOutputPath(tmpdir)
|
||||||
artifacts, errs := compiler.CompileParallel(2, false, NewLuetCompilationspecs(spec, spec2))
|
artifacts, errs := compiler.CompileParallel(2, false, NewLuetCompilationspecs(spec, spec2))
|
||||||
Expect(len(errs)).To(Equal(0))
|
Expect(errs).To(BeNil())
|
||||||
for _, artifact := range artifacts {
|
for _, artifact := range artifacts {
|
||||||
Expect(helpers.Exists(artifact.GetPath())).To(BeTrue())
|
Expect(helpers.Exists(artifact.GetPath())).To(BeTrue())
|
||||||
Expect(helpers.Untar(artifact.GetPath(), tmpdir, false)).ToNot(HaveOccurred())
|
Expect(helpers.Untar(artifact.GetPath(), tmpdir, false)).ToNot(HaveOccurred())
|
||||||
|
@@ -3,7 +3,6 @@ package logger
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
"os"
|
"os"
|
||||||
"sync"
|
|
||||||
"time"
|
"time"
|
||||||
|
|
||||||
. "github.com/logrusorgru/aurora"
|
. "github.com/logrusorgru/aurora"
|
||||||
@@ -11,42 +10,30 @@ import (
|
|||||||
"github.com/briandowns/spinner"
|
"github.com/briandowns/spinner"
|
||||||
)
|
)
|
||||||
|
|
||||||
var s *spinner.Spinner
|
var s *spinner.Spinner = spinner.New(spinner.CharSets[22], 100*time.Millisecond)
|
||||||
var m = &sync.Mutex{}
|
|
||||||
var enabled = false
|
|
||||||
|
|
||||||
func Spinner(i int) {
|
func Spinner(i int) {
|
||||||
m.Lock()
|
|
||||||
defer m.Unlock()
|
|
||||||
if i > 43 {
|
if i > 43 {
|
||||||
i = 43
|
i = 43
|
||||||
}
|
}
|
||||||
|
|
||||||
if s == nil {
|
if !s.Active() {
|
||||||
s = spinner.New(spinner.CharSets[i], 100*time.Millisecond) // Build our new spinner
|
// s.UpdateCharSet(spinner.CharSets[i])
|
||||||
}
|
|
||||||
s.UpdateCharSet(spinner.CharSets[i])
|
|
||||||
enabled = true
|
|
||||||
s.Start() // Start the spinner
|
s.Start() // Start the spinner
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
func SpinnerText(suffix, prefix string) {
|
func SpinnerText(suffix, prefix string) {
|
||||||
m.Lock()
|
s.Lock()
|
||||||
defer m.Unlock()
|
defer s.Unlock()
|
||||||
if s == nil {
|
|
||||||
s = spinner.New(spinner.CharSets[22], 100*time.Millisecond) // Build our new spinner
|
|
||||||
}
|
|
||||||
s.Suffix = Bold(Magenta(suffix)).BgBlack().String()
|
s.Suffix = Bold(Magenta(suffix)).BgBlack().String()
|
||||||
s.Prefix = Bold(Cyan(prefix)).String()
|
s.Prefix = Bold(Cyan(prefix)).String()
|
||||||
}
|
}
|
||||||
|
|
||||||
func SpinnerStop() {
|
func SpinnerStop() {
|
||||||
m.Lock()
|
|
||||||
defer m.Unlock()
|
|
||||||
if s != nil {
|
|
||||||
s.Stop()
|
s.Stop()
|
||||||
}
|
|
||||||
enabled = false
|
|
||||||
}
|
}
|
||||||
|
|
||||||
func msg(level string, msg ...interface{}) {
|
func msg(level string, msg ...interface{}) {
|
||||||
@@ -67,17 +54,16 @@ func msg(level string, msg ...interface{}) {
|
|||||||
levelMsg = Bold(Red("💣 " + message + "🔥")).BgBlack().String()
|
levelMsg = Bold(Red("💣 " + message + "🔥")).BgBlack().String()
|
||||||
}
|
}
|
||||||
|
|
||||||
if enabled {
|
//if s.Active() {
|
||||||
SpinnerText(levelMsg, "")
|
// SpinnerText(levelMsg, "")
|
||||||
return
|
// return
|
||||||
}
|
// }
|
||||||
|
|
||||||
cmd := []interface{}{}
|
cmd := []interface{}{}
|
||||||
for _, f := range msg {
|
for _, f := range msg {
|
||||||
cmd = append(cmd, f)
|
cmd = append(cmd, f)
|
||||||
}
|
}
|
||||||
m.Lock()
|
|
||||||
defer m.Unlock()
|
|
||||||
fmt.Println(levelMsg)
|
fmt.Println(levelMsg)
|
||||||
//fmt.Println(cmd...)
|
//fmt.Println(cmd...)
|
||||||
}
|
}
|
||||||
|
@@ -81,15 +81,16 @@ var _ = Describe("Package", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Context("Encoding", func() {
|
Context("Encoding", func() {
|
||||||
|
db := NewInMemoryDatabase(false)
|
||||||
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a11 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
a11 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a := NewPackage("A", ">=1.0", []*DefaultPackage{a1}, []*DefaultPackage{a11})
|
a := NewPackage("A", ">=1.0", []*DefaultPackage{a1}, []*DefaultPackage{a11})
|
||||||
It("decodes and encodes correctly", func() {
|
It("decodes and encodes correctly", func() {
|
||||||
|
|
||||||
ID, err := a.Encode()
|
ID, err := a.Encode(db)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
p, err := DecodePackage(ID)
|
p, err := DecodePackage(ID, db)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
Expect(p.GetVersion()).To(Equal(a.GetVersion()))
|
Expect(p.GetVersion()).To(Equal(a.GetVersion()))
|
||||||
@@ -109,18 +110,22 @@ var _ = Describe("Package", func() {
|
|||||||
|
|
||||||
Context("BuildFormula", func() {
|
Context("BuildFormula", func() {
|
||||||
It("builds empty constraints", func() {
|
It("builds empty constraints", func() {
|
||||||
|
db := NewInMemoryDatabase(false)
|
||||||
|
|
||||||
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
f, err := a1.BuildFormula()
|
f, err := a1.BuildFormula(db)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(f).To(BeNil())
|
Expect(f).To(BeNil())
|
||||||
})
|
})
|
||||||
It("builds constraints correctly", func() {
|
It("builds constraints correctly", func() {
|
||||||
|
db := NewInMemoryDatabase(false)
|
||||||
|
|
||||||
a11 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
a11 := NewPackage("A", "1.1", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a21 := NewPackage("A", "1.2", []*DefaultPackage{}, []*DefaultPackage{})
|
a21 := NewPackage("A", "1.2", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
a1 := NewPackage("A", "1.0", []*DefaultPackage{}, []*DefaultPackage{})
|
||||||
a1.Requires([]*DefaultPackage{a11})
|
a1.Requires([]*DefaultPackage{a11})
|
||||||
a1.Conflicts([]*DefaultPackage{a21})
|
a1.Conflicts([]*DefaultPackage{a21})
|
||||||
f, err := a1.BuildFormula()
|
f, err := a1.BuildFormula(db)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(len(f)).To(Equal(2))
|
Expect(len(f)).To(Equal(2))
|
||||||
Expect(f[0].String()).To(Equal("or(not(c31f5842), a4910f77)"))
|
Expect(f[0].String()).To(Equal("or(not(c31f5842), a4910f77)"))
|
||||||
|
@@ -30,6 +30,8 @@ var _ = Describe("Decoder", func() {
|
|||||||
eq := 0
|
eq := 0
|
||||||
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
||||||
It("Orders them correctly #"+strconv.Itoa(index), func() {
|
It("Orders them correctly #"+strconv.Itoa(index), func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
@@ -39,7 +41,7 @@ var _ = Describe("Decoder", func() {
|
|||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -71,6 +73,8 @@ var _ = Describe("Decoder", func() {
|
|||||||
equality := 0
|
equality := 0
|
||||||
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
||||||
It("Doesn't order them correctly otherwise #"+strconv.Itoa(index), func() {
|
It("Doesn't order them correctly otherwise #"+strconv.Itoa(index), func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
@@ -80,7 +84,7 @@ var _ = Describe("Decoder", func() {
|
|||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -128,6 +132,8 @@ var _ = Describe("Decoder", func() {
|
|||||||
|
|
||||||
Context("Assertion hashing", func() {
|
Context("Assertion hashing", func() {
|
||||||
It("Hashes them, and could be used for comparison", func() {
|
It("Hashes them, and could be used for comparison", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
@@ -137,7 +143,7 @@ var _ = Describe("Decoder", func() {
|
|||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -182,11 +188,12 @@ var _ = Describe("Decoder", func() {
|
|||||||
Expect(hash).ToNot(Equal(""))
|
Expect(hash).ToNot(Equal(""))
|
||||||
Expect(hash2).ToNot(Equal(""))
|
Expect(hash2).ToNot(Equal(""))
|
||||||
Expect(hash != hash2).To(BeTrue())
|
Expect(hash != hash2).To(BeTrue())
|
||||||
|
db2 := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
X := pkg.NewPackage("X", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
X := pkg.NewPackage("X", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
Y := pkg.NewPackage("Y", "", []*pkg.DefaultPackage{X}, []*pkg.DefaultPackage{})
|
Y := pkg.NewPackage("Y", "", []*pkg.DefaultPackage{X}, []*pkg.DefaultPackage{})
|
||||||
Z := pkg.NewPackage("Z", "", []*pkg.DefaultPackage{X}, []*pkg.DefaultPackage{})
|
Z := pkg.NewPackage("Z", "", []*pkg.DefaultPackage{X}, []*pkg.DefaultPackage{})
|
||||||
s = NewSolver([]pkg.Package{}, []pkg.Package{X, Y, Z})
|
s = NewSolver([]pkg.Package{}, []pkg.Package{X, Y, Z}, db2)
|
||||||
solution, err = s.Install([]pkg.Package{Y})
|
solution, err = s.Install([]pkg.Package{Y})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
@@ -27,11 +27,13 @@ var _ = Describe("Solver", func() {
|
|||||||
|
|
||||||
Context("Simple set", func() {
|
Context("Simple set", func() {
|
||||||
It("Solves correctly if the selected package has no requirements or conflicts and we have nothing installed yet", func() {
|
It("Solves correctly if the selected package has no requirements or conflicts and we have nothing installed yet", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{}, []pkg.Package{A, B, C})
|
s := NewSolver([]pkg.Package{}, []pkg.Package{A, B, C}, db)
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -39,11 +41,13 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Solves correctly if the selected package has no requirements or conflicts and we have installed one package", func() {
|
It("Solves correctly if the selected package has no requirements or conflicts and we have installed one package", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C}, db)
|
||||||
solution, err := s.Install([]pkg.Package{B})
|
solution, err := s.Install([]pkg.Package{B})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: B.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: B.IsFlagged(true), Value: true}))
|
||||||
@@ -52,13 +56,15 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Solves correctly if the selected package to install has no requirement or conflicts, but in the world there is one with a requirement", func() {
|
It("Solves correctly if the selected package to install has no requirement or conflicts, but in the world there is one with a requirement", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{E, C}, []pkg.Package{A, B, C, D, E})
|
s := NewSolver([]pkg.Package{E, C}, []pkg.Package{A, B, C, D, E}, db)
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -71,12 +77,14 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Solves correctly if the selected package to install has requirements", func() {
|
It("Solves correctly if the selected package to install has requirements", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D}, db)
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -87,11 +95,13 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Solves correctly", func() {
|
It("Solves correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C}, db)
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -100,12 +110,14 @@ var _ = Describe("Solver", func() {
|
|||||||
Expect(len(solution)).To(Equal(3))
|
Expect(len(solution)).To(Equal(3))
|
||||||
})
|
})
|
||||||
It("Solves correctly more complex ones", func() {
|
It("Solves correctly more complex ones", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -117,13 +129,15 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Solves correctly more complex ones", func() {
|
It("Solves correctly more complex ones", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{}, []pkg.Package{A, B, C, D, E})
|
s := NewSolver([]pkg.Package{}, []pkg.Package{A, B, C, D, E}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
@@ -134,12 +148,14 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Uninstalls simple package correctly", func() {
|
It("Uninstalls simple package correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -151,6 +167,7 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Find conflicts", func() {
|
It("Find conflicts", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
@@ -158,7 +175,7 @@ var _ = Describe("Solver", func() {
|
|||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
val, err := s.ConflictsWithInstalled(A)
|
val, err := s.ConflictsWithInstalled(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(val).To(BeTrue())
|
Expect(val).To(BeTrue())
|
||||||
@@ -166,50 +183,58 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Find nested conflicts", func() {
|
It("Find nested conflicts", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
val, err := s.ConflictsWithInstalled(D)
|
val, err := s.ConflictsWithInstalled(D)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(val).To(BeTrue())
|
Expect(val).To(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("Doesn't find nested conflicts", func() {
|
It("Doesn't find nested conflicts", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{A}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
val, err := s.ConflictsWithInstalled(C)
|
val, err := s.ConflictsWithInstalled(C)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(val).ToNot(BeTrue())
|
Expect(val).ToNot(BeTrue())
|
||||||
})
|
})
|
||||||
|
|
||||||
It("Doesn't find conflicts", func() {
|
It("Doesn't find conflicts", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
val, err := s.ConflictsWithInstalled(C)
|
val, err := s.ConflictsWithInstalled(C)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
Expect(val).ToNot(BeTrue())
|
Expect(val).ToNot(BeTrue())
|
||||||
})
|
})
|
||||||
It("Uninstalls simple packages not in world correctly", func() {
|
It("Uninstalls simple packages not in world correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -221,12 +246,14 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Uninstalls complex packages not in world correctly", func() {
|
It("Uninstalls complex packages not in world correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -237,12 +264,14 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Uninstalls complex packages correctly, even if shared deps are required by system packages", func() {
|
It("Uninstalls complex packages correctly, even if shared deps are required by system packages", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -254,12 +283,14 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Uninstalls complex packages in world correctly", func() {
|
It("Uninstalls complex packages in world correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{C}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{C}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -271,13 +302,15 @@ var _ = Describe("Solver", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
It("Uninstalls complex package correctly", func() {
|
It("Uninstalls complex package correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
D := pkg.NewPackage("D", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
C.IsFlagged(true) // installed
|
C.IsFlagged(true) // installed
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D})
|
s := NewSolver([]pkg.Package{A, B, C, D}, []pkg.Package{A, B, C, D}, db)
|
||||||
|
|
||||||
solution, err := s.Uninstall(A)
|
solution, err := s.Uninstall(A)
|
||||||
Expect(solution).To(ContainElement(A.IsFlagged(false)))
|
Expect(solution).To(ContainElement(A.IsFlagged(false)))
|
||||||
@@ -294,12 +327,14 @@ var _ = Describe("Solver", func() {
|
|||||||
Context("Conflict set", func() {
|
Context("Conflict set", func() {
|
||||||
|
|
||||||
It("is unsolvable - as we something we ask to install conflict with system stuff", func() {
|
It("is unsolvable - as we something we ask to install conflict with system stuff", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
// D := pkg.NewPackage("D", "", []pkg.Package{}, []pkg.Package{})
|
// D := pkg.NewPackage("D", "", []pkg.Package{}, []pkg.Package{})
|
||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{C})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{C})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(len(solution)).To(Equal(0))
|
Expect(len(solution)).To(Equal(0))
|
||||||
@@ -310,6 +345,8 @@ var _ = Describe("Solver", func() {
|
|||||||
|
|
||||||
Context("Complex data sets", func() {
|
Context("Complex data sets", func() {
|
||||||
It("Solves them correctly", func() {
|
It("Solves them correctly", func() {
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
|
||||||
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
C := pkg.NewPackage("C", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
E := pkg.NewPackage("E", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
F := pkg.NewPackage("F", "", []*pkg.DefaultPackage{}, []*pkg.DefaultPackage{})
|
||||||
@@ -319,7 +356,7 @@ var _ = Describe("Solver", func() {
|
|||||||
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
B := pkg.NewPackage("B", "", []*pkg.DefaultPackage{D}, []*pkg.DefaultPackage{})
|
||||||
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
A := pkg.NewPackage("A", "", []*pkg.DefaultPackage{B}, []*pkg.DefaultPackage{})
|
||||||
|
|
||||||
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G})
|
s := NewSolver([]pkg.Package{C}, []pkg.Package{A, B, C, D, E, F, G}, db)
|
||||||
|
|
||||||
solution, err := s.Install([]pkg.Package{A})
|
solution, err := s.Install([]pkg.Package{A})
|
||||||
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
Expect(solution).To(ContainElement(PackageAssert{Package: A.IsFlagged(true), Value: true}))
|
||||||
|
@@ -53,7 +53,7 @@ var _ = Describe("Recipe", func() {
|
|||||||
|
|
||||||
Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10))
|
Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10))
|
||||||
|
|
||||||
generalRecipe := NewGeneralRecipe()
|
generalRecipe := NewGeneralRecipe(tree.GetPackageSet())
|
||||||
generalRecipe.WithTree(tree)
|
generalRecipe.WithTree(tree)
|
||||||
err = generalRecipe.Save(tmpdir)
|
err = generalRecipe.Save(tmpdir)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
@@ -61,7 +61,7 @@ var _ = Describe("Recipe", func() {
|
|||||||
})
|
})
|
||||||
|
|
||||||
Context("Reloading trees", func() {
|
Context("Reloading trees", func() {
|
||||||
It("writes and reads back the same tree", func() {
|
FIt("writes and reads back the same tree", func() {
|
||||||
tmpdir, err := ioutil.TempDir("", "tree")
|
tmpdir, err := ioutil.TempDir("", "tree")
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
defer os.RemoveAll(tmpdir) // clean up
|
defer os.RemoveAll(tmpdir) // clean up
|
||||||
@@ -75,11 +75,14 @@ var _ = Describe("Recipe", func() {
|
|||||||
|
|
||||||
Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10))
|
Expect(len(tree.GetPackageSet().GetPackages())).To(Equal(10))
|
||||||
|
|
||||||
generalRecipe := NewGeneralRecipe()
|
generalRecipe := NewGeneralRecipe(tree.GetPackageSet())
|
||||||
generalRecipe.WithTree(tree)
|
generalRecipe.WithTree(tree)
|
||||||
err = generalRecipe.Save(tmpdir)
|
err = generalRecipe.Save(tmpdir)
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
|
generalRecipe = NewGeneralRecipe(db)
|
||||||
|
|
||||||
generalRecipe.WithTree(nil)
|
generalRecipe.WithTree(nil)
|
||||||
Expect(generalRecipe.Tree()).To(BeNil())
|
Expect(generalRecipe.Tree()).To(BeNil())
|
||||||
|
|
||||||
|
@@ -37,8 +37,8 @@ var _ = Describe("Tree", func() {
|
|||||||
Context("Simple solving with the fixture tree", func() {
|
Context("Simple solving with the fixture tree", func() {
|
||||||
It("writes and reads back the same tree", func() {
|
It("writes and reads back the same tree", func() {
|
||||||
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
for index := 0; index < 300; index++ { // Just to make sure we don't have false positives
|
||||||
|
db := pkg.NewInMemoryDatabase(false)
|
||||||
generalRecipe := NewCompilerRecipe()
|
generalRecipe := NewCompilerRecipe(db)
|
||||||
tmpdir, err := ioutil.TempDir("", "package")
|
tmpdir, err := ioutil.TempDir("", "package")
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
defer os.RemoveAll(tmpdir) // clean up
|
defer os.RemoveAll(tmpdir) // clean up
|
||||||
@@ -62,7 +62,7 @@ var _ = Describe("Tree", func() {
|
|||||||
w, err := generalRecipe.Tree().World()
|
w, err := generalRecipe.Tree().World()
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
s := solver.NewSolver([]pkg.Package{}, w)
|
s := solver.NewSolver([]pkg.Package{}, w, db)
|
||||||
pack, err := generalRecipe.Tree().FindPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
pack, err := generalRecipe.Tree().FindPackage(&pkg.DefaultPackage{Name: "d", Category: "test", Version: "1.0"})
|
||||||
Expect(err).ToNot(HaveOccurred())
|
Expect(err).ToNot(HaveOccurred())
|
||||||
|
|
||||||
|
Reference in New Issue
Block a user