generated from atomicgo/template
-
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathsplitslog_test.go
50 lines (38 loc) · 923 Bytes
/
splitslog_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
package splitslog_test
import (
"bytes"
"encoding/json"
"log/slog"
"testing"
"testing/slogtest"
"atomicgo.dev/splitslog"
)
func TestSplitHandler(t *testing.T) {
t.Parallel()
var buf bytes.Buffer
splitter := splitslog.Splitter{
slog.LevelDebug: slog.NewJSONHandler(&buf, nil),
slog.LevelInfo: slog.NewJSONHandler(&buf, nil),
slog.LevelWarn: slog.NewJSONHandler(&buf, nil),
slog.LevelError: slog.NewJSONHandler(&buf, nil),
}
handler := splitslog.NewSplitHandler(splitter)
results := func() []map[string]any {
var resultMap []map[string]any
for _, line := range bytes.Split(buf.Bytes(), []byte{'\n'}) {
if len(line) == 0 {
continue
}
var m map[string]any
if err := json.Unmarshal(line, &m); err != nil {
t.Fatal(err)
}
resultMap = append(resultMap, m)
}
return resultMap
}
err := slogtest.TestHandler(handler, results)
if err != nil {
t.Fatal(err)
}
}