42 lines
1.1 KiB
Go
42 lines
1.1 KiB
Go
package logtest
|
|
|
|
import (
|
|
"context"
|
|
"log/slog"
|
|
"strings"
|
|
"testing"
|
|
)
|
|
|
|
type NopHandler struct{}
|
|
|
|
func NewNopHandler(t *testing.T) *NopHandler {
|
|
return &NopHandler{}
|
|
}
|
|
func (h *NopHandler) Enabled(_ context.Context, _ slog.Level) bool { return false }
|
|
func (h *NopHandler) WithAttrs(_ []slog.Attr) slog.Handler { return h }
|
|
func (h *NopHandler) WithGroup(_ string) slog.Handler { return h }
|
|
func (h *NopHandler) Handle(_ context.Context, r slog.Record) error { return nil }
|
|
|
|
type TestHandler struct {
|
|
t *testing.T
|
|
}
|
|
|
|
func NewTestHandler(t *testing.T) *TestHandler {
|
|
return &TestHandler{t: t}
|
|
}
|
|
|
|
func (th *TestHandler) Enabled(_ context.Context, _ slog.Level) bool { return true }
|
|
func (th *TestHandler) WithAttrs(_ []slog.Attr) slog.Handler { return th }
|
|
func (th *TestHandler) WithGroup(_ string) slog.Handler { return th }
|
|
func (th *TestHandler) Handle(ctx context.Context, r slog.Record) error {
|
|
th.t.Helper()
|
|
buf := &strings.Builder{}
|
|
h := slog.NewTextHandler(buf, nil)
|
|
err := h.Handle(ctx, r)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
th.t.Log(buf.String())
|
|
return nil
|
|
}
|