-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlogger_test.go
85 lines (74 loc) · 1.57 KB
/
logger_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
package mango
import (
"bytes"
"context"
"errors"
"fmt"
"github.com/stretchr/testify/assert"
"github.com/stretchr/testify/require"
"log/slog"
"os"
"sync"
"testing"
"time"
)
func TestWrappingStackError(t *testing.T) {
testErr := errors.New("test error")
err := WrapError(testErr)
testErr = fmt.Errorf("wrapped error: %w", err)
var stErr *StackError
require.Equal(t, true, errors.As(testErr, &stErr))
}
func TestLogHandler_Enabled(t *testing.T) {
ctx := context.TODO()
tests := []struct {
name string
curLevel slog.Level
level slog.Level
expected bool
}{
{
name: "debug < info",
curLevel: slog.LevelDebug,
level: slog.LevelInfo,
expected: true,
},
{
name: "info < error",
curLevel: slog.LevelError,
level: slog.LevelInfo,
expected: false,
},
}
for _, test := range tests {
t.Run(test.name, func(t *testing.T) {
lh := &LogHandler{
app: "test-app",
level: test.curLevel,
out: os.Stdout,
mu: &sync.Mutex{},
}
actual := lh.Enabled(ctx, test.level)
assert.Equal(t, test.expected, actual)
})
}
}
func TestLogHandler(t *testing.T) {
buf := bytes.NewBuffer(nil)
lh := &LogHandler{
app: "test-app",
level: slog.LevelDebug,
out: buf,
mu: &sync.Mutex{},
}
logger := slog.New(lh).With("foo", "bar")
ts := time.Date(2025, 1, 19, 21, 49, 1, 0, time.UTC)
logger.Warn("warn message", "ts", ts, "count", 2)
output := buf.String()
expected := `[[33mWARN[0m][test-app] warn message
foo: bar
ts: 2025-01-19 21:49:01
count: 2
`
assert.Equal(t, expected, output)
}