aboutsummaryrefslogtreecommitdiffstats
path: root/logging/writer_test.go
diff options
context:
space:
mode:
Diffstat (limited to 'logging/writer_test.go')
-rw-r--r--logging/writer_test.go39
1 files changed, 39 insertions, 0 deletions
diff --git a/logging/writer_test.go b/logging/writer_test.go
new file mode 100644
index 0000000..3e2897d
--- /dev/null
+++ b/logging/writer_test.go
@@ -0,0 +1,39 @@
+package logging_test
+
+import (
+ "bytes"
+ "encoding/json"
+ "log/slog"
+ "testing"
+ "testing/slogtest"
+
+ "go.sudomsg.com/kit/logging"
+)
+
+func TestWriterHandler(t *testing.T) {
+ var buf bytes.Buffer
+
+ slogtest.Run(t,
+ func(t *testing.T) slog.Handler {
+ buf.Reset()
+ sink := logging.NewWriterSink(&buf, logging.JSONEncoder, slog.LevelDebug, nil)
+ return logging.NewSinkHandler(sink)
+ },
+ func(t *testing.T) map[string]any {
+ t.Helper()
+
+ if buf.Len() == 0 {
+ t.Fatal("buffer is empty; no log was written")
+ }
+ b := buf.Bytes()
+ r := bytes.NewReader(b)
+ dec := json.NewDecoder(r)
+ m := make(map[string]any)
+ if err := dec.Decode(&m); err != nil {
+ t.Fatalf("%v", err)
+ }
+
+ return m
+ },
+ )
+}