mirror of
https://code.forgejo.org/forgejo/runner.git
synced 2025-08-06 17:40:58 +00:00
Only changes test files. --- - remove tests specific to running on a host with no container they are the same as with the containers (TestRunEventHostEnvironment) - prefix the name of the tests with a distinctive name to more easily run them together - use code.forgejo.org/oci images whereever possible - remove some tests that are either - difficult to understand (ancient bugs) - not yet well understood (related to reusable workflows) - depend on github (generation of workflows to be run on the fly e.g. updateTestIfWorkflow) - fix the TestSanitizeNetworkAlias tests that were not run and make them easier to debug - disable tests of options that are forbidden in Forgejo Actions (testdata/container-hostname/push.yml) Reviewed-on: https://code.forgejo.org/forgejo/act/pulls/202 Reviewed-by: Michael Kriese <michael.kriese@gmx.de> Co-authored-by: Earl Warren <contact@earl-warren.org> Co-committed-by: Earl Warren <contact@earl-warren.org>
77 lines
1.5 KiB
Go
77 lines
1.5 KiB
Go
package runner
|
|
|
|
import (
|
|
"archive/tar"
|
|
"bytes"
|
|
"context"
|
|
"io"
|
|
"os"
|
|
"testing"
|
|
|
|
"github.com/stretchr/testify/assert"
|
|
)
|
|
|
|
//nolint:gosec
|
|
func TestActionCache(t *testing.T) {
|
|
a := assert.New(t)
|
|
cache := &GoGitActionCache{
|
|
Path: os.TempDir(),
|
|
}
|
|
ctx := context.Background()
|
|
cacheDir := "nektos/act-test-actions"
|
|
repo := "https://code.forgejo.org/forgejo/act-test-actions"
|
|
refs := []struct {
|
|
Name string
|
|
CacheDir string
|
|
Repo string
|
|
Ref string
|
|
}{
|
|
{
|
|
Name: "Fetch Branch Name",
|
|
CacheDir: cacheDir,
|
|
Repo: repo,
|
|
Ref: "main",
|
|
},
|
|
{
|
|
Name: "Fetch Branch Name Absolutely",
|
|
CacheDir: cacheDir,
|
|
Repo: repo,
|
|
Ref: "refs/heads/main",
|
|
},
|
|
{
|
|
Name: "Fetch HEAD",
|
|
CacheDir: cacheDir,
|
|
Repo: repo,
|
|
Ref: "HEAD",
|
|
},
|
|
{
|
|
Name: "Fetch Sha",
|
|
CacheDir: cacheDir,
|
|
Repo: repo,
|
|
Ref: "de984ca37e4df4cb9fd9256435a3b82c4a2662b1",
|
|
},
|
|
}
|
|
for _, c := range refs {
|
|
t.Run(c.Name, func(t *testing.T) {
|
|
sha, err := cache.Fetch(ctx, c.CacheDir, c.Repo, c.Ref, "")
|
|
if !a.NoError(err) || !a.NotEmpty(sha) {
|
|
return
|
|
}
|
|
atar, err := cache.GetTarArchive(ctx, c.CacheDir, sha, "js")
|
|
if !a.NoError(err) || !a.NotEmpty(atar) {
|
|
return
|
|
}
|
|
mytar := tar.NewReader(atar)
|
|
th, err := mytar.Next()
|
|
if !a.NoError(err) || !a.NotEqual(0, th.Size) {
|
|
return
|
|
}
|
|
buf := &bytes.Buffer{}
|
|
// G110: Potential DoS vulnerability via decompression bomb (gosec)
|
|
_, err = io.Copy(buf, mytar)
|
|
a.NoError(err)
|
|
str := buf.String()
|
|
a.NotEmpty(str)
|
|
})
|
|
}
|
|
}
|