# HG changeset patch # User Christophe de Vienne <christophe@cdevienne.info> # Date 1600348775 -7200 # Thu Sep 17 15:19:35 2020 +0200 # Node ID 2f75d76afdfa28f0fbb7e6aa10b234a93aa2698c # Parent d6032c71d396d912c0a8137745a737a45356f5ce Add the 'testutils' package diff --git a/testutils/logger.go b/testutils/logger.go new file mode 100644 --- /dev/null +++ b/testutils/logger.go @@ -0,0 +1,40 @@ +package testutils + +import ( + "os" + "testing" + + "github.com/rs/zerolog" +) + +//NewTestLogger creates a TestLogger +func NewTestLogger(tb testing.TB) *TestLogger { + return &TestLogger{tb} +} + +// TestLogger logs to a t.Log function +type TestLogger struct { + tb testing.TB +} + +// Logger returns a zerolog Logger +func (tl *TestLogger) Logger() zerolog.Logger { + level := zerolog.DebugLevel + if os.Getenv("TEST_TRACE") != "" { + level = zerolog.TraceLevel + } + return zerolog.New(zerolog.ConsoleWriter{Out: tl}). + With().Timestamp().Logger(). + Level(level) +} + +// Write writes the given string to t.Logf +func (tl *TestLogger) Write(m []byte) (int, error) { + tl.tb.Logf(string(m)) + return len(m), nil +} + +// GetLogger returns a test Logger +func GetLogger(tb testing.TB) zerolog.Logger { + return NewTestLogger(tb).Logger() +}