exec

package
v1.3.0 Latest Latest
Warning

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

Go to latest
Published: Aug 15, 2023 License: Apache-2.0 Imports: 16 Imported by: 0

Documentation

Index

Constants

This section is empty.

Variables

View Source
var (
	// ErrExecEmpty indicates that the user specified an empty "exec"
	// field
	ErrExecEmpty = fmt.Errorf(
		"%w: expected non-empty exec field", gdterrors.ErrParse,
	)
	// ErrExecInvalid indicates that the user specified an invalid "exec" field
	ErrExecInvalid = fmt.Errorf(
		"%w: invalid exec field", gdterrors.ErrParse,
	)
)
View Source
var (
	// ErrUnknownShell returns an ErrParse when an unknown shell is specified
	ErrUnknownShell = fmt.Errorf(
		"%w: unknown shell", errors.ErrParse,
	)
)

Functions

func ExecEmpty

func ExecEmpty(node *yaml.Node) error

ExecEmpty returns an ErrExecEmpty with the line/column of the supplied YAML node.

func ExecInvalidShellParse

func ExecInvalidShellParse(err error, node *yaml.Node) error

ExecInvalidShellParse returns an ErrExecInvalid with the error from shlex.Split

func ExecRuntimeError

func ExecRuntimeError(err error) error

ExecRuntimeError returns a RuntimeError with an error from the Exec() call.

func Plugin

func Plugin() gdttypes.Plugin

Plugin returns the HTTP gdt plugin

func UnknownShell

func UnknownShell(shell string) error

UnknownShell returns a wrapped version of ErrParse that indicates the user specified an unknown shell.

Types

type Action added in v1.2.0

type Action struct {
	// Exec is the exact command to execute.
	//
	// You may execute more than one command but must include the `shell` field
	// to indicate that the command should be run in a shell. It is best
	// practice, however, to simply use multiple `exec` specs instead of
	// executing multiple commands in a single shell call.
	Exec string `yaml:"exec"`
	// Shell is the specific shell to use in executing the command. If empty
	// (the default), no shell is used to execute the command and instead the
	// operating system's `exec` family of calls is used.
	Shell string `yaml:"shell,omitempty"`
}

Action describes a single execution of one or more commands via the operating system's `exec` family of functions.

func (*Action) Do added in v1.2.0

func (a *Action) Do(
	ctx context.Context,
	t *testing.T,
	outbuf *bytes.Buffer,
	errbuf *bytes.Buffer,
	exitcode *int,
) error

Do performs a single command or shell execution returning the corresponding exit code and any runtime error. The `outbuf` and `errbuf` buffers will be filled with the contents of the command's stdout and stderr pipes respectively.

type Defaults

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

Defaults is the known exec plugin defaults collection

func (*Defaults) UnmarshalYAML

func (d *Defaults) UnmarshalYAML(node *yaml.Node) error

type Expect

type Expect struct {
	// ExitCode is the expected exit code for the executed command. The default
	// (0) is the universal successful exit code, so you only need to set this
	// if you expect a non-successful result from executing the command.
	ExitCode int `yaml:"exit-code,omitempty"`
	// Out has things that are expected in the stdout response
	Out *PipeExpect `yaml:"out,omitempty"`
	// Err has things that are expected in the stderr response
	Err *PipeExpect `yaml:"err,omitempty"`
}

Expect contains the assertions about an Exec Spec's actions

func (*Expect) UnmarshalYAML

func (e *Expect) UnmarshalYAML(node *yaml.Node) error

type On added in v1.2.0

type On struct {
	// Fail contains one or more actions to take if any of a Spec's assertions
	// fail.
	//
	// For example, if you wanted to grep a log file in the event that no
	// connectivity on a particular IP:PORT combination could be made you might
	// do this:
	//
	// “`yaml
	// tests:
	//  - exec: nc -z $HOST $PORT
	//    on:
	//      fail:
	//        exec: grep ERROR /var/log/myapp.log
	// “`
	//
	// The `grep ERROR /var/log/myapp.log` command will only be executed if
	// there is no connectivity to $HOST:$PORT and the results of that grep
	// will be directed to the test's output. You can use the `gdt.WithDebug()`
	// function to configure additional `io.Writer`s to direct this output to.
	Fail *Action `yaml:"fail,omitempty"`
}

On describes actions that can be taken upon certain conditions.

type PipeExpect

type PipeExpect struct {
	// ContainsAll is one or more strings that *all* must be present in the
	// contents of the pipe
	ContainsAll *gdttypes.FlexStrings `yaml:"contains,omitempty"`
	// ContainsNone is one or more strings, *none of which* should be present in
	// the contents of the pipe
	ContainsNone *gdttypes.FlexStrings `yaml:"contains-none-of,omitempty"`
	// ContainsOneOf is one or more strings of which *at least one* must be
	// present in the contents of the pipe
	ContainsAny *gdttypes.FlexStrings `yaml:"contains-one-of,omitempty"`
}

PipeExpect contains assertions about the contents of a pipe

func (*PipeExpect) UnmarshalYAML added in v1.3.0

func (e *PipeExpect) UnmarshalYAML(node *yaml.Node) error

type Spec

type Spec struct {
	gdttypes.Spec
	Action
	// Assert is an object containing the conditions that the Spec will assert.
	Assert *Expect `yaml:"assert,omitempty"`
	// On is an object containing actions to take upon certain conditions.
	On *On `yaml:"on,omitempty"`
}

Spec describes a single Spec that executes one or more commands via the operating system's `exec` family of functions.

func (*Spec) Base

func (s *Spec) Base() *gdttypes.Spec

func (*Spec) Eval

func (s *Spec) Eval(ctx context.Context, t *testing.T) *result.Result

Eval performs an action and evaluates the results of that action, returning a Result that informs the Scenario about what failed or succeeded about the Evaluable's conditions.

func (*Spec) SetBase

func (s *Spec) SetBase(b gdttypes.Spec)

func (*Spec) UnmarshalYAML

func (s *Spec) UnmarshalYAML(node *yaml.Node) error

Jump to

Keyboard shortcuts

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