icmd

package
v1.1.0 Latest Latest
Warning

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

Go to latest
Published: Aug 23, 2017 License: Apache-2.0 Imports: 11 Imported by: 105

Documentation

Overview

Package icmd executes binaries and provides convenient assertions for testing the results.

Index

Examples

Constants

View Source
const None string = "[NOTHING]"

None is a token to inform Result.Assert that the output should be empty

Variables

View Source
var Success = Expected{}

Success is the default expected result. A Success result is one with a 0 ExitCode.

Functions

This section is empty.

Types

type Cmd

type Cmd struct {
	Command []string
	Timeout time.Duration
	Stdin   io.Reader
	Stdout  io.Writer
	Dir     string
	Env     []string
}

Cmd contains the arguments and options for a process to run as part of a test suite.

func Command

func Command(command string, args ...string) Cmd

Command create a simple Cmd with the specified command and arguments

type CmdOp added in v1.1.0

type CmdOp func(*Cmd)

CmdOp is an operation which modified a Cmd structure used to execute commands

type Expected

type Expected struct {
	ExitCode int
	Timeout  bool
	Error    string
	Out      string
	Err      string
}

Expected is the expected output from a Command. This struct is compared to a Result struct by Result.Assert().

type Result

type Result struct {
	Cmd      *exec.Cmd
	ExitCode int
	Error    error
	// Timeout is true if the command was killed because it ran for too long
	Timeout bool
	// contains filtered or unexported fields
}

Result stores the result of running a command

func RunCmd

func RunCmd(cmd Cmd, cmdOperators ...CmdOp) *Result

RunCmd runs a command and returns a Result

Example
result := RunCmd(Command("cat", "/does/not/exist"))
result.Assert(t, Expected{
	ExitCode: 1,
	Err:      "cat: /does/not/exist: No such file or directory",
})
Output:

func RunCommand

func RunCommand(command string, args ...string) *Result

RunCommand runs a command with default options, and returns a result

Example
result := RunCommand("bash", "-c", "echo all good")
result.Assert(t, Success)
Output:

func StartCmd

func StartCmd(cmd Cmd) *Result

StartCmd starts a command, but doesn't wait for it to finish

func WaitOnCmd

func WaitOnCmd(timeout time.Duration, result *Result) *Result

WaitOnCmd waits for a command to complete. If timeout is non-nil then only wait until the timeout.

func (*Result) Assert

func (r *Result) Assert(t testingT, exp Expected) *Result

Assert compares the Result against the Expected struct, and fails the test if any of the expectations are not met.

func (*Result) Combined

func (r *Result) Combined() string

Combined returns the stdout and stderr combined into a single string

func (*Result) Compare

func (r *Result) Compare(exp Expected) error

Compare returns a formatted error with the command, stdout, stderr, exit code, and any failed expectations nolint: gocyclo

func (*Result) Stderr

func (r *Result) Stderr() string

Stderr returns the stderr of the process as a string

func (*Result) Stdout

func (r *Result) Stdout() string

Stdout returns the stdout of the process as a string

func (*Result) String

func (r *Result) String() string

Jump to

Keyboard shortcuts

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