diff --git a/main_test.go b/main_test.go index dcd6fdf0..88cd4cc6 100644 --- a/main_test.go +++ b/main_test.go @@ -3,58 +3,45 @@ package main import ( "testing" + "github.com/Morganamilo/go-pacmanconf" "github.com/stretchr/testify/assert" "github.com/Jguer/yay/v10/pkg/settings" ) -func TestInitAlpm(t *testing.T) { +func TestPacmanConf(t *testing.T) { + expectedPacmanConf := &pacmanconf.Config{RootDir: "/", + DBPath: "//var/lib/pacman/", + CacheDir: []string{"/cachedir/", "/another/"}, + HookDir: []string{"/hookdir/"}, + GPGDir: "/gpgdir/", + LogFile: "/logfile", + HoldPkg: []string(nil), + IgnorePkg: []string{"ignore", "this", "package"}, + IgnoreGroup: []string{"ignore", "this", "group"}, + Architecture: "8086", + XferCommand: "", + NoUpgrade: []string{"noupgrade"}, + NoExtract: []string{"noextract"}, + CleanMethod: []string{"KeepInstalled"}, + SigLevel: []string{"PackageOptional", "PackageTrustedOnly", "DatabaseOptional", "DatabaseTrustedOnly"}, + LocalFileSigLevel: []string(nil), + RemoteFileSigLevel: []string(nil), + UseSyslog: false, + Color: false, + UseDelta: 0, + TotalDownload: true, + CheckSpace: true, + VerbosePkgLists: true, + DisableDownloadTimeout: false, + Repos: []pacmanconf.Repository{ + {Name: "repo1", Servers: []string{"repo1"}, SigLevel: []string(nil), Usage: []string{"All"}}, + {Name: "repo2", Servers: []string{"repo2"}, SigLevel: []string(nil), Usage: []string{"All"}}}} + pacmanConf, color, err := initAlpm(settings.MakeArguments(), "testdata/pacman.conf") assert.Nil(t, err) assert.NotNil(t, pacmanConf) assert.Equal(t, color, false) + assert.EqualValues(t, expectedPacmanConf, pacmanConf) - root, err := h.Root() - assert.Nil(t, err) - assert.Equal(t, "/", root) - - cache, err := h.CacheDirs() - assert.Nil(t, err) - assert.Equal(t, []string{"/cachedir/", "/another/"}, cache.Slice()) - - log, err := h.LogFile() - assert.Nil(t, err) - assert.Equal(t, "/logfile", log) - - gpg, err := h.GPGDir() - assert.Nil(t, err) - assert.Equal(t, "/gpgdir/", gpg) - - hook, err := h.HookDirs() - assert.Nil(t, err) - assert.Equal(t, []string{"/usr/share/libalpm/hooks/", "/hookdir/"}, hook.Slice()) - - arch, err := h.Arch() - assert.Nil(t, err) - assert.Equal(t, "8086", arch) - - ignorePkg, err := h.IgnorePkgs() - assert.Nil(t, err) - assert.Equal(t, []string{"ignore", "this", "package"}, ignorePkg.Slice()) - - ignoreGroup, err := h.IgnoreGroups() - assert.Nil(t, err) - assert.Equal(t, []string{"ignore", "this", "group"}, ignoreGroup.Slice()) - - noUp, err := h.NoUpgrades() - assert.Nil(t, err) - assert.Equal(t, []string{"noupgrade"}, noUp.Slice()) - - noEx, err := h.NoExtracts() - assert.Nil(t, err) - assert.Equal(t, []string{"noextract"}, noEx.Slice()) - - check, err := h.CheckSpace() - assert.Nil(t, err) - assert.Equal(t, true, check) } diff --git a/pkg/db/alpm_test.go b/pkg/db/alpm_test.go new file mode 100644 index 00000000..f9916739 --- /dev/null +++ b/pkg/db/alpm_test.go @@ -0,0 +1,99 @@ +package db + +import ( + "testing" + + alpm "github.com/Jguer/go-alpm" + "github.com/Morganamilo/go-pacmanconf" + "github.com/stretchr/testify/assert" +) + +func TestAlpmExecutor(t *testing.T) { + pacmanConf := &pacmanconf.Config{RootDir: "/", + DBPath: "/var/lib/pacman/", + CacheDir: []string{"/cachedir/", "/another/"}, + HookDir: []string{"/hookdir/"}, + GPGDir: "/gpgdir/", + LogFile: "/logfile", + HoldPkg: []string(nil), + IgnorePkg: []string{"ignore", "this", "package"}, + IgnoreGroup: []string{"ignore", "this", "group"}, + Architecture: "8086", + XferCommand: "", + NoUpgrade: []string{"noupgrade"}, + NoExtract: []string{"noextract"}, + CleanMethod: []string{"KeepInstalled"}, + SigLevel: []string{"PackageOptional", "PackageTrustedOnly", "DatabaseOptional", "DatabaseTrustedOnly"}, + LocalFileSigLevel: []string(nil), + RemoteFileSigLevel: []string(nil), + UseSyslog: false, + Color: false, + UseDelta: 0, + TotalDownload: true, + CheckSpace: true, + VerbosePkgLists: true, + DisableDownloadTimeout: false, + Repos: []pacmanconf.Repository{ + {Name: "repo1", Servers: []string{"repo1"}, SigLevel: []string(nil), Usage: []string{"All"}}, + {Name: "repo2", Servers: []string{"repo2"}, SigLevel: []string(nil), Usage: []string{"All"}}}} + + aExec, err := NewExecutor(pacmanConf, func(question alpm.QuestionAny) {}) + assert.NoError(t, err) + + assert.NotNil(t, aExec.conf) + assert.EqualValues(t, pacmanConf, aExec.conf) + + assert.NotNil(t, aExec.localDB) + assert.NotNil(t, aExec.syncDB) + assert.NotNil(t, aExec.questionCallback) + h := aExec.handle + assert.NotNil(t, h) + + root, err := h.Root() + assert.Nil(t, err) + assert.Equal(t, "/", root) + + dbPath, err := h.DBPath() + assert.Nil(t, err) + assert.Equal(t, "/var/lib/pacman/", dbPath) + + cache, err := h.CacheDirs() + assert.Nil(t, err) + assert.Equal(t, []string{"/cachedir/", "/another/"}, cache.Slice()) + + log, err := h.LogFile() + assert.Nil(t, err) + assert.Equal(t, "/logfile", log) + + gpg, err := h.GPGDir() + assert.Nil(t, err) + assert.Equal(t, "/gpgdir/", gpg) + + hook, err := h.HookDirs() + assert.Nil(t, err) + assert.Equal(t, []string{"/usr/share/libalpm/hooks/", "/hookdir/"}, hook.Slice()) + + arch, err := h.Arch() + assert.Nil(t, err) + assert.Equal(t, "8086", arch) + + ignorePkg, err := h.IgnorePkgs() + assert.Nil(t, err) + assert.Equal(t, []string{"ignore", "this", "package"}, ignorePkg.Slice()) + + ignoreGroup, err := h.IgnoreGroups() + assert.Nil(t, err) + assert.Equal(t, []string{"ignore", "this", "group"}, ignoreGroup.Slice()) + + noUp, err := h.NoUpgrades() + assert.Nil(t, err) + assert.Equal(t, []string{"noupgrade"}, noUp.Slice()) + + noEx, err := h.NoExtracts() + assert.Nil(t, err) + assert.Equal(t, []string{"noextract"}, noEx.Slice()) + + check, err := h.CheckSpace() + assert.Nil(t, err) + assert.Equal(t, true, check) +}