github.com/weaveworks/common@v0.0.0-20230728070032-dd9e68f319d5/test/exec/exec.go (about)

     1  package exec
     2  
     3  import (
     4  	"bytes"
     5  	"io"
     6  	"io/ioutil"
     7  
     8  	"github.com/weaveworks/common/exec"
     9  )
    10  
    11  type mockCmd struct {
    12  	io.ReadCloser
    13  }
    14  
    15  // NewMockCmdString creates a new mock Cmd which has s on its stdout pipe
    16  func NewMockCmdString(s string) exec.Cmd {
    17  	return &mockCmd{
    18  		ReadCloser: struct {
    19  			io.Reader
    20  			io.Closer
    21  		}{
    22  			bytes.NewBufferString(s),
    23  			ioutil.NopCloser(nil),
    24  		},
    25  	}
    26  }
    27  
    28  // NewMockCmd creates a new mock Cmd with rc as its stdout pipe
    29  func NewMockCmd(rc io.ReadCloser) exec.Cmd {
    30  	return &mockCmd{
    31  		ReadCloser: rc,
    32  	}
    33  }
    34  
    35  func (c *mockCmd) Start() error {
    36  	return nil
    37  }
    38  
    39  func (c *mockCmd) Wait() error {
    40  	return nil
    41  }
    42  
    43  func (c *mockCmd) StdoutPipe() (io.ReadCloser, error) {
    44  	return c.ReadCloser, nil
    45  }
    46  
    47  func (c *mockCmd) StderrPipe() (io.ReadCloser, error) {
    48  	return ioutil.NopCloser(bytes.NewReader(nil)), nil
    49  }
    50  
    51  func (c *mockCmd) Kill() error {
    52  	return nil
    53  }
    54  
    55  func (c *mockCmd) Output() ([]byte, error) {
    56  	return ioutil.ReadAll(c.ReadCloser)
    57  }
    58  
    59  func (c *mockCmd) Run() error {
    60  	return nil
    61  }
    62  
    63  func (c *mockCmd) SetEnv([]string) {}