sq/libsq/core/lg/lg_test.go

84 lines
1.9 KiB
Go
Raw Normal View History

package lg_test
import (
"context"
"errors"
"io"
"log/slog"
"testing"
"github.com/stretchr/testify/require"
"github.com/neilotoole/sq/libsq/core/lg"
"github.com/neilotoole/sq/libsq/core/lg/lgt"
)
func TestContext(t *testing.T) {
ctx := context.Background()
log := lgt.New(t)
ctx = lg.NewContext(ctx, log)
log = lg.FromContext(ctx)
log.Info("huzzah")
}
func TestDiscard(t *testing.T) {
log := lg.Discard()
log.Info("huzzah")
require.True(t, lg.IsDiscard(log))
require.False(t, lg.IsDiscard(slog.Default()))
}
func TestDepth(t *testing.T) {
// I'm not motivated enough to write a test that actually checks output
// (e.g. by setting the log output to a bytes.Buffer), so this
// is just a visual check.
log := lgt.New(t)
log = log.With("name", "alice", "age", 42)
err := errors.New("TestSourceAttr error")
log.Warn("TestSourceAttr - NO DEPTH")
lg.Depth(log, slog.LevelWarn, 0, "TestSourceAttr log depth")
lg.WarnIfError(log, "TestSourceAttr", err)
lg.WarnIfFuncError(log, "TestSourceAttr", errorFunc)
lg.WarnIfCloseError(log, "TestSourceAttr", errorCloser{})
lg.Unexpected(log, err)
nest1(log)
}
func nest1(log *slog.Logger) {
err := errors.New("nest1 error")
log.Warn("nest1 - NO DEPTH")
lg.Depth(log, slog.LevelWarn, 0, "nest1 log depth")
lg.WarnIfError(log, "nest1", err)
lg.WarnIfFuncError(log, "nest1", errorFunc)
lg.WarnIfCloseError(log, "nest1", errorCloser{})
lg.Unexpected(log, err)
nest2(log)
}
func nest2(log *slog.Logger) {
err := errors.New("nest2 error")
log.Warn("nest2 - NO DEPTH")
lg.Depth(log, slog.LevelWarn, 0, "nest2 log depth")
lg.WarnIfError(log, "nest2", err)
lg.WarnIfFuncError(log, "nest2", errorFunc)
lg.WarnIfCloseError(log, "nest2", errorCloser{})
lg.Unexpected(log, err)
}
func errorFunc() error {
return errors.New("errorFunc went bad")
}
var _ io.Closer = errorCloser{}
type errorCloser struct{}
func (e errorCloser) Close() error {
return errors.New("errorCloser.Close went bad")
}