Documentation ¶
Overview ¶
Package testenv contains helper functions for skipping tests based on which tools are present in the environment.
Index ¶
- Variables
- func Command(t testing.TB, name string, args ...string) *exec.Cmd
- func CommandContext(t testing.TB, ctx context.Context, name string, args ...string) *exec.Cmd
- func Deadline(t testing.TB) (time.Time, bool)
- func ExitIfSmallMachine()
- func GOROOT(t testing.TB) string
- func Go1Point() int
- func HasExec() bool
- func NeedsExec(t testing.TB)
- func NeedsGo1Point(t testing.TB, x int)
- func NeedsGoBuild(t testing.TB)
- func NeedsGoPackages(t testing.TB)
- func NeedsGoPackagesEnv(t testing.TB, env []string)
- func NeedsTool(t testing.TB, tool string)
- func SkipAfterGo1Point(t testing.TB, x int)
- func WriteImportcfg(t testing.TB, dstPath string, additionalPackageFiles map[string]string)
Constants ¶
This section is empty.
Variables ¶
var Sigquit = syscall.SIGQUIT
Sigquit is the signal to send to kill a hanging subprocess. Send SIGQUIT to get a stack trace.
Functions ¶
func Command ¶
Command is like exec.Command, but applies the same changes as testenv.CommandContext (with a default Context).
func CommandContext ¶
CommandContext is like exec.CommandContext, but:
- skips t if the platform does not support os/exec,
- if supported, sends SIGQUIT instead of SIGKILL in its Cancel function
- if the test has a deadline, adds a Context timeout and (if supported) WaitDelay for an arbitrary grace period before the test's deadline expires,
- if Cmd has the Cancel field, fails the test if the command is canceled due to the test's deadline, and
- if supported, sets a Cleanup function that verifies that the test did not leak a subprocess.
func Deadline ¶
Deadline returns the deadline of t, if known, using the Deadline method added in Go 1.15.
func ExitIfSmallMachine ¶
func ExitIfSmallMachine()
ExitIfSmallMachine emits a helpful diagnostic and calls os.Exit(0) if the current machine is a builder known to have scarce resources.
It should be called from within a TestMain function.
func GOROOT ¶
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.
If GOROOT cannot be found, GOROOT skips t if t is non-nil, or panics otherwise.
func HasExec ¶
func HasExec() bool
HasExec reports whether the current system can start new processes using os.StartProcess or (more commonly) exec.Command.
func NeedsExec ¶
NeedsExec checks that the current system can start new processes using os.StartProcess or (more commonly) exec.Command. If not, NeedsExec calls t.Skip with an explanation.
func NeedsGo1Point ¶
NeedsGo1Point skips t if the Go version used to run the test is older than 1.x.
func NeedsGoBuild ¶
NeedsGoBuild skips t if the current system can't build programs with “go build” and then run them with os.StartProcess or exec.Command. Android doesn't have the userspace go build needs to run, and js/wasm doesn't support running subprocesses.
func NeedsGoPackages ¶
NeedsGoPackages skips t if the go/packages driver (or 'go' tool) implied by the current process environment is not present in the path.
func NeedsGoPackagesEnv ¶
NeedsGoPackagesEnv skips t if the go/packages driver (or 'go' tool) implied by env is not present in the path.
func NeedsTool ¶
NeedsTool skips t if the named tool is not present in the path. As a special case, "cgo" means "go" is present and can compile cgo programs.
func SkipAfterGo1Point ¶
SkipAfterGo1Point skips t if the Go version used to run the test is newer than 1.x.
func WriteImportcfg ¶
WriteImportcfg writes an importcfg file used by the compiler or linker to dstPath containing entries for the packages in std and cmd in addition to the package to package file mappings in additionalPackageFiles.
Types ¶
This section is empty.