unified_integration_test.go 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105
  1. //go:build integration
  2. // +build integration
  3. package download
  4. import (
  5. "context"
  6. "net/http"
  7. "os"
  8. "strings"
  9. "testing"
  10. "github.com/stretchr/testify/assert"
  11. "github.com/Jguer/aur"
  12. mockaur "github.com/Jguer/yay/v12/pkg/dep/mock"
  13. "github.com/Jguer/yay/v12/pkg/settings/exe"
  14. "github.com/Jguer/yay/v12/pkg/settings/parser"
  15. "github.com/Jguer/yay/v12/pkg/text"
  16. )
  17. func TestIntegrationPKGBUILDReposDefinedDBClone(t *testing.T) {
  18. dir := t.TempDir()
  19. mockClient := &mockaur.MockAUR{
  20. GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
  21. return []aur.Pkg{{}}, nil // fakes a package found for all
  22. },
  23. }
  24. targets := []string{"core/linux", "yay-bin", "yay-git"}
  25. testLogger := text.NewLogger(os.Stdout, os.Stderr, strings.NewReader(""), true, "test")
  26. cmdRunner := &exe.OSRunner{Log: testLogger}
  27. cmdBuilder := &exe.CmdBuilder{
  28. Runner: cmdRunner,
  29. GitBin: "git",
  30. GitFlags: []string{},
  31. Log: testLogger,
  32. }
  33. searcher := &testDBSearcher{
  34. absPackagesDB: map[string]string{"linux": "core"},
  35. }
  36. cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
  37. cmdBuilder,
  38. targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
  39. assert.NoError(t, err)
  40. assert.EqualValues(t, map[string]bool{"core/linux": true, "yay-bin": true, "yay-git": true}, cloned)
  41. }
  42. func TestIntegrationPKGBUILDReposNotExist(t *testing.T) {
  43. dir := t.TempDir()
  44. mockClient := &mockaur.MockAUR{
  45. GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
  46. return []aur.Pkg{{}}, nil // fakes a package found for all
  47. },
  48. }
  49. targets := []string{"core/yay", "yay-bin", "yay-git"}
  50. testLogger := text.NewLogger(os.Stdout, os.Stderr, strings.NewReader(""), true, "test")
  51. cmdRunner := &exe.OSRunner{Log: testLogger}
  52. cmdBuilder := &exe.CmdBuilder{
  53. Runner: cmdRunner,
  54. GitBin: "git",
  55. GitFlags: []string{},
  56. Log: testLogger,
  57. }
  58. searcher := &testDBSearcher{
  59. absPackagesDB: map[string]string{"yay": "core"},
  60. }
  61. cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
  62. cmdBuilder,
  63. targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
  64. assert.Error(t, err)
  65. assert.EqualValues(t, map[string]bool{"yay-bin": true, "yay-git": true}, cloned)
  66. }
  67. // GIVEN 2 aur packages and 1 in repo
  68. // WHEN defining as specified targets
  69. // THEN all aur be found and cloned
  70. func TestIntegrationPKGBUILDFull(t *testing.T) {
  71. mockClient := &mockaur.MockAUR{
  72. GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
  73. return []aur.Pkg{{}}, nil
  74. },
  75. }
  76. targets := []string{"core/linux", "aur/yay-bin", "yay-git"}
  77. searcher := &testDBSearcher{
  78. absPackagesDB: map[string]string{"linux": "core"},
  79. }
  80. fetched, err := PKGBUILDs(searcher, mockClient, &http.Client{},
  81. targets, "https://aur.archlinux.org", parser.ModeAny)
  82. assert.NoError(t, err)
  83. for _, target := range targets {
  84. assert.Contains(t, fetched, target)
  85. assert.NotEmpty(t, fetched[target])
  86. }
  87. }