39 lines
781 B
Go
39 lines
781 B
Go
package main
|
|
|
|
import (
|
|
"bytes"
|
|
"testing"
|
|
)
|
|
|
|
// useBufferWriters swaps stdOut/stdErr with in-memory buffers for the duration
|
|
// of a test, allowing assertions on CLI output without polluting test logs.
|
|
func useBufferWriters(t *testing.T) {
|
|
t.Helper()
|
|
|
|
outBuf := &bytes.Buffer{}
|
|
errBuf := &bytes.Buffer{}
|
|
|
|
prevOut := stdOut
|
|
prevErr := stdErr
|
|
|
|
stdOut = outBuf
|
|
stdErr = errBuf
|
|
|
|
t.Cleanup(func() {
|
|
stdOut = prevOut
|
|
stdErr = prevErr
|
|
})
|
|
}
|
|
|
|
// stdOutBuffer returns the in-use stdout buffer when useBufferWriters is active.
|
|
func stdOutBuffer() *bytes.Buffer {
|
|
buf, _ := stdOut.(*bytes.Buffer)
|
|
return buf
|
|
}
|
|
|
|
// stdErrBuffer returns the in-use stderr buffer when useBufferWriters is active.
|
|
func stdErrBuffer() *bytes.Buffer {
|
|
buf, _ := stdErr.(*bytes.Buffer)
|
|
return buf
|
|
}
|