aboutsummaryrefslogtreecommitdiff
path: root/src/internal/testenv/exec.go
diff options
context:
space:
mode:
Diffstat (limited to 'src/internal/testenv/exec.go')
-rw-r--r--src/internal/testenv/exec.go16
1 files changed, 4 insertions, 12 deletions
diff --git a/src/internal/testenv/exec.go b/src/internal/testenv/exec.go
index 7f6ad5cac4..ebb70a1375 100644
--- a/src/internal/testenv/exec.go
+++ b/src/internal/testenv/exec.go
@@ -31,20 +31,12 @@ import (
// If exec is not supported, testenv.SyscallIsNotSupported will return true
// for the resulting error.
func MustHaveExec(t testing.TB) {
- tryExecOnce.Do(func() {
- tryExecErr = tryExec()
- })
- if tryExecErr != nil {
- t.Skipf("skipping test: cannot exec subprocess on %s/%s: %v", runtime.GOOS, runtime.GOARCH, tryExecErr)
+ if err := tryExec(); err != nil {
+ t.Skipf("skipping test: cannot exec subprocess on %s/%s: %v", runtime.GOOS, runtime.GOARCH, err)
}
}
-var (
- tryExecOnce sync.Once
- tryExecErr error
-)
-
-func tryExec() error {
+var tryExec = sync.OnceValue(func() error {
switch runtime.GOOS {
case "wasip1", "js", "ios":
default:
@@ -77,7 +69,7 @@ func tryExec() error {
cmd := exec.Command(exe, "-test.list=^$")
cmd.Env = origEnv
return cmd.Run()
-}
+})
var execPaths sync.Map // path -> error