Merge pull request #3729 from hashicorp/f-test-log-2
Logger backed by *testing.T
This commit is contained in:
commit
332b407d28
|
@ -0,0 +1,46 @@
|
|||
// Package testlog creates a *log.Logger backed by *testing.T to ease logging
|
||||
// in tests. This allows logs from components being tested to only be printed
|
||||
// if the test fails (or the verbose flag is specified).
|
||||
package testlog
|
||||
|
||||
import (
|
||||
"io"
|
||||
"log"
|
||||
)
|
||||
|
||||
// LogPrinter is the methods of testing.T (or testing.B) needed by the test
|
||||
// logger.
|
||||
type LogPrinter interface {
|
||||
Logf(format string, args ...interface{})
|
||||
}
|
||||
|
||||
// writer implements io.Writer on top of a Logger.
|
||||
type writer struct {
|
||||
t LogPrinter
|
||||
}
|
||||
|
||||
// Write to an underlying Logger. Never returns an error.
|
||||
func (w *writer) Write(p []byte) (n int, err error) {
|
||||
w.t.Logf(string(p))
|
||||
return len(p), nil
|
||||
}
|
||||
|
||||
// NewWriter creates a new io.Writer backed by a Logger.
|
||||
func NewWriter(t LogPrinter) io.Writer {
|
||||
return &writer{t}
|
||||
}
|
||||
|
||||
// New returns a new test logger. See https://golang.org/pkg/log/#New
|
||||
func New(t LogPrinter, prefix string, flag int) *log.Logger {
|
||||
return log.New(&writer{t}, prefix, flag)
|
||||
}
|
||||
|
||||
// WithPrefix returns a new test logger with the Lmicroseconds flag set.
|
||||
func WithPrefix(t LogPrinter, prefix string) *log.Logger {
|
||||
return New(t, prefix, log.Lmicroseconds)
|
||||
}
|
||||
|
||||
// NewLog logger with "TEST" prefix and the Lmicroseconds flag.
|
||||
func Logger(t LogPrinter) *log.Logger {
|
||||
return WithPrefix(t, "TEST ")
|
||||
}
|
Loading…
Reference in New Issue