Parcourir la source

test(yay): port tests to parallel

jguer il y a 3 ans
Parent
commit
95bc333a92

+ 1 - 1
pkg/download/abs.go

@@ -57,7 +57,7 @@ func getPackageRepoURL(db string) (string, error) {
 }
 
 // ABSPKGBUILD retrieves the PKGBUILD file to a dest directory.
-func ABSPKGBUILD(httpClient *http.Client, dbName, pkgName string) ([]byte, error) {
+func ABSPKGBUILD(httpClient httpRequestDoer, dbName, pkgName string) ([]byte, error) {
 	packageURL, err := getPackageURL(dbName, pkgName)
 	if err != nil {
 		return nil, err

+ 17 - 18
pkg/download/abs_test.go

@@ -3,8 +3,6 @@ package download
 import (
 	"fmt"
 	"io/ioutil"
-	"net/http"
-	"net/http/httptest"
 	"os"
 	"path/filepath"
 	"testing"
@@ -90,19 +88,13 @@ func Test_getPackageURL(t *testing.T) {
 
 func TestGetABSPkgbuild(t *testing.T) {
 	t.Parallel()
-	pkgBuildHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		w.WriteHeader(200)
-		w.Write([]byte(gitExtrasPKGBUILD))
-	})
-
-	notFoundHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		w.WriteHeader(404)
-	})
 
 	type args struct {
-		handler http.Handler
 		dbName  string
+		body    string
+		status  int
 		pkgName string
+		wantURL string
 	}
 	tests := []struct {
 		name    string
@@ -113,9 +105,11 @@ func TestGetABSPkgbuild(t *testing.T) {
 		{
 			name: "found package",
 			args: args{
-				handler: pkgBuildHandler,
 				dbName:  "core",
+				body:    gitExtrasPKGBUILD,
+				status:  200,
 				pkgName: "git-extras",
+				wantURL: "https://github.com/archlinux/svntogit-packages/raw/packages/git-extras/trunk/PKGBUILD",
 			},
 			want:    gitExtrasPKGBUILD,
 			wantErr: false,
@@ -123,9 +117,11 @@ func TestGetABSPkgbuild(t *testing.T) {
 		{
 			name: "not found package",
 			args: args{
-				handler: notFoundHandler,
 				dbName:  "core",
-				pkgName: "git-extras",
+				body:    "",
+				status:  404,
+				pkgName: "git-git",
+				wantURL: "https://github.com/archlinux/svntogit-packages/raw/packages/git-git/trunk/PKGBUILD",
 			},
 			want:    "",
 			wantErr: true,
@@ -135,10 +131,13 @@ func TestGetABSPkgbuild(t *testing.T) {
 		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			PKGBuild := httptest.NewServer(pkgBuildHandler)
-			ABSPackageURL = PKGBuild.URL
-			PKGBuild.Config.Handler = tt.args.handler
-			got, err := ABSPKGBUILD(PKGBuild.Client(), tt.args.dbName, tt.args.pkgName)
+			httpClient := &testClient{
+				t:       t,
+				wantURL: tt.args.wantURL,
+				body:    tt.args.body,
+				status:  tt.args.status,
+			}
+			got, err := ABSPKGBUILD(httpClient, tt.args.dbName, tt.args.pkgName)
 			if tt.wantErr {
 				assert.Error(t, err)
 			} else {

+ 1 - 1
pkg/download/aur.go

@@ -14,7 +14,7 @@ import (
 	"github.com/Jguer/yay/v10/pkg/text"
 )
 
-func AURPKGBUILD(httpClient *http.Client, pkgName, aurURL string) ([]byte, error) {
+func AURPKGBUILD(httpClient httpRequestDoer, pkgName, aurURL string) ([]byte, error) {
 	values := url.Values{}
 	values.Set("h", pkgName)
 	pkgURL := aurURL + "/cgit/aur.git/plain/PKGBUILD?" + values.Encode()

+ 17 - 17
pkg/download/aur_test.go

@@ -3,8 +3,6 @@ package download
 import (
 	"fmt"
 	"io/ioutil"
-	"net/http"
-	"net/http/httptest"
 	"os"
 	"path/filepath"
 	"testing"
@@ -16,18 +14,12 @@ import (
 
 func TestGetAURPkgbuild(t *testing.T) {
 	t.Parallel()
-	pkgBuildHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		w.WriteHeader(200)
-		w.Write([]byte(gitExtrasPKGBUILD))
-	})
-
-	notFoundHandler := http.HandlerFunc(func(w http.ResponseWriter, r *http.Request) {
-		w.WriteHeader(404)
-	})
 
 	type args struct {
-		handler http.Handler
+		body    string
+		status  int
 		pkgName string
+		wantURL string
 	}
 	tests := []struct {
 		name    string
@@ -38,8 +30,10 @@ func TestGetAURPkgbuild(t *testing.T) {
 		{
 			name: "found package",
 			args: args{
-				handler: pkgBuildHandler,
+				body:    gitExtrasPKGBUILD,
+				status:  200,
 				pkgName: "git-extras",
+				wantURL: "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=git-extras",
 			},
 			want:    gitExtrasPKGBUILD,
 			wantErr: false,
@@ -47,8 +41,10 @@ func TestGetAURPkgbuild(t *testing.T) {
 		{
 			name: "not found package",
 			args: args{
-				handler: notFoundHandler,
-				pkgName: "git-extras",
+				body:    "",
+				status:  404,
+				pkgName: "git-git",
+				wantURL: "https://aur.archlinux.org/cgit/aur.git/plain/PKGBUILD?h=git-git",
 			},
 			want:    "",
 			wantErr: true,
@@ -58,9 +54,13 @@ func TestGetAURPkgbuild(t *testing.T) {
 		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			PKGBuild := httptest.NewServer(pkgBuildHandler)
-			PKGBuild.Config.Handler = tt.args.handler
-			got, err := AURPKGBUILD(PKGBuild.Client(), tt.args.pkgName, PKGBuild.URL)
+			httpClient := &testClient{
+				t:       t,
+				wantURL: tt.args.wantURL,
+				body:    tt.args.body,
+				status:  tt.args.status,
+			}
+			got, err := AURPKGBUILD(httpClient, tt.args.pkgName, "https://aur.archlinux.org")
 			if tt.wantErr {
 				assert.Error(t, err)
 			} else {

+ 4 - 0
pkg/download/unified.go

@@ -15,6 +15,10 @@ import (
 	"github.com/Jguer/yay/v10/pkg/text"
 )
 
+type httpRequestDoer interface {
+	Get(string) (*http.Response, error)
+}
+
 type DBSearcher interface {
 	SyncPackage(string) db.IPackage
 	SatisfierFromDB(string, string) db.IPackage

+ 15 - 0
pkg/download/utils_test.go

@@ -1,7 +1,10 @@
 package download
 
 import (
+	"io"
+	"net/http"
 	"os/exec"
+	"strings"
 	"testing"
 
 	"github.com/stretchr/testify/assert"
@@ -61,6 +64,13 @@ type (
 	testDBSearcher struct {
 		absPackagesDB map[string]string
 	}
+
+	testClient struct {
+		t       *testing.T
+		wantURL string
+		body    string
+		status  int
+	}
 )
 
 func (d *testDB) Name() string {
@@ -102,3 +112,8 @@ func (d *testDBSearcher) SatisfierFromDB(name string, db string) db.IPackage {
 
 	return nil
 }
+
+func (t *testClient) Get(url string) (*http.Response, error) {
+	assert.Equal(t.t, t.wantURL, url)
+	return &http.Response{StatusCode: t.status, Body: io.NopCloser(strings.NewReader(t.body))}, nil
+}

+ 29 - 30
pkg/upgrade/sources_test.go

@@ -2,27 +2,24 @@ package upgrade
 
 import (
 	"fmt"
-	"io/ioutil"
-	"os"
 	"os/exec"
 	"strconv"
 	"testing"
 	"time"
 
 	aur "github.com/Jguer/aur"
-	"github.com/bradleyjkemp/cupaloy"
 	"github.com/stretchr/testify/assert"
 
 	alpm "github.com/Jguer/go-alpm/v2"
 
 	"github.com/Jguer/yay/v10/pkg/db/mock"
-	"github.com/Jguer/yay/v10/pkg/settings"
 	"github.com/Jguer/yay/v10/pkg/settings/exe"
 	"github.com/Jguer/yay/v10/pkg/vcs"
 )
 
 func Test_upAUR(t *testing.T) {
 	t.Parallel()
+
 	type args struct {
 		remote     []alpm.IPackage
 		aurdata    map[string]*aur.Pkg
@@ -72,16 +69,8 @@ func Test_upAUR(t *testing.T) {
 		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			rescueStdout := os.Stdout
-			r, w, _ := os.Pipe()
-			os.Stdout = w
 			got := UpAUR(tt.args.remote, tt.args.aurdata, tt.args.timeUpdate)
 			assert.EqualValues(t, tt.want, got)
-
-			w.Close()
-			out, _ := ioutil.ReadAll(r)
-			cupaloy.SnapshotT(t, out)
-			os.Stdout = rescueStdout
 		})
 	}
 }
@@ -110,19 +99,13 @@ func (r *MockRunner) Capture(cmd *exec.Cmd, timeout int64) (stdout, stderr strin
 
 func Test_upDevel(t *testing.T) {
 	t.Parallel()
-	var err error
-	config, err := settings.NewConfig("v0")
-	assert.NoError(t, err)
-
-	config.Runtime.CmdBuilder = config.CmdBuilder(&MockRunner{
-		Returned: []string{
-			"7f4c277ce7149665d1c79b76ca8fbb832a65a03b	HEAD",
-			"7f4c277ce7149665d1c79b76ca8fbb832a65a03b	HEAD",
-			"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	HEAD",
-			"cccccccccccccccccccccccccccccccccccccccc	HEAD",
-			"991c5b4146fd27f4aacf4e3111258a848934aaa1	HEAD",
-		},
-	})
+	returnValue := []string{
+		"7f4c277ce7149665d1c79b76ca8fbb832a65a03b	HEAD",
+		"7f4c277ce7149665d1c79b76ca8fbb832a65a03b	HEAD",
+		"aaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaaa	HEAD",
+		"cccccccccccccccccccccccccccccccccccccccc	HEAD",
+		"991c5b4146fd27f4aacf4e3111258a848934aaa1	HEAD",
+	}
 
 	type args struct {
 		remote  []alpm.IPackage
@@ -139,7 +122,11 @@ func Test_upDevel(t *testing.T) {
 			name: "No Updates",
 			args: args{
 				cached: vcs.InfoStore{
-					CmdBuilder: config.Runtime.CmdBuilder,
+					CmdBuilder: &exe.CmdBuilder{
+						Runner: &MockRunner{
+							Returned: returnValue,
+						},
+					},
 				},
 				remote: []alpm.IPackage{
 					&mock.Package{PName: "hello", PVersion: "2.0.0"},
@@ -158,7 +145,11 @@ func Test_upDevel(t *testing.T) {
 			finalLen: 3,
 			args: args{
 				cached: vcs.InfoStore{
-					CmdBuilder: config.Runtime.CmdBuilder,
+					CmdBuilder: &exe.CmdBuilder{
+						Runner: &MockRunner{
+							Returned: returnValue,
+						},
+					},
 					OriginsByPackage: map[string]vcs.OriginInfoByURL{
 						"hello": {
 							"github.com/Jguer/z.git": vcs.OriginInfo{
@@ -228,7 +219,11 @@ func Test_upDevel(t *testing.T) {
 			finalLen: 1,
 			args: args{
 				cached: vcs.InfoStore{
-					CmdBuilder: config.Runtime.CmdBuilder,
+					CmdBuilder: &exe.CmdBuilder{
+						Runner: &MockRunner{
+							Returned: returnValue,
+						},
+					},
 					OriginsByPackage: map[string]vcs.OriginInfoByURL{
 						"hello": {
 							"github.com/Jguer/d.git": vcs.OriginInfo{
@@ -249,7 +244,11 @@ func Test_upDevel(t *testing.T) {
 			finalLen: 1,
 			args: args{
 				cached: vcs.InfoStore{
-					CmdBuilder: config.Runtime.CmdBuilder,
+					CmdBuilder: &exe.CmdBuilder{
+						Runner: &MockRunner{
+							Returned: returnValue,
+						},
+					},
 					OriginsByPackage: map[string]vcs.OriginInfoByURL{
 						"hello": {
 							"github.com/Jguer/e.git": vcs.OriginInfo{
@@ -270,7 +269,7 @@ func Test_upDevel(t *testing.T) {
 		tt := tt
 		t.Run(tt.name, func(t *testing.T) {
 			t.Parallel()
-			config.Runtime.CmdBuilder.(*exe.CmdBuilder).Runner.(*MockRunner).t = t
+			tt.args.cached.CmdBuilder.(*exe.CmdBuilder).Runner.(*MockRunner).t = t
 			got := UpDevel(tt.args.remote, tt.args.aurdata, &tt.args.cached)
 			assert.ElementsMatch(t, tt.want.Up, got.Up)
 			assert.Equal(t, tt.finalLen, len(tt.args.cached.OriginsByPackage))