testutil

package
v2.10.2 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Apr 22, 2024 License: AGPL-3.0 Imports: 29 Imported by: 0

Documentation

Index

Constants

View Source
const (
	WaitShort     = 10 * time.Second
	WaitMedium    = 15 * time.Second
	WaitLong      = 25 * time.Second
	WaitSuperLong = 60 * time.Second
)

Constants for timing out operations, usable for creating contexts that timeout or in require.Eventually.

View Source
const (
	IntervalFast   = 25 * time.Millisecond
	IntervalMedium = 250 * time.Millisecond
	IntervalSlow   = time.Second
)

Constants for delaying repeated operations, e.g. in require.Eventually.

Variables

This section is empty.

Functions

func Context

func Context(t *testing.T, dur time.Duration) context.Context

func CreateTemp

func CreateTemp(t *testing.T, dir, pattern string) *os.File

CreateTemp is a convenience function for creating a temporary file, like os.CreateTemp, but it also registers a cleanup function to close and remove the file.

func Eventually

func Eventually(ctx context.Context, t testing.TB, condition func(ctx context.Context) (done bool), tick time.Duration, msgAndArgs ...interface{}) (done bool)

Eventually is like require.Eventually except it allows passing a context into the condition. It is safe to use with `require.*`.

If ctx times out, the test will fail, but not immediately. It is the caller's responsibility to exit early if required.

It is the caller's responsibility to ensure that ctx has a deadline or timeout set. Eventually will panic if this is not the case in order to avoid potentially waiting forever.

condition is not run in a goroutine; use the provided context argument for cancellation if required.

func GenerateTLSCertificate

func GenerateTLSCertificate(t testing.TB, commonName string) tls.Certificate

func Go added in v2.4.0

func Go(t *testing.T, fn func()) (done <-chan struct{})

Go runs fn in a goroutine and waits until fn has completed before test completion. Done is returned for optionally waiting for fn to exit.

func InCI

func InCI() bool

func MustRandString added in v2.7.0

func MustRandString(t *testing.T, n int) string

MustRandString returns a random string of length n.

func PromCounterHasValue added in v2.8.0

func PromCounterHasValue(t testing.TB, metrics []*dto.MetricFamily, value float64, name string, label ...string) bool

func PromGaugeHasValue added in v2.8.0

func PromGaugeHasValue(t testing.TB, metrics []*dto.MetricFamily, value float64, name string, label ...string) bool

func RaceEnabled

func RaceEnabled() bool

RaceEnabled returns whether the race detector is enabled. This is a constant at compile time. It should be used to conditionally skip tests that are known to be sensitive to being run with the race detector enabled. Please use sparingly and as a last resort.

func RandomPort added in v2.9.0

func RandomPort(t *testing.T) int

RandomPort is a helper function to find a free random port. Note that the OS may reallocate the port very quickly, so this is not _guaranteed_.

func RandomPortNoListen added in v2.9.0

func RandomPortNoListen(*testing.T) uint16

RandomPortNoListen returns a random port in the ephemeral port range. Does not attempt to listen and close to find a port as the OS may reallocate the port very quickly.

func RequireRecvCtx added in v2.4.0

func RequireRecvCtx[A any](ctx context.Context, t testing.TB, c <-chan A) (a A)

func RequireSendCtx added in v2.7.1

func RequireSendCtx[A any](ctx context.Context, t testing.TB, c chan<- A, a A)

func SkipIfNotTiming

func SkipIfNotTiming(t *testing.T)

func TempFile

func TempFile(t *testing.T, dir, pattern string) string

TempFile returns the name of a temporary file that does not exist.

Types

type OAuth2Config

type OAuth2Config struct {
	Token           *oauth2.Token
	TokenSourceFunc OAuth2TokenSource
}

func (*OAuth2Config) AuthCodeURL

func (*OAuth2Config) AuthCodeURL(state string, _ ...oauth2.AuthCodeOption) string

func (*OAuth2Config) Do added in v2.7.0

func (*OAuth2Config) Exchange

func (*OAuth2Config) TokenSource

func (c *OAuth2Config) TokenSource(_ context.Context, _ *oauth2.Token) oauth2.TokenSource

type OAuth2TokenSource

type OAuth2TokenSource func() (*oauth2.Token, error)

func (OAuth2TokenSource) Token

func (o OAuth2TokenSource) Token() (*oauth2.Token, error)

type TerminalReader added in v2.2.0

type TerminalReader struct {
	// contains filtered or unexported fields
}

TerminalReader emulates a terminal and allows matching output. It's important in cases where we can get control sequences to parse them correctly, and keep the state of the terminal across the lifespan of the PTY, since some control sequences are relative to the current cursor position.

func NewTerminalReader added in v2.2.0

func NewTerminalReader(t *testing.T, r io.Reader) *TerminalReader

func (*TerminalReader) ReadUntil added in v2.2.0

func (tr *TerminalReader) ReadUntil(ctx context.Context, matcher func(line string) bool) (retErr error)

ReadUntil emulates a terminal and reads one byte at a time until the matcher returns true or the context expires. If the matcher is nil, read until EOF. The PTY must be sized to 80x80 or there could be unexpected results.

func (*TerminalReader) ReadUntilString added in v2.2.0

func (tr *TerminalReader) ReadUntilString(ctx context.Context, want string) error

ReadUntilString emulates a terminal and reads one byte at a time until we either see the string we want, or the context expires. The PTY must be sized to 80x80 or there could be unexpected results.

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL