mirror of
https://github.com/Jguer/yay
synced 2024-10-01 13:53:32 +00:00
ci(yay): add integration test framework (#2178)
* add integration test framework * fix integration tests * fix integration tests
This commit is contained in:
parent
39f0d4e9a1
commit
fdcf6ef664
8
.github/workflows/testing.yml
vendored
8
.github/workflows/testing.yml
vendored
|
@ -20,3 +20,11 @@ jobs:
|
||||||
run: /app/bin/golangci-lint run ./...
|
run: /app/bin/golangci-lint run ./...
|
||||||
- name: Run Build and Tests
|
- name: Run Build and Tests
|
||||||
run: make test
|
run: make test
|
||||||
|
- name: Run Integration Tests
|
||||||
|
continue-on-error: true
|
||||||
|
run: |
|
||||||
|
useradd -m yay &&
|
||||||
|
chown -R yay:yay . &&
|
||||||
|
cp -r ~/go/ /home/yay/go/ &&
|
||||||
|
chown -R yay:yay /home/yay/go/ &&
|
||||||
|
su yay -c "make test-integration"
|
||||||
|
|
|
@ -1,5 +1,5 @@
|
||||||
FROM docker.io/jguer/yay-builder:latest
|
FROM docker.io/jguer/yay-builder:latest
|
||||||
LABEL maintainer="Jguer,joaogg3 at google mail"
|
LABEL maintainer="Jguer,docker@jguer.space"
|
||||||
|
|
||||||
ARG VERSION
|
ARG VERSION
|
||||||
ARG PREFIX
|
ARG PREFIX
|
||||||
|
|
4
Makefile
4
Makefile
|
@ -53,6 +53,10 @@ test_lint: test lint
|
||||||
test:
|
test:
|
||||||
$(GO) test -race -covermode=atomic $(FLAGS) ./...
|
$(GO) test -race -covermode=atomic $(FLAGS) ./...
|
||||||
|
|
||||||
|
.PHONY: test-integration
|
||||||
|
test-integration:
|
||||||
|
$(GO) test -tags=integration $(FLAGS) ./...
|
||||||
|
|
||||||
.PHONY: build
|
.PHONY: build
|
||||||
build: $(BIN)
|
build: $(BIN)
|
||||||
|
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,4 +1,5 @@
|
||||||
FROM docker.io/jguer/yay-builder:latest
|
FROM docker.io/jguer/yay-builder:latest
|
||||||
|
LABEL maintainer="Jguer,docker@jguer.space"
|
||||||
|
|
||||||
ENV GO111MODULE=on
|
ENV GO111MODULE=on
|
||||||
WORKDIR /app
|
WORKDIR /app
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package completion
|
package completion
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package ialpm
|
package ialpm
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package dep
|
package dep
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package download
|
package download
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package download
|
package download
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
105
pkg/download/unified_integration_test.go
Normal file
105
pkg/download/unified_integration_test.go
Normal file
|
@ -0,0 +1,105 @@
|
||||||
|
//go:build integration
|
||||||
|
// +build integration
|
||||||
|
|
||||||
|
package download
|
||||||
|
|
||||||
|
import (
|
||||||
|
"context"
|
||||||
|
"net/http"
|
||||||
|
"os"
|
||||||
|
"strings"
|
||||||
|
"testing"
|
||||||
|
|
||||||
|
"github.com/stretchr/testify/assert"
|
||||||
|
|
||||||
|
"github.com/Jguer/aur"
|
||||||
|
|
||||||
|
mockaur "github.com/Jguer/yay/v12/pkg/dep/mock"
|
||||||
|
"github.com/Jguer/yay/v12/pkg/settings/exe"
|
||||||
|
"github.com/Jguer/yay/v12/pkg/settings/parser"
|
||||||
|
"github.com/Jguer/yay/v12/pkg/text"
|
||||||
|
)
|
||||||
|
|
||||||
|
func TestIntegrationPKGBUILDReposDefinedDBClone(t *testing.T) {
|
||||||
|
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/linux", "yay-bin", "yay-git"}
|
||||||
|
|
||||||
|
testLogger := text.NewLogger(os.Stdout, os.Stderr, strings.NewReader(""), true, "test")
|
||||||
|
cmdRunner := &exe.OSRunner{Log: testLogger}
|
||||||
|
cmdBuilder := &exe.CmdBuilder{
|
||||||
|
Runner: cmdRunner,
|
||||||
|
GitBin: "git",
|
||||||
|
GitFlags: []string{},
|
||||||
|
Log: testLogger,
|
||||||
|
}
|
||||||
|
searcher := &testDBSearcher{
|
||||||
|
absPackagesDB: map[string]string{"linux": "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/linux": true, "yay-bin": true, "yay-git": true}, cloned)
|
||||||
|
}
|
||||||
|
|
||||||
|
func TestIntegrationPKGBUILDReposNotExist(t *testing.T) {
|
||||||
|
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"}
|
||||||
|
testLogger := text.NewLogger(os.Stdout, os.Stderr, strings.NewReader(""), true, "test")
|
||||||
|
cmdRunner := &exe.OSRunner{Log: testLogger}
|
||||||
|
cmdBuilder := &exe.CmdBuilder{
|
||||||
|
Runner: cmdRunner,
|
||||||
|
GitBin: "git",
|
||||||
|
GitFlags: []string{},
|
||||||
|
Log: testLogger,
|
||||||
|
}
|
||||||
|
|
||||||
|
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.Error(t, err)
|
||||||
|
assert.EqualValues(t, map[string]bool{"yay-bin": true, "yay-git": true}, cloned)
|
||||||
|
}
|
||||||
|
|
||||||
|
// GIVEN 2 aur packages and 1 in repo
|
||||||
|
// WHEN defining as specified targets
|
||||||
|
// THEN all aur be found and cloned
|
||||||
|
func TestIntegrationPKGBUILDFull(t *testing.T) {
|
||||||
|
mockClient := &mockaur.MockAUR{
|
||||||
|
GetFn: func(ctx context.Context, query *aur.Query) ([]aur.Pkg, error) {
|
||||||
|
return []aur.Pkg{{}}, nil
|
||||||
|
},
|
||||||
|
}
|
||||||
|
|
||||||
|
targets := []string{"core/linux", "aur/yay-bin", "yay-git"}
|
||||||
|
searcher := &testDBSearcher{
|
||||||
|
absPackagesDB: map[string]string{"linux": "core"},
|
||||||
|
}
|
||||||
|
|
||||||
|
fetched, err := PKGBUILDs(searcher, mockClient, &http.Client{},
|
||||||
|
targets, "https://aur.archlinux.org", parser.ModeAny)
|
||||||
|
|
||||||
|
assert.NoError(t, err)
|
||||||
|
|
||||||
|
for _, target := range targets {
|
||||||
|
assert.Contains(t, fetched, target)
|
||||||
|
assert.NotEmpty(t, fetched[target])
|
||||||
|
}
|
||||||
|
}
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package download
|
package download
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
@ -5,6 +8,7 @@ import (
|
||||||
"net/http"
|
"net/http"
|
||||||
"os"
|
"os"
|
||||||
"path/filepath"
|
"path/filepath"
|
||||||
|
"strings"
|
||||||
"testing"
|
"testing"
|
||||||
|
|
||||||
"github.com/stretchr/testify/assert"
|
"github.com/stretchr/testify/assert"
|
||||||
|
@ -15,6 +19,7 @@ import (
|
||||||
mockaur "github.com/Jguer/yay/v12/pkg/dep/mock"
|
mockaur "github.com/Jguer/yay/v12/pkg/dep/mock"
|
||||||
"github.com/Jguer/yay/v12/pkg/settings/exe"
|
"github.com/Jguer/yay/v12/pkg/settings/exe"
|
||||||
"github.com/Jguer/yay/v12/pkg/settings/parser"
|
"github.com/Jguer/yay/v12/pkg/settings/parser"
|
||||||
|
"github.com/Jguer/yay/v12/pkg/text"
|
||||||
)
|
)
|
||||||
|
|
||||||
// GIVEN 2 aur packages and 1 in repo
|
// GIVEN 2 aur packages and 1 in repo
|
||||||
|
@ -31,6 +36,8 @@ func TestPKGBUILDReposDefinedDBPull(t *testing.T) {
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
|
|
||||||
|
testLogger := text.NewLogger(os.Stdout, os.Stderr, strings.NewReader(""), true, "test")
|
||||||
|
|
||||||
os.MkdirAll(filepath.Join(dir, "yay", ".git"), 0o777)
|
os.MkdirAll(filepath.Join(dir, "yay", ".git"), 0o777)
|
||||||
|
|
||||||
targets := []string{"core/yay", "yay-bin", "yay-git"}
|
targets := []string{"core/yay", "yay-bin", "yay-git"}
|
||||||
|
@ -42,6 +49,7 @@ func TestPKGBUILDReposDefinedDBPull(t *testing.T) {
|
||||||
Runner: cmdRunner,
|
Runner: cmdRunner,
|
||||||
GitBin: "/usr/local/bin/git",
|
GitBin: "/usr/local/bin/git",
|
||||||
GitFlags: []string{},
|
GitFlags: []string{},
|
||||||
|
Log: testLogger,
|
||||||
},
|
},
|
||||||
}
|
}
|
||||||
searcher := &testDBSearcher{
|
searcher := &testDBSearcher{
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package intrange
|
package intrange
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package news
|
package news
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package pgp
|
package pgp
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package query
|
package query
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package query
|
package query
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package query
|
package query
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package settings
|
package settings
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package parser
|
package parser
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package settings_test
|
package settings_test
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package text
|
package text
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package upgrade
|
package upgrade
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package upgrade
|
package upgrade
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package upgrade
|
package upgrade
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package vcs
|
package vcs
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
|
@ -1,3 +1,6 @@
|
||||||
|
//go:build !integration
|
||||||
|
// +build !integration
|
||||||
|
|
||||||
package main
|
package main
|
||||||
|
|
||||||
import (
|
import (
|
||||||
|
|
Loading…
Reference in a new issue