testenv

Imports

Imports #

"bytes"
"errors"
"flag"
"fmt"
"internal/cfg"
"internal/goarch"
"internal/platform"
"os"
"os/exec"
"path/filepath"
"runtime"
"strconv"
"strings"
"sync"
"testing"
"errors"
"io/fs"
"os"
"fmt"
"os"
"path/filepath"
"runtime"
"sync"
"errors"
"io/fs"
"syscall"
"errors"
"os"
"path/filepath"
"sync"
"syscall"
"context"
"errors"
"fmt"
"os"
"os/exec"
"runtime"
"strconv"
"strings"
"sync"
"testing"
"time"

Constants & Variables

Sigquit var #

Sigquit is the signal to send to kill a hanging subprocess. On Unix we send SIGQUIT, but on non-Unix we only have os.Kill.

var Sigquit = os.Kill

Sigquit var #

Sigquit is the signal to send to kill a hanging subprocess. Send SIGQUIT to get a stack trace.

var Sigquit = syscall.SIGQUIT

exePath var #

var exePath = *ast.CallExpr

execPaths var #

var execPaths sync.Map

findGOROOT var #

var findGOROOT = *ast.CallExpr

flaky var #

var flaky = *ast.CallExpr

goTool var #

var goTool = *ast.CallExpr

hasCgo var #

var hasCgo = *ast.CallExpr

origEnv var #

Save the original environment during init for use in checks. A test binary may modify its environment before calling HasExec to change its behavior (such as mimicking a command-line tool), and that modified environment might cause environment checks to behave erratically.

var origEnv = *ast.CallExpr

tryExec var #

var tryExec = *ast.CallExpr

tryGoBuild var #

var tryGoBuild = *ast.CallExpr

Functions

Builder function #

Builder reports the name of the builder running this test (for example, "linux-amd64" or "windows-386-gce"). If the test is not running on the build infrastructure, Builder returns the empty string.

func Builder() string

CPUIsSlow function #

CPUIsSlow reports whether the CPU running the test is suspected to be slow.

func CPUIsSlow() bool

CPUProfilingBroken function #

CPUProfilingBroken returns true if CPU profiling has known issues on this platform.

func CPUProfilingBroken() bool

CleanCmdEnv function #

CleanCmdEnv will fill cmd.Env with the environment, excluding certain variables that could modify the behavior of the Go tools such as GODEBUG and GOTRACEBACK. If the caller wants to set cmd.Dir, set it before calling this function, so PWD will be set correctly in the environment.

func CleanCmdEnv(cmd *exec.Cmd) *exec.Cmd

Command function #

Command is like exec.Command, but applies the same changes as testenv.CommandContext (with a default Context).

func Command(t testing.TB, name string, args ...string) *exec.Cmd

CommandContext function #

CommandContext is like exec.CommandContext, but: - skips t if the platform does not support os/exec, - sends SIGQUIT (if supported by the platform) instead of SIGKILL in its Cancel function - if the test has a deadline, adds a Context timeout and WaitDelay for an arbitrary grace period before the test's deadline expires, - fails the test if the command does not complete before the test's deadline, and - sets a Cleanup function that verifies that the test did not leak a subprocess.

func CommandContext(t testing.TB, ctx context.Context, name string, args ...string) *exec.Cmd

Executable function #

Executable is a wrapper around [MustHaveExec] and [os.Executable]. It returns the path name for the executable that started the current process, or skips the test if the current system can't start new processes, or fails the test if the path can not be obtained.

func Executable(t testing.TB) string

GOROOT function #

GOROOT reports the path to the directory containing the root of the Go project source tree. This is normally equivalent to runtime.GOROOT, but works even if the test binary was built with -trimpath and cannot exec 'go env GOROOT'. If GOROOT cannot be found, GOROOT skips t if t is non-nil, or panics otherwise.

func GOROOT(t testing.TB) string

GoTool function #

GoTool reports the path to the Go tool.

func GoTool() (string, error)

GoToolPath function #

GoToolPath reports the path to the Go tool. It is a convenience wrapper around GoTool. If the tool is unavailable GoToolPath calls t.Skip. If the tool should be available and isn't, GoToolPath calls t.Fatal.

func GoToolPath(t testing.TB) string

HasCGO function #

HasCGO reports whether the current system can use cgo.

func HasCGO() bool

HasExternalNetwork function #

HasExternalNetwork reports whether the current system can use external (non-localhost) networks.

func HasExternalNetwork() bool

HasGoBuild function #

HasGoBuild reports whether the current system can build programs with “go build” and then run them with os.StartProcess or exec.Command.

func HasGoBuild() bool

HasGoRun function #

HasGoRun reports whether the current system can run programs with “go run”.

func HasGoRun() bool

HasParallelism function #

HasParallelism reports whether the current system can execute multiple threads in parallel. There is a copy of this function in cmd/dist/test.go.

func HasParallelism() bool

MustHaveBuildMode function #

MustHaveBuildMode reports whether the current system can build programs in the given build mode. If not, MustHaveBuildMode calls t.Skip with an explanation.

func MustHaveBuildMode(t testing.TB, buildmode string)

MustHaveCGO function #

MustHaveCGO calls t.Skip if cgo is not available.

func MustHaveCGO(t testing.TB)

MustHaveExec function #

MustHaveExec checks that the current system can start new processes using os.StartProcess or (more commonly) exec.Command. If not, MustHaveExec calls t.Skip with an explanation. On some platforms MustHaveExec checks for exec support by re-executing the current executable, which must be a binary built by 'go test'. We intentionally do not provide a HasExec function because of the risk of inappropriate recursion in TestMain functions. To check for exec support outside of a test, just try to exec the command. If exec is not supported, testenv.SyscallIsNotSupported will return true for the resulting error.

func MustHaveExec(t testing.TB)

MustHaveExecPath function #

MustHaveExecPath checks that the current system can start the named executable using os.StartProcess or (more commonly) exec.Command. If not, MustHaveExecPath calls t.Skip with an explanation.

func MustHaveExecPath(t testing.TB, path string)

MustHaveExternalNetwork function #

MustHaveExternalNetwork checks that the current system can use external (non-localhost) networks. If not, MustHaveExternalNetwork calls t.Skip with an explanation.

func MustHaveExternalNetwork(t testing.TB)

MustHaveGoBuild function #

MustHaveGoBuild checks that the current system can build programs with “go build” and then run them with os.StartProcess or exec.Command. If not, MustHaveGoBuild calls t.Skip with an explanation.

func MustHaveGoBuild(t testing.TB)

MustHaveGoRun function #

MustHaveGoRun checks that the current system can run programs with “go run”. If not, MustHaveGoRun calls t.Skip with an explanation.

func MustHaveGoRun(t testing.TB)

MustHaveParallelism function #

MustHaveParallelism checks that the current system can execute multiple threads in parallel. If not, MustHaveParallelism calls t.Skip with an explanation.

func MustHaveParallelism(t testing.TB)

MustHaveSource function #

MustHaveSource checks that the entire source tree is available under GOROOT. If not, it calls t.Skip with an explanation.

func MustHaveSource(t testing.TB)

MustInternalLinkPIE function #

MustInternalLinkPIE checks whether the current system can link PIE binary using internal linking. If not, MustInternalLinkPIE calls t.Skip with an explanation.

func MustInternalLinkPIE(t testing.TB)

OptimizationOff function #

OptimizationOff reports whether optimization is disabled.

func OptimizationOff() bool

OptimizationOff function #

OptimizationOff reports whether optimization is disabled.

func OptimizationOff() bool

ParallelOn64Bit function #

ParallelOn64Bit calls t.Parallel() unless there is a case that cannot be parallel. This function should be used when it is necessary to avoid t.Parallel on 32-bit machines, typically because the test uses lots of memory.

func ParallelOn64Bit(t *testing.T)

SkipFlaky function #

func SkipFlaky(t testing.TB, issue int)

SkipFlakyNet function #

func SkipFlakyNet(t testing.TB)

SkipIfOptimizationOff function #

SkipIfOptimizationOff skips t if optimization is disabled.

func SkipIfOptimizationOff(t testing.TB)

SkipIfShortAndSlow function #

SkipIfShortAndSlow skips t if -short is set and the CPU running the test is suspected to be slow. (This is useful for CPU-intensive tests that otherwise complete quickly.)

func SkipIfShortAndSlow(t testing.TB)

SyscallIsNotSupported function #

SyscallIsNotSupported reports whether err may indicate that a system call is not supported by the current platform or execution environment.

func SyscallIsNotSupported(err error) bool

WriteImportcfg function #

WriteImportcfg writes an importcfg file used by the compiler or linker to dstPath containing entries for the file mappings in packageFiles, as well as for the packages transitively imported by the package(s) in pkgs. pkgs may include any package pattern that is valid to pass to 'go list', so it may also be a list of Go source files all in the same directory.

func WriteImportcfg(t testing.TB, dstPath string, packageFiles map[string]string, pkgs ...string)

syscallIsNotSupported function #

func syscallIsNotSupported(err error) bool

syscallIsNotSupported function #

func syscallIsNotSupported(err error) bool

Generated with Arrow