testutil

package
v0.10.9 Latest Latest
Warning

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

Go to latest
Published: May 12, 2022 License: Unlicense Imports: 7 Imported by: 0

Documentation

Overview

Package testutil contains utilities for common testing patterns.

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func AssertErrorMsg

func AssertErrorMsg(t testing.TB, msg string, err error) (ok bool)

AssertErrorMsg asserts that the error is not nil and that its message is equal to msg. If msg is an empty string, AssertErrorMsg asserts that the error is nil instead.

func AssertMarshalText

func AssertMarshalText(t testing.TB, s string, v encoding.TextMarshaler) (ok bool)

AssertMarshalText checks that the implementation of v's MarshalText works in all situations and results in the string s. v must be a pointer.

See https://github.com/dominikh/go-tools/issues/911.

func AssertUnmarshalText

func AssertUnmarshalText(t testing.TB, s string, v encoding.TextUnmarshaler) (ok bool)

AssertUnmarshalText checks that the implementation of v's UnmarshalText works in all situations and results in a value deeply equal to want.

func CleanupAndRequireSuccess

func CleanupAndRequireSuccess(t testing.TB, f func() (err error))

CleanupAndRequireSuccess sets a cleanup function which checks the error returned by f and fails the test using t if there is one.

Types

type PanicT added in v0.10.7

type PanicT struct{}

PanicT can be used with the helpers from package require in cases when testing.T and similar standard test helpers aren't safe for use, e.g. stub HTTP handlers and goroutines.

While this type also implements assert.TestingT, prefer to use require helper functions, since this helper panics, which immediately fails the test.

Example
package main

import (
	"fmt"
	"strings"

	"github.com/AdguardTeam/golibs/testutil"
	"github.com/stretchr/testify/require"
)

func main() {
	sigChan := make(chan struct{})
	catchf := func(substr, msg string) {
		caught := fmt.Sprintf("%v", recover())

		// Check against the OS-independent part of the test failure message.
		fmt.Printf("%s: %t\n", msg, strings.Contains(caught, substr))

		sigChan <- struct{}{}
	}

	t := testutil.PanicT{}

	go func() {
		defer catchf("Should be true", "contains meaningful message")

		require.True(t, false)
	}()
	<-sigChan

	go func() {
		defer catchf("test failed", "contains a test failure")

		t.FailNow()
	}()
	<-sigChan

}
Output:


contains meaningful message: true
contains a test failure: true

func (PanicT) Errorf added in v0.10.7

func (PanicT) Errorf(format string, args ...interface{})

Errorf implements the require.TestingT interface for PanicT. It panics with an error with the given format.

func (PanicT) FailNow added in v0.10.7

func (PanicT) FailNow()

FailNow implements the require.TestingT interface for PanicT. It is assumed that it will never actually be called, since Errorf panics.

Jump to

Keyboard shortcuts

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