alpm_test.go 3.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113
  1. package ialpm
  2. import (
  3. "io"
  4. "strings"
  5. "testing"
  6. alpm "github.com/Jguer/go-alpm/v2"
  7. "github.com/Morganamilo/go-pacmanconf"
  8. "github.com/stretchr/testify/assert"
  9. "github.com/Jguer/yay/v12/pkg/text"
  10. )
  11. func TestAlpmExecutor(t *testing.T) {
  12. t.Parallel()
  13. pacmanConf := &pacmanconf.Config{
  14. RootDir: "/",
  15. DBPath: "/var/lib/pacman/",
  16. CacheDir: []string{"/cachedir/", "/another/"},
  17. HookDir: []string{"/hookdir/"},
  18. GPGDir: "/gpgdir/",
  19. LogFile: "/logfile",
  20. HoldPkg: []string(nil),
  21. IgnorePkg: []string{"ignore", "this", "package"},
  22. IgnoreGroup: []string{"ignore", "this", "group"},
  23. Architecture: []string{"8086"},
  24. XferCommand: "",
  25. NoUpgrade: []string{"noupgrade"},
  26. NoExtract: []string{"noextract"},
  27. CleanMethod: []string{"KeepInstalled"},
  28. SigLevel: []string{"PackageOptional", "PackageTrustedOnly", "DatabaseOptional", "DatabaseTrustedOnly"},
  29. LocalFileSigLevel: []string(nil),
  30. RemoteFileSigLevel: []string(nil),
  31. UseSyslog: false,
  32. Color: false,
  33. UseDelta: 0,
  34. TotalDownload: true,
  35. CheckSpace: true,
  36. VerbosePkgLists: true,
  37. DisableDownloadTimeout: false,
  38. Repos: []pacmanconf.Repository{
  39. {Name: "repo1", Servers: []string{"repo1"}, SigLevel: []string(nil), Usage: []string{"All"}},
  40. {Name: "repo2", Servers: []string{"repo2"}, SigLevel: []string(nil), Usage: []string{"All"}},
  41. },
  42. }
  43. aExec, err := NewExecutor(pacmanConf, text.NewLogger(io.Discard, io.Discard, strings.NewReader(""), false, "test"))
  44. assert.NoError(t, err)
  45. assert.NotNil(t, aExec.conf)
  46. assert.EqualValues(t, pacmanConf, aExec.conf)
  47. assert.NotNil(t, aExec.localDB)
  48. assert.NotNil(t, aExec.syncDB)
  49. assert.NotNil(t, aExec.questionCallback)
  50. h := aExec.handle
  51. assert.NotNil(t, h)
  52. root, err := h.Root()
  53. assert.Nil(t, err)
  54. assert.Equal(t, "/", root)
  55. dbPath, err := h.DBPath()
  56. assert.Nil(t, err)
  57. assert.Equal(t, "/var/lib/pacman/", dbPath)
  58. cache, err := h.CacheDirs()
  59. assert.Nil(t, err)
  60. assert.Equal(t, []string{"/cachedir/", "/another/"}, cache.Slice())
  61. log, err := h.LogFile()
  62. assert.Nil(t, err)
  63. assert.Equal(t, "/logfile", log)
  64. gpg, err := h.GPGDir()
  65. assert.Nil(t, err)
  66. assert.Equal(t, "/gpgdir/", gpg)
  67. hook, err := h.HookDirs()
  68. assert.Nil(t, err)
  69. assert.Equal(t, []string{"/usr/share/libalpm/hooks/", "/hookdir/"}, hook.Slice())
  70. arch, err := alpmTestGetArch(h)
  71. assert.Nil(t, err)
  72. assert.Equal(t, []string{"8086"}, arch)
  73. ignorePkg, err := h.IgnorePkgs()
  74. assert.Nil(t, err)
  75. assert.Equal(t, []string{"ignore", "this", "package"}, ignorePkg.Slice())
  76. ignoreGroup, err := h.IgnoreGroups()
  77. assert.Nil(t, err)
  78. assert.Equal(t, []string{"ignore", "this", "group"}, ignoreGroup.Slice())
  79. noUp, err := h.NoUpgrades()
  80. assert.Nil(t, err)
  81. assert.Equal(t, []string{"noupgrade"}, noUp.Slice())
  82. noEx, err := h.NoExtracts()
  83. assert.Nil(t, err)
  84. assert.Equal(t, []string{"noextract"}, noEx.Slice())
  85. check, err := h.CheckSpace()
  86. assert.Nil(t, err)
  87. assert.Equal(t, true, check)
  88. }
  89. func alpmTestGetArch(h *alpm.Handle) ([]string, error) {
  90. architectures, err := h.GetArchitectures()
  91. return architectures.Slice(), err
  92. }