mock

package
v1.41.0 Latest Latest
Warning

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

Go to latest
Published: Jun 8, 2020 License: Apache-2.0 Imports: 7 Imported by: 8

Documentation

Index

Examples

Constants

This section is empty.

Variables

This section is empty.

Functions

func OpenFileMock

func OpenFileMock(name string) (io.ReadCloser, error)

Types

type DockerExecConfig added in v1.40.0

type DockerExecConfig struct {
	// Image is the fully qualified docker image name that is passed to docker for this tool.
	Image string
	// Workspace is the (optional) directory to which the current working directory is mapped
	// within the docker container.
	Workspace string
}

DockerExecConfig is the configuration for an individual tool that shall be executed in docker.

type DockerExecRunner added in v1.40.0

type DockerExecRunner struct {
	// Runner is the ExecRunner to which all executions are forwarded in the end.
	Runner baseRunner
	// contains filtered or unexported fields
}

DockerExecRunner can be used "in place" of another ExecRunner in order to transparently execute commands within a docker container. One use-case is to test locally with tools that are not available on the current platform. When entering the run*() function of a step implementation, a DockerExecRunner can be wrapped around a command.Command{} an be configured to run certain executables within docker.

func (*DockerExecRunner) AddExecConfig added in v1.40.0

func (d *DockerExecRunner) AddExecConfig(executable string, config DockerExecConfig) error

AddExecConfig needs to be called to store a configuration for a specific executable, in order to run this executable within docker.

func (*DockerExecRunner) RunExecutable added in v1.40.0

func (d *DockerExecRunner) RunExecutable(executable string, parameters ...string) error

RunExecutable runs the provided executable within docker, if a DockerExecConfig has been previously associated with this executable via AddExecConfig(). Otherwise runs it directly. The BaseRunner is used for execution in any case.

Example
package main

import (
	"bytes"
	"fmt"
	"github.com/SAP/jenkins-library/pkg/command"
	"github.com/SAP/jenkins-library/pkg/mock"
	"io"
	"strings"
)

type ExecRunner interface {
	SetDir(d string)
	SetEnv(e []string)
	Stdout(out io.Writer)
	Stderr(err io.Writer)
	RunExecutable(e string, p ...string) error
}

func getMavenVersion(runner ExecRunner) (string, error) {
	output := bytes.Buffer{}
	runner.Stdout(&output)
	err := runner.RunExecutable("mvn", "--version")
	if err != nil {
		return "", fmt.Errorf("failed to run maven: %w", err)
	}
	logLines := strings.Split(output.String(), "\n")
	if len(logLines) < 1 {
		return "", fmt.Errorf("failed to obtain maven output")
	}
	return logLines[0], nil
}

func main() {
	// getMavenVersion(runner ExecRunner) executes the command "mvn --version"
	// and returns the command output as string
	runner := command.Command{}
	localMavenVersion, _ := getMavenVersion(&runner)

	dockerRunner := mock.DockerExecRunner{Runner: &runner}
	_ = dockerRunner.AddExecConfig("mvn", mock.DockerExecConfig{
		Image: "maven:3.6.1-jdk-8",
	})

	dockerMavenVersion, _ := getMavenVersion(&dockerRunner)

	fmt.Printf("Your local mvn version is %v, while the version in docker is %v", localMavenVersion, dockerMavenVersion)
}
Output:

func (*DockerExecRunner) SetDir added in v1.40.0

func (d *DockerExecRunner) SetDir(dir string)

SetDir directly forwards to the provided BaseRunner.

func (*DockerExecRunner) SetEnv added in v1.40.0

func (d *DockerExecRunner) SetEnv(env []string)

SetEnv directly forwards to the provided BaseRunner.

func (*DockerExecRunner) Stderr added in v1.40.0

func (d *DockerExecRunner) Stderr(err io.Writer)

Stderr directly forwards to the provided BaseRunner.

func (*DockerExecRunner) Stdout added in v1.40.0

func (d *DockerExecRunner) Stdout(out io.Writer)

Stdout directly forwards to the provided BaseRunner.

type ExecCall

type ExecCall struct {
	Exec   string
	Params []string
}

type ExecMockRunner

type ExecMockRunner struct {
	Dir   []string
	Env   []string
	Calls []ExecCall

	StdoutReturn        map[string]string
	ShouldFailOnCommand map[string]error
	// contains filtered or unexported fields
}

func (*ExecMockRunner) RunExecutable

func (m *ExecMockRunner) RunExecutable(e string, p ...string) error

func (*ExecMockRunner) SetDir

func (m *ExecMockRunner) SetDir(d string)

func (*ExecMockRunner) SetEnv

func (m *ExecMockRunner) SetEnv(e []string)

func (*ExecMockRunner) Stderr

func (m *ExecMockRunner) Stderr(err io.Writer)

func (*ExecMockRunner) Stdout

func (m *ExecMockRunner) Stdout(out io.Writer)

type FilesMock added in v1.19.0

type FilesMock struct {
	Files []string
}

FilesMock ...

func (FilesMock) Copy added in v1.19.0

func (f FilesMock) Copy(src, dst string) (int64, error)

Copy ...

func (FilesMock) FileExists added in v1.19.0

func (f FilesMock) FileExists(filename string) (bool, error)

FileExists ...

func (FilesMock) FileRead added in v1.19.0

func (f FilesMock) FileRead(path string) ([]byte, error)

FileRead ...

func (FilesMock) FileWrite added in v1.19.0

func (f FilesMock) FileWrite(path string, content []byte, perm os.FileMode) error

FileWrite ...

func (FilesMock) MkdirAll added in v1.19.0

func (f FilesMock) MkdirAll(path string, perm os.FileMode) error

MkdirAll ...

type ShellMockRunner

type ShellMockRunner struct {
	Dir   string
	Env   []string
	Calls []string
	Shell []string

	StdoutReturn        map[string]string
	ShouldFailOnCommand map[string]error
	// contains filtered or unexported fields
}

func (*ShellMockRunner) AddToEnv

func (m *ShellMockRunner) AddToEnv(e []string)

func (*ShellMockRunner) RunShell

func (m *ShellMockRunner) RunShell(s string, c string) error

func (*ShellMockRunner) SetDir

func (m *ShellMockRunner) SetDir(d string)

func (*ShellMockRunner) SetEnv added in v1.16.0

func (m *ShellMockRunner) SetEnv(e []string)

func (*ShellMockRunner) Stderr

func (m *ShellMockRunner) Stderr(err io.Writer)

func (*ShellMockRunner) Stdout

func (m *ShellMockRunner) Stdout(out io.Writer)

type StepOptions

type StepOptions struct {
	TestParam string `json:"testParam,omitempty"`
}

Jump to

Keyboard shortcuts

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