|
@@ -10,6 +10,9 @@ import (
|
|
|
"github.com/stretchr/testify/assert"
|
|
|
"gopkg.in/h2non/gock.v1"
|
|
|
|
|
|
+ "github.com/Jguer/aur"
|
|
|
+
|
|
|
+ mockaur "github.com/Jguer/yay/v11/pkg/dep/mock"
|
|
|
"github.com/Jguer/yay/v11/pkg/settings/exe"
|
|
|
"github.com/Jguer/yay/v11/pkg/settings/parser"
|
|
|
)
|
|
@@ -22,6 +25,12 @@ func TestPKGBUILDReposDefinedDBPull(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
dir := t.TempDir()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{{}}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
+
|
|
|
os.MkdirAll(filepath.Join(dir, "yay", ".git"), 0o777)
|
|
|
|
|
|
targets := []string{"core/yay", "yay-bin", "yay-git"}
|
|
@@ -38,7 +47,7 @@ func TestPKGBUILDReposDefinedDBPull(t *testing.T) {
|
|
|
searcher := &testDBSearcher{
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
- cloned, err := PKGBUILDRepos(context.Background(), searcher,
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
cmdBuilder,
|
|
|
targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
|
|
|
|
|
@@ -53,6 +62,11 @@ func TestPKGBUILDReposDefinedDBClone(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
dir := t.TempDir()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{{}}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
targets := []string{"core/yay", "yay-bin", "yay-git"}
|
|
|
cmdRunner := &testRunner{}
|
|
|
cmdBuilder := &testGitBuilder{
|
|
@@ -67,7 +81,7 @@ func TestPKGBUILDReposDefinedDBClone(t *testing.T) {
|
|
|
searcher := &testDBSearcher{
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
- cloned, err := PKGBUILDRepos(context.Background(), searcher,
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
cmdBuilder,
|
|
|
targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
|
|
|
|
|
@@ -82,6 +96,11 @@ func TestPKGBUILDReposClone(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
dir := t.TempDir()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{{}}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
targets := []string{"yay", "yay-bin", "yay-git"}
|
|
|
cmdRunner := &testRunner{}
|
|
|
cmdBuilder := &testGitBuilder{
|
|
@@ -96,7 +115,7 @@ func TestPKGBUILDReposClone(t *testing.T) {
|
|
|
searcher := &testDBSearcher{
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
- cloned, err := PKGBUILDRepos(context.Background(), searcher,
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
cmdBuilder,
|
|
|
targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
|
|
|
|
|
@@ -111,6 +130,11 @@ func TestPKGBUILDReposNotFound(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
dir := t.TempDir()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{{}}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
targets := []string{"extra/yay", "yay-bin", "yay-git"}
|
|
|
cmdRunner := &testRunner{}
|
|
|
cmdBuilder := &testGitBuilder{
|
|
@@ -125,7 +149,7 @@ func TestPKGBUILDReposNotFound(t *testing.T) {
|
|
|
searcher := &testDBSearcher{
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
- cloned, err := PKGBUILDRepos(context.Background(), searcher,
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
cmdBuilder,
|
|
|
targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
|
|
|
|
|
@@ -140,6 +164,11 @@ func TestPKGBUILDReposRepoMode(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
dir := t.TempDir()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
targets := []string{"yay", "yay-bin", "yay-git"}
|
|
|
cmdRunner := &testRunner{}
|
|
|
cmdBuilder := &testGitBuilder{
|
|
@@ -154,7 +183,7 @@ func TestPKGBUILDReposRepoMode(t *testing.T) {
|
|
|
searcher := &testDBSearcher{
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
- cloned, err := PKGBUILDRepos(context.Background(), searcher,
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
cmdBuilder,
|
|
|
targets, parser.ModeRepo, "https://aur.archlinux.org", dir, false)
|
|
|
|
|
@@ -168,6 +197,11 @@ func TestPKGBUILDReposRepoMode(t *testing.T) {
|
|
|
func TestPKGBUILDFull(t *testing.T) {
|
|
|
t.Parallel()
|
|
|
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{{}}, nil
|
|
|
+ },
|
|
|
+ }
|
|
|
gock.New("https://aur.archlinux.org").
|
|
|
Get("/cgit/aur.git/plain/PKGBUILD").MatchParam("h", "yay-git").
|
|
|
Reply(200).
|
|
@@ -188,7 +222,7 @@ func TestPKGBUILDFull(t *testing.T) {
|
|
|
absPackagesDB: map[string]string{"yay": "core"},
|
|
|
}
|
|
|
|
|
|
- fetched, err := PKGBUILDs(searcher, &http.Client{},
|
|
|
+ fetched, err := PKGBUILDs(searcher, mockClient, &http.Client{},
|
|
|
targets, "https://aur.archlinux.org", parser.ModeAny)
|
|
|
|
|
|
assert.NoError(t, err)
|
|
@@ -198,3 +232,37 @@ func TestPKGBUILDFull(t *testing.T) {
|
|
|
"yay-git": []byte("example_yay-git"),
|
|
|
}, fetched)
|
|
|
}
|
|
|
+
|
|
|
+// GIVEN 2 aur packages and 1 in repo
|
|
|
+// WHEN aur packages are not found
|
|
|
+// only repo should be cloned
|
|
|
+func TestPKGBUILDReposMissingAUR(t *testing.T) {
|
|
|
+ t.Parallel()
|
|
|
+ dir := t.TempDir()
|
|
|
+
|
|
|
+ mockClient := &mockaur.MockAUR{
|
|
|
+ GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
|
|
+ return []aur.Pkg{}, nil // fakes a package found for all
|
|
|
+ },
|
|
|
+ }
|
|
|
+ targets := []string{"core/yay", "aur/yay-bin", "aur/yay-git"}
|
|
|
+ cmdRunner := &testRunner{}
|
|
|
+ cmdBuilder := &testGitBuilder{
|
|
|
+ index: 0,
|
|
|
+ test: t,
|
|
|
+ parentBuilder: &exe.CmdBuilder{
|
|
|
+ Runner: cmdRunner,
|
|
|
+ GitBin: "/usr/local/bin/git",
|
|
|
+ GitFlags: []string{},
|
|
|
+ },
|
|
|
+ }
|
|
|
+ searcher := &testDBSearcher{
|
|
|
+ absPackagesDB: map[string]string{"yay": "core"},
|
|
|
+ }
|
|
|
+ cloned, err := PKGBUILDRepos(context.Background(), searcher, mockClient,
|
|
|
+ cmdBuilder,
|
|
|
+ targets, parser.ModeAny, "https://aur.archlinux.org", dir, false)
|
|
|
+
|
|
|
+ assert.NoError(t, err)
|
|
|
+ assert.EqualValues(t, map[string]bool{"core/yay": true}, cloned)
|
|
|
+}
|