mirror of
https://github.com/Jguer/yay
synced 2024-10-06 16:19:12 +00:00
8916cd174b
* rework relationship between runtime and cfg * separate runtime from cfg * simplify instantiation logic * move installer to appropriate package * move operator to sync package * add tests for srcinfo service * consolidate srcinfo service in sync * add logger to srcinfo * add logger to preparer * remove unused text functions * remove remaining text.* from srcinfo * remove global logger parts * remove global org method exports * remove global logger * move text->input * add rule to prevent fmt.Print * update golangci go version * remove outdated FAQs * remove outdated FAQs
133 lines
2.8 KiB
Go
133 lines
2.8 KiB
Go
package srcinfo
|
|
|
|
import (
|
|
"context"
|
|
"io"
|
|
"strings"
|
|
"testing"
|
|
|
|
gosrc "github.com/Morganamilo/go-srcinfo"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
|
"github.com/Jguer/yay/v12/pkg/db/mock"
|
|
"github.com/Jguer/yay/v12/pkg/dep"
|
|
"github.com/Jguer/yay/v12/pkg/settings"
|
|
"github.com/Jguer/yay/v12/pkg/settings/exe"
|
|
"github.com/Jguer/yay/v12/pkg/text"
|
|
"github.com/Jguer/yay/v12/pkg/vcs"
|
|
)
|
|
|
|
func newTestLogger() *text.Logger {
|
|
return text.NewLogger(io.Discard, io.Discard, strings.NewReader(""), true, "test")
|
|
}
|
|
|
|
func TestNewService(t *testing.T) {
|
|
dbExecutor := &mock.DBExecutor{}
|
|
cfg := &settings.Configuration{}
|
|
cmdBuilder := &exe.MockBuilder{}
|
|
vcsStore := &vcs.Mock{}
|
|
pkgBuildDirs := map[string]string{
|
|
"jellyfin": "../../../testdata/jfin",
|
|
"cephbin": "../../../testdata/cephbin",
|
|
}
|
|
|
|
srv, err := NewService(dbExecutor, cfg, newTestLogger(), cmdBuilder, vcsStore, pkgBuildDirs)
|
|
assert.NoError(t, err)
|
|
assert.NotNil(t, srv)
|
|
assert.Equal(t, dbExecutor, srv.dbExecutor)
|
|
assert.Equal(t, cfg, srv.cfg)
|
|
assert.Equal(t, cmdBuilder, srv.cmdBuilder)
|
|
assert.Equal(t, vcsStore, srv.vcsStore)
|
|
assert.Equal(t, pkgBuildDirs, srv.pkgBuildDirs)
|
|
assert.NotNil(t, srv.srcInfos)
|
|
}
|
|
|
|
func TestService_IncompatiblePkgs(t *testing.T) {
|
|
srv := &Service{
|
|
dbExecutor: &mock.DBExecutor{AlpmArchitecturesFn: func() ([]string, error) {
|
|
return []string{"x86_64"}, nil
|
|
}},
|
|
srcInfos: map[string]*gosrc.Srcinfo{
|
|
"pkg1": {
|
|
Package: gosrc.Package{
|
|
Arch: []string{"x86_64", "any"},
|
|
},
|
|
},
|
|
"pkg2": {
|
|
Package: gosrc.Package{
|
|
Arch: []string{"any"},
|
|
},
|
|
},
|
|
"pkg3": {
|
|
Package: gosrc.Package{
|
|
Arch: []string{"armv7h"},
|
|
},
|
|
},
|
|
"pkg4": {
|
|
Package: gosrc.Package{
|
|
Arch: []string{"i683", "x86_64"},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
incompatible, err := srv.IncompatiblePkgs(context.Background())
|
|
assert.NoError(t, err)
|
|
assert.ElementsMatch(t, []string{"pkg3"}, incompatible)
|
|
}
|
|
|
|
func TestService_CheckPGPKeys(t *testing.T) {
|
|
srv := &Service{
|
|
log: newTestLogger(),
|
|
pkgBuildDirs: map[string]string{
|
|
"pkg1": "/path/to/pkg1",
|
|
"pkg2": "/path/to/pkg2",
|
|
},
|
|
srcInfos: map[string]*gosrc.Srcinfo{
|
|
"pkg1": {
|
|
Packages: []gosrc.Package{
|
|
{Pkgname: "pkg1"},
|
|
},
|
|
},
|
|
"pkg2": {
|
|
Packages: []gosrc.Package{
|
|
{Pkgname: "pkg2"},
|
|
},
|
|
},
|
|
},
|
|
}
|
|
|
|
err := srv.CheckPGPKeys(context.Background())
|
|
assert.NoError(t, err)
|
|
}
|
|
|
|
func TestService_UpdateVCSStore(t *testing.T) {
|
|
srv := &Service{
|
|
srcInfos: map[string]*gosrc.Srcinfo{
|
|
"pkg1": {
|
|
Packages: []gosrc.Package{
|
|
{Pkgname: "pkg1"},
|
|
},
|
|
},
|
|
"pkg2": {
|
|
Packages: []gosrc.Package{
|
|
{Pkgname: "pkg2"},
|
|
},
|
|
},
|
|
},
|
|
vcsStore: &vcs.Mock{},
|
|
}
|
|
|
|
targets := []map[string]*dep.InstallInfo{
|
|
{
|
|
"pkg1": {},
|
|
"pkg2": {},
|
|
},
|
|
}
|
|
ignore := map[string]error{}
|
|
|
|
err := srv.UpdateVCSStore(context.Background(), targets, ignore)
|
|
assert.NoError(t, err)
|
|
}
|