feat: replace apex with slog
This commit is contained in:
+40
-5
@@ -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)
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user