2025-04-01 10:38:02 +09:00

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
}