Skip to content
Snippets Groups Projects
Select Git revision
  • 6bf18be2bfaf4c61cecdd44fdf2929660d4ec828
  • master default
2 results

swift.spec.ts

Blame
  • sshcommander.go 1.35 KiB
    // 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
    }