...

Package fftest

import "github.com/peterbourgon/ff/v3/fftest"
Overview
Index

Overview ▾

Package fftest provides unit test helpers.

func Compare

func Compare(t *testing.T, want, have *Vars)

Compare one set of vars with another and t.Error on any difference.

func TempFile

func TempFile(t *testing.T, content string) (filename string, cleanup func())

TempFile uses ioutil.TempFile to create a temporary file with the given content. Use the cleanup func to remove the file.

type StringSlice

StringSlice is a flag.Value that collects each Set string into a slice, allowing for repeated flags.

type StringSlice []string

func (*StringSlice) Set

func (ss *StringSlice) Set(s string) error

Set implements flag.Value and appends the string to the slice.

func (*StringSlice) String

func (ss *StringSlice) String() string

String implements flag.Value and returns the list of strings, or "..." if no strings have been added.

type Vars

Vars are a common set of variables used for testing.

type Vars struct {
    S string
    I int
    F float64
    B bool
    D time.Duration
    X StringSlice

    // ParseError should be assigned as the result of Parse in tests.
    ParseError error

    // If a test case expects an input to generate a parse error,
    // it can specify that error here. The Compare helper will
    // look for it using errors.Is.
    WantParseErrorIs error

    // If a test case expects an input to generate a parse error,
    // it can specify part of that error string here. The Compare
    // helper will look for it using strings.Contains.
    WantParseErrorString string
}

func DefaultVars

func DefaultVars(fs *flag.FlagSet) *Vars

DefaultVars registers a predefined set of variables to the flag set. Tests can call parse on the flag set with a variety of flags, config files, and env vars, and check the resulting effect on the vars.

func NonzeroDefaultVars

func NonzeroDefaultVars(fs *flag.FlagSet) *Vars

NonzeroDefaultVars is like DefaultVars, but provides each primitive flag with a nonzero default value. This is useful for tests that explicitly provide a zero value for the type.

func Pair

func Pair() (*flag.FlagSet, *Vars)

Pair defines and returns an empty flag set and vars assigned to it.