mage: Init packages once

`go list ./...` fails when run in parallel on Windows. This also applies to running `go test ./...` and `go list/...` so we serialize tests.
This commit is contained in:
Bjørn Erik Pedersen 2018-08-30 12:28:29 +02:00
parent 293e12355d
commit ea8ef573c6

View file

@ -12,6 +12,7 @@ import (
"path/filepath"
"runtime"
"strings"
"sync"
"time"
"github.com/magefile/mage/mg"
@ -98,7 +99,11 @@ func Check() {
fmt.Printf("Skip Check on %s\n", runtime.Version())
return
}
mg.Deps(Test386, Fmt, Vet)
mg.Deps(Test386)
mg.Deps(Fmt, Vet)
// don't run two tests in parallel, they saturate the CPUs anyway, and running two
// causes memory issues in CI.
mg.Deps(TestRace)
@ -161,18 +166,26 @@ func Fmt() error {
return nil
}
var pkgPrefixLen = len("github.com/gohugoio/hugo")
var (
pkgPrefixLen = len("github.com/gohugoio/hugo")
pkgs []string
pkgsInit sync.Once
)
func hugoPackages() ([]string, error) {
s, err := sh.Output(goexe, "list", "./...")
var err error
pkgsInit.Do(func() {
var s string
s, err = sh.Output(goexe, "list", "./...")
if err != nil {
return nil, err
return
}
pkgs := strings.Split(s, "\n")
pkgs = strings.Split(s, "\n")
for i := range pkgs {
pkgs[i] = "." + pkgs[i][pkgPrefixLen:]
}
return pkgs, nil
})
return pkgs, err
}
// Run golint linter