utils_test.go 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104
  1. package download
  2. import (
  3. "os/exec"
  4. "testing"
  5. "github.com/stretchr/testify/assert"
  6. "github.com/Jguer/go-alpm/v2"
  7. "github.com/Jguer/yay/v10/pkg/db"
  8. "github.com/Jguer/yay/v10/pkg/settings/exe"
  9. )
  10. type testRunner struct{}
  11. func (t *testRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout string, stderr string, err error) {
  12. return "", "", nil
  13. }
  14. func (t *testRunner) Show(cmd *exec.Cmd) error {
  15. return nil
  16. }
  17. type testGitBuilder struct {
  18. index int
  19. test *testing.T
  20. want string
  21. parentBuilder *exe.CmdBuilder
  22. }
  23. func (t *testGitBuilder) BuildGitCmd(dir string, extraArgs ...string) *exec.Cmd {
  24. cmd := t.parentBuilder.BuildGitCmd(dir, extraArgs...)
  25. if t.want != "" {
  26. assert.Equal(t.test, t.want, cmd.String())
  27. }
  28. return cmd
  29. }
  30. func (c *testGitBuilder) Show(cmd *exec.Cmd) error {
  31. return c.parentBuilder.Show(cmd)
  32. }
  33. func (c *testGitBuilder) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr string, err error) {
  34. return c.parentBuilder.Capture(cmd, timeout)
  35. }
  36. type (
  37. testDB struct {
  38. alpm.IDB
  39. name string
  40. }
  41. testPackage struct {
  42. db.IPackage
  43. name string
  44. base string
  45. db *testDB
  46. }
  47. testDBSearcher struct {
  48. absPackagesDB map[string]string
  49. }
  50. )
  51. func (d *testDB) Name() string {
  52. return d.name
  53. }
  54. func (p *testPackage) Name() string {
  55. return p.name
  56. }
  57. func (p *testPackage) Base() string {
  58. return p.base
  59. }
  60. func (p *testPackage) DB() alpm.IDB {
  61. return p.db
  62. }
  63. func (d *testDBSearcher) SyncPackage(name string) db.IPackage {
  64. if v, ok := d.absPackagesDB[name]; ok {
  65. return &testPackage{
  66. name: name,
  67. base: name,
  68. db: &testDB{name: v},
  69. }
  70. }
  71. return nil
  72. }
  73. func (d *testDBSearcher) SatisfierFromDB(name string, db string) db.IPackage {
  74. if v, ok := d.absPackagesDB[name]; ok && v == db {
  75. return &testPackage{
  76. name: name,
  77. base: name,
  78. db: &testDB{name: v},
  79. }
  80. }
  81. return nil
  82. }