@@ -85,30 +85,50 @@ func (c Command) Run(args ...string) (string, error) {
8585 }
8686
8787 GinkgoWriter .Printf ("kubectl %s\n " , strings .Join (args , " " ))
88- result , err := c .exec ("kubectl" , args ... )
88+ stdout , stderr , err := c .exec ("kubectl" , args ... )
89+ result := stdout + stderr
8990 if err != nil {
9091 GinkgoWriter .Printf ("result:%s err:%s\n " , result , err )
9192 }
9293
9394 return result , err
9495}
9596
96- func (c Command ) exec (command string , args ... string ) (string , error ) {
97+ // RunStdout behaves like Run but returns stdout and stderr separately.
98+ func (c Command ) RunStdout (args ... string ) (stdout , stderr string , err error ) {
99+ if c .cnt != "" {
100+ args = append ([]string {"--context" , c .cnt }, args ... )
101+ }
102+
103+ if c .ns != "" {
104+ args = append ([]string {"-n" , c .ns }, args ... )
105+ }
106+
107+ GinkgoWriter .Printf ("kubectl %s\n " , strings .Join (args , " " ))
108+ stdout , stderr , err = c .exec ("kubectl" , args ... )
109+ if err != nil {
110+ GinkgoWriter .Printf ("stdout:%s stderr:%s err:%s\n " , stdout , stderr , err )
111+ }
112+
113+ return stdout , stderr , err
114+ }
115+
116+ func (c Command ) exec (command string , args ... string ) (string , string , error ) {
97117 cmd := exec .CommandContext (context .Background (), command , args ... )
98118
99- var b bytes.Buffer
119+ var outBuf , errBuf bytes.Buffer
100120 if c .stdout {
101- cmd .Stdout = io .MultiWriter (os .Stdout , & b )
102- cmd .Stderr = io .MultiWriter (os .Stderr , & b )
121+ cmd .Stdout = io .MultiWriter (os .Stdout , & outBuf )
122+ cmd .Stderr = io .MultiWriter (os .Stderr , & errBuf )
103123 } else {
104- cmd .Stdout = & b
105- cmd .Stderr = & b
124+ cmd .Stdout = & outBuf
125+ cmd .Stderr = & errBuf
106126 }
107127
108128 if c .dir != "" {
109129 cmd .Dir = c .dir
110130 }
111131
112132 err := cmd .Run ()
113- return b .String (), err
133+ return outBuf . String (), errBuf .String (), err
114134}
0 commit comments