feat: replace apex with slog

This commit is contained in:
2024-03-24 00:42:17 +01:00
parent e1bf56b1d1
commit 571da9733b
4 changed files with 48 additions and 74 deletions
+40 -5
View File
@@ -1,13 +1,15 @@
package sentrysetup
import (
"bytes"
"errors"
"fmt"
"log/slog"
"strings"
"testing"
"github.com/getsentry/sentry-go"
"github.com/stretchr/testify/assert"
"gitlab.com/unboundsoftware/apex-mocks"
)
func TestSetupSentry(t *testing.T) {
@@ -34,7 +36,7 @@ func TestSetupSentry(t *testing.T) {
},
init: nil,
wantErr: assert.NoError,
wantLogged: []string{"info: Sentry disabled, setup using empty options"},
wantLogged: []string{`level=INFO msg="Sentry disabled, setup using empty options"`},
},
{
name: "no environment",
@@ -134,19 +136,52 @@ func TestSetupSentry(t *testing.T) {
}
},
wantErr: assert.NoError,
wantLogged: []string{"info: configured Sentry for env: production"},
wantLogged: []string{`level=INFO msg="configured Sentry for env: production"`},
},
}
for _, tt := range tests {
t.Run(tt.name, func(t *testing.T) {
logger := apex.New()
logged := &bytes.Buffer{}
logger := &MockLogger{
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
},
})),
logged: logged,
}
if tt.init == nil {
sentryInit = sentry.Init
} else {
sentryInit = tt.init(t)
}
tt.wantErr(t, SetupSentry(logger, tt.args.releaseName, tt.args.args), fmt.Sprintf("SetupSentry(%v, %v, %v)", logger, tt.args.releaseName, tt.args.args))
tt.wantErr(t, SetupSentry(logger.Logger(), tt.args.releaseName, tt.args.args), fmt.Sprintf("SetupSentry(%v, %v, %v)", logger, tt.args.releaseName, tt.args.args))
logger.Check(t, tt.wantLogged)
})
}
}
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)
}