mirror of https://github.com/docker/docs.git
40 lines
1.3 KiB
Go
40 lines
1.3 KiB
Go
//Package provisiontest provides utilities for testing provisioners
|
|
package provisiontest
|
|
|
|
import "errors"
|
|
|
|
//FakeSSHCommanderOptions is intended to create a FakeSSHCommander without actually knowing the underlying sshcommands by passing it to NewSSHCommander
|
|
type FakeSSHCommanderOptions struct {
|
|
//Result of the ssh command to look up the FilesystemType
|
|
FilesystemType string
|
|
}
|
|
|
|
//FakeSSHCommander is an implementation of provision.SSHCommander to provide predictable responses set by testing code
|
|
//Extend it when needed
|
|
type FakeSSHCommander struct {
|
|
Responses map[string]string
|
|
}
|
|
|
|
//NewFakeSSHCommander creates a FakeSSHCommander without actually knowing the underlying sshcommands
|
|
func NewFakeSSHCommander(options FakeSSHCommanderOptions) *FakeSSHCommander {
|
|
if options.FilesystemType == "" {
|
|
options.FilesystemType = "ext4"
|
|
}
|
|
sshCmder := &FakeSSHCommander{
|
|
Responses: map[string]string{
|
|
"stat -f -c %T /var/lib": options.FilesystemType + "\n",
|
|
},
|
|
}
|
|
|
|
return sshCmder
|
|
}
|
|
|
|
//SSHCommand is an implementation of provision.SSHCommander.SSHCommand to provide predictable responses set by testing code
|
|
func (sshCmder *FakeSSHCommander) SSHCommand(args string) (string, error) {
|
|
response, commandRegistered := sshCmder.Responses[args]
|
|
if !commandRegistered {
|
|
return "", errors.New("Command not registered in FakeSSHCommander")
|
|
}
|
|
return response, nil
|
|
}
|