Documentation
¶
Overview ¶
Package testcli is a helper utility for testing command line applications (CLI) using the standard go testing framework.
Tests are created by populating a T structure and then passing it to the Run function. The T structure must contain at a minimum the command to be executed. The remaining items within the T structure are optional and have reasonable defaults in typical use cases.
For example within a "foo_test.go" file:
func TestFooVersion(t *testing.T) {
clt := testcli.T{
Cmd: exec.Cmd{
Path: "./foo",
Args: []string{"foo", "-v"},
},
TStdout: `^foo 1.7.2\n$`,
}
testcli.Run(t, clt)
}
func TestFooBadOption(t *testing.T) {
clt := testcli.T{
Cmd: exec.Cmd{
Path: "./foo",
Args: []string{"foo", "-z"},
},
TStderr: `(?m)^flag provided but not defined: -z$.*$`,
TExit: 2,
}
testcli.Run(t, clt)
}
A full example demontrating additional ways to use testcli is contained within the "cmd" folder of this package.
Index ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
Types ¶
type FT ¶ added in v1.0.0
type FT struct {
Path string // Path to file
TContent string // Regex to check against file contents
}
FT defines a file path and regex to check against the file contents.
type T ¶ added in v1.0.0
type T struct {
Cmd exec.Cmd // The command line details to execute
TStdout string // Regex to check against stdout
TStderr string // Regex to check against stderr
TFiles []FT // An optional array of output files to check
TExit int // The expected exit code
}
T defines an individual command line test case.