github.com/criteo-forks/consul@v1.4.5-criteonogrpc/testutil/testlog.go (about) 1 package testutil 2 3 import ( 4 "fmt" 5 "io" 6 "log" 7 "os" 8 "strings" 9 "testing" 10 ) 11 12 var sendTestLogsToStdout bool 13 14 func init() { 15 sendTestLogsToStdout = os.Getenv("NOLOGBUFFER") == "1" 16 } 17 18 func TestLogger(t testing.TB) *log.Logger { 19 return log.New(&testWriter{t}, "test: ", log.LstdFlags) 20 } 21 22 func TestLoggerWithName(t testing.TB, name string) *log.Logger { 23 return log.New(&testWriter{t}, "test["+name+"]: ", log.LstdFlags) 24 } 25 26 func TestWriter(t testing.TB) io.Writer { 27 return &testWriter{t} 28 } 29 30 type testWriter struct { 31 t testing.TB 32 } 33 34 func (tw *testWriter) Write(p []byte) (n int, err error) { 35 tw.t.Helper() 36 if sendTestLogsToStdout { 37 fmt.Fprint(os.Stdout, strings.TrimSpace(string(p))+"\n") 38 } else { 39 tw.t.Log(strings.TrimSpace(string(p))) 40 } 41 return len(p), nil 42 }