Documentation ¶
Index ¶
- func OpenFileMock(name string, tokens map[string]string) (io.ReadCloser, error)
- type DockerExecConfig
- type DockerExecRunner
- func (d *DockerExecRunner) AddExecConfig(executable string, config DockerExecConfig) error
- func (d *DockerExecRunner) RunExecutable(executable string, parameters ...string) error
- func (d *DockerExecRunner) SetDir(dir string)
- func (d *DockerExecRunner) SetEnv(env []string)
- func (d *DockerExecRunner) Stderr(err io.Writer)
- func (d *DockerExecRunner) Stdout(out io.Writer)
- type DownloadMock
- type ExecCall
- type ExecMockRunner
- func (m *ExecMockRunner) AppendEnv(e []string)
- func (m *ExecMockRunner) GetExitCode() int
- func (m *ExecMockRunner) GetStderr() io.Writer
- func (m *ExecMockRunner) GetStdout() io.Writer
- func (m *ExecMockRunner) RunExecutable(e string, p ...string) error
- func (m *ExecMockRunner) RunExecutableInBackground(e string, p ...string) (command.Execution, error)
- func (m *ExecMockRunner) SetDir(d string)
- func (m *ExecMockRunner) SetEnv(e []string)
- func (m *ExecMockRunner) Stderr(err io.Writer)
- func (m *ExecMockRunner) Stdin(in io.Reader)
- func (m *ExecMockRunner) Stdout(out io.Writer)
- type Execution
- type FileMock
- type FilesMock
- func (f *FilesMock) Abs(path string) (string, error)
- func (f *FilesMock) AddDir(path string)
- func (f *FilesMock) AddDirWithMode(path string, mode os.FileMode)
- func (f *FilesMock) AddFile(path string, contents []byte)
- func (f *FilesMock) AddFileWithMode(path string, contents []byte, mode os.FileMode)
- func (f *FilesMock) Chdir(path string) error
- func (f *FilesMock) Chmod(path string, mode os.FileMode) error
- func (f *FilesMock) Copy(src, dst string) (int64, error)
- func (f *FilesMock) Create(name string) (io.ReadWriteCloser, error)
- func (f *FilesMock) CurrentTime(format string) string
- func (f *FilesMock) DirExists(path string) (bool, error)
- func (f *FilesMock) FileExists(path string) (bool, error)
- func (f *FilesMock) FileRead(path string) ([]byte, error)
- func (f *FilesMock) FileRemove(path string) error
- func (f *FilesMock) FileRename(oldPath, newPath string) error
- func (f *FilesMock) FileWrite(path string, content []byte, mode os.FileMode) error
- func (f *FilesMock) Getwd() (string, error)
- func (f *FilesMock) Glob(pattern string) ([]string, error)
- func (f *FilesMock) HasCopiedFile(src string, dest string) bool
- func (f *FilesMock) HasCreatedSymlink(oldname, newname string) bool
- func (f *FilesMock) HasFile(path string) bool
- func (f *FilesMock) HasRemovedFile(path string) bool
- func (f *FilesMock) HasWrittenFile(path string) bool
- func (f *FilesMock) MkdirAll(path string, mode os.FileMode) error
- func (f *FilesMock) Move(src, dst string) error
- func (f *FilesMock) Open(name string) (io.ReadWriteCloser, error)
- func (f *FilesMock) OpenFile(path string, flag int, perm os.FileMode) (*FileMock, error)
- func (f *FilesMock) RemoveAll(path string) error
- func (f *FilesMock) SHA256(path string) (string, error)
- func (f *FilesMock) Stat(path string) (os.FileInfo, error)
- func (f *FilesMock) Symlink(oldname, newname string) error
- func (f *FilesMock) TempDir(baseDir string, pattern string) (string, error)
- type HttpClientMock
- func (utils *HttpClientMock) DownloadFile(url, filename string, header http.Header, cookies []*http.Cookie) error
- func (utils *HttpClientMock) SendRequest(method string, url string, r io.Reader, header http.Header, ...) (*http.Response, error)
- func (utils *HttpClientMock) SetOptions(options piperhttp.ClientOptions)
- func (utils *HttpClientMock) Upload(data piperhttp.UploadRequestData) (*http.Response, error)
- func (utils *HttpClientMock) UploadFile(url, file, fieldName string, header http.Header, cookies []*http.Cookie, ...) (*http.Response, error)
- func (utils *HttpClientMock) UploadRequest(method, url, file, fieldName string, header http.Header, ...) (*http.Response, error)
- type ShellMockRunner
- func (m *ShellMockRunner) AppendEnv(e []string)
- func (m *ShellMockRunner) GetExitCode() int
- func (m *ShellMockRunner) GetStderr() io.Writer
- func (m *ShellMockRunner) GetStdout() io.Writer
- func (m *ShellMockRunner) RunShell(s string, c string) error
- func (m *ShellMockRunner) SetDir(d string)
- func (m *ShellMockRunner) SetEnv(e []string)
- func (m *ShellMockRunner) Stderr(err io.Writer)
- func (m *ShellMockRunner) Stdin(in io.Reader)
- func (m *ShellMockRunner) Stdout(out io.Writer)
- type StepOptions
Examples ¶
Constants ¶
This section is empty.
Variables ¶
This section is empty.
Functions ¶
func OpenFileMock ¶
Types ¶
type DockerExecConfig ¶
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 ¶
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 ¶
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 ¶
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 ¶
func (d *DockerExecRunner) SetDir(dir string)
SetDir directly forwards to the provided BaseRunner.
func (*DockerExecRunner) SetEnv ¶
func (d *DockerExecRunner) SetEnv(env []string)
SetEnv directly forwards to the provided BaseRunner.
func (*DockerExecRunner) Stderr ¶
func (d *DockerExecRunner) Stderr(err io.Writer)
Stderr directly forwards to the provided BaseRunner.
func (*DockerExecRunner) Stdout ¶
func (d *DockerExecRunner) Stdout(out io.Writer)
Stdout directly forwards to the provided BaseRunner.
type DownloadMock ¶
type DownloadMock struct { FilePath string ImageRef string RemoteImageRef string RegistryURL string ReturnImage v1.Image RemoteImageInfo v1.Image ReturnError string Stub func(imageRef, targetDir string) (v1.Image, error) }
DownloadMock .
func (*DownloadMock) DownloadImage ¶
func (c *DownloadMock) DownloadImage(imageRef, targetDir string) (v1.Image, error)
DownloadImage .
func (*DownloadMock) DownloadImageContent ¶
func (c *DownloadMock) DownloadImageContent(imageRef, targetFile string) (v1.Image, error)
DownloadImageContent .
func (*DownloadMock) GetRemoteImageInfo ¶
func (c *DownloadMock) GetRemoteImageInfo(imageRef string) (v1.Image, error)
GetRemoteImageInfo .
type ExecMockRunner ¶
type ExecMockRunner struct { Dir []string Env []string ExitCode int Calls []ExecCall Stub func(call string, stdoutReturn map[string]string, shouldFailOnCommand map[string]error, stdout io.Writer) error StdoutReturn map[string]string ShouldFailOnCommand map[string]error // contains filtered or unexported fields }
func (*ExecMockRunner) AppendEnv ¶
func (m *ExecMockRunner) AppendEnv(e []string)
func (*ExecMockRunner) GetExitCode ¶
func (m *ExecMockRunner) GetExitCode() int
func (*ExecMockRunner) GetStderr ¶
func (m *ExecMockRunner) GetStderr() io.Writer
func (*ExecMockRunner) GetStdout ¶
func (m *ExecMockRunner) GetStdout() io.Writer
func (*ExecMockRunner) RunExecutable ¶
func (m *ExecMockRunner) RunExecutable(e string, p ...string) error
func (*ExecMockRunner) RunExecutableInBackground ¶
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) Stdin ¶
func (m *ExecMockRunner) Stdin(in io.Reader)
func (*ExecMockRunner) Stdout ¶
func (m *ExecMockRunner) Stdout(out io.Writer)
type FileMock ¶
type FileMock struct {
// contains filtered or unexported fields
}
FileMock can be used in places where a io.Closer, io.StringWriter or io.Writer is expected. It is the concrete type returned from FilesMock.OpenFile()
func (*FileMock) Write ¶
Write appends the provided byte array to the end of the current virtual file contents. It fails if the FileMock has been closed already, but it does not fail in case the path has already been removed from the FilesMock instance that created this FileMock. In this situation, the written contents will not become visible in the FilesMock.
type FilesMock ¶
type FilesMock struct { CurrentDir string Separator string FileExistsErrors map[string]error FileReadErrors map[string]error FileWriteError error FileWriteErrors map[string]error // contains filtered or unexported fields }
FilesMock implements the functions from piperutils.Files with an in-memory file system.
func (*FilesMock) AddDir ¶
AddDir establishes the existence of a virtual directory. The directory is add with default mode 755.
func (*FilesMock) AddDirWithMode ¶
AddDirWithMode establishes the existence of a virtual directory.
func (*FilesMock) AddFile ¶
AddFile establishes the existence of a virtual file. The file is added with mode 644.
func (*FilesMock) AddFileWithMode ¶
AddFileWithMode establishes the existence of a virtual file.
func (*FilesMock) Chdir ¶
Chdir changes virtually into the given directory. The directory needs to exist according to the files and directories via AddFile() and AddDirectory(). The implementation does not support relative path components such as "..".
func (*FilesMock) Copy ¶
Copy checks if content has been associated with the given src path, and if so copies it under the given path dst.
func (*FilesMock) CurrentTime ¶
CurrentTime returns the current time as a fixed value
func (*FilesMock) DirExists ¶
DirExists returns true, if the given path is a previously added directory, or a parent directory for any of the previously added files.
func (*FilesMock) FileExists ¶
FileExists returns true if file content has been associated with the given path, false otherwise. Only relative paths are supported.
func (*FilesMock) FileRead ¶
FileRead returns the content previously associated with the given path via AddFile(), or an error if no content has been associated.
func (*FilesMock) FileRemove ¶
FileRemove deletes the association of the given path with any content and records the removal of the file. If the path has not been registered before, it returns an error.
func (*FilesMock) FileRename ¶
FileRename changes the path under which content is associated in the virtual file system. Only leaf-entries are supported as of yet.
func (*FilesMock) FileWrite ¶
FileWrite just forwards to AddFile(), i.e. the content is associated with the given path.
func (*FilesMock) Glob ¶
Glob returns an array of path strings which match the given glob-pattern. Double star matching is supported.
func (*FilesMock) HasCopiedFile ¶
HasCopiedFile returns true if the virtual file system at one point contained an entry for the given source and destination, and it was written via CopyFile().
func (*FilesMock) HasCreatedSymlink ¶
HasCreatedSymlink returns true if the virtual file system has a symlink with a specific target.
func (*FilesMock) HasFile ¶
HasFile returns true if the virtual file system contains an entry for the given path.
func (*FilesMock) HasRemovedFile ¶
HasRemovedFile returns true if the virtual file system at one point contained an entry for the given path, and it was removed via FileRemove().
func (*FilesMock) HasWrittenFile ¶
HasWrittenFile returns true if the virtual file system at one point contained an entry for the given path, and it was written via FileWrite().
func (*FilesMock) MkdirAll ¶
MkdirAll creates a directory in the in-memory file system, so that this path is established to exist.
func (*FilesMock) OpenFile ¶
OpenFile mimics the behavior os.OpenFile(), but it cannot return an instance of the os.File struct. Instead, it returns a pointer to a FileMock instance, which implements a number of the same methods as os.File. The flag parameter is checked for os.O_CREATE and os.O_APPEND and behaves accordingly.
func (*FilesMock) Stat ¶
Stat returns an approximated os.FileInfo. For files, it returns properties that have been associated via the setup methods. For directories it depends. If a directory exists only implicitly, because it is the parent of an added file, default values will be reflected in the file info.
type HttpClientMock ¶
type HttpClientMock struct { ClientOptions []piperhttp.ClientOptions // set by mock FileUploads map[string]string // set by mock ReturnFileUploadStatus int // expected to be set upfront ReturnFileUploadError error // expected to be set upfront }
HttpClientMock mock struct
func (*HttpClientMock) DownloadFile ¶
func (utils *HttpClientMock) DownloadFile(url, filename string, header http.Header, cookies []*http.Cookie) error
DownloadFile mock
func (*HttpClientMock) SendRequest ¶
func (utils *HttpClientMock) SendRequest(method string, url string, r io.Reader, header http.Header, cookies []*http.Cookie) (*http.Response, error)
SendRequest mock
func (*HttpClientMock) SetOptions ¶
func (utils *HttpClientMock) SetOptions(options piperhttp.ClientOptions)
SetOptions mock
func (*HttpClientMock) Upload ¶
func (utils *HttpClientMock) Upload(data piperhttp.UploadRequestData) (*http.Response, error)
Upload mock
type ShellMockRunner ¶
type ShellMockRunner struct { Dir string Env []string ExitCode int Calls []string Shell []string StdoutReturn map[string]string ShouldFailOnCommand map[string]error // contains filtered or unexported fields }
func (*ShellMockRunner) AppendEnv ¶
func (m *ShellMockRunner) AppendEnv(e []string)
func (*ShellMockRunner) GetExitCode ¶
func (m *ShellMockRunner) GetExitCode() int
func (*ShellMockRunner) GetStderr ¶
func (m *ShellMockRunner) GetStderr() io.Writer
func (*ShellMockRunner) GetStdout ¶
func (m *ShellMockRunner) GetStdout() io.Writer
func (*ShellMockRunner) SetDir ¶
func (m *ShellMockRunner) SetDir(d string)
func (*ShellMockRunner) SetEnv ¶
func (m *ShellMockRunner) SetEnv(e []string)
func (*ShellMockRunner) Stderr ¶
func (m *ShellMockRunner) Stderr(err io.Writer)
func (*ShellMockRunner) Stdin ¶
func (m *ShellMockRunner) Stdin(in io.Reader)
func (*ShellMockRunner) Stdout ¶
func (m *ShellMockRunner) Stdout(out io.Writer)
type StepOptions ¶
type StepOptions struct {
TestParam string `json:"testParam,omitempty"`
}