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) {}