package logging import ( "bytes" "log/slog" "strings" "testing" "github.com/stretchr/testify/assert" ) func NewMockLogger() *MockLogger { logged := &bytes.Buffer{} return &MockLogger{ logged: logged, logger: slog.New(slog.NewTextHandler(logged, &slog.HandlerOptions{ ReplaceAttr: func(groups []string, a slog.Attr) slog.Attr { if a.Key == "time" { return slog.Attr{} } return a }, })), } } type MockLogger struct { logger *slog.Logger logged *bytes.Buffer } func (m *MockLogger) Logger() *slog.Logger { return m.logger } func (m *MockLogger) Check(t testing.TB, wantLogged []string) { var gotLogged []string if m.logged.String() != "" { gotLogged = strings.Split(m.logged.String(), "\n") gotLogged = gotLogged[:len(gotLogged)-1] } if len(wantLogged) == 0 { assert.Empty(t, gotLogged) return } assert.Equal(t, wantLogged, gotLogged) }