]> Cypherpunks.ru repositories - gorecfile.git/blob - slog/handler_test.go
19fdd8230405d82be177f9656ee3d2f206fe84f2
[gorecfile.git] / slog / handler_test.go
1 package slog
2
3 import (
4         "bytes"
5         "log/slog"
6         "testing"
7         "time"
8
9         "go.cypherpunks.ru/recfile"
10 )
11
12 func TestBasic(t *testing.T) {
13         var buf bytes.Buffer
14         logger := slog.New(NewRecfileHandler(
15                 &buf,
16                 slog.LevelWarn,
17                 "Urgency",
18                 "Message",
19                 "Time",
20         ))
21         if !logger.Enabled(nil, slog.LevelWarn) {
22                 t.FailNow()
23         }
24         logger.Info("won't catch me")
25         logger.Warn("catch me")
26
27         r := recfile.NewReader(&buf)
28         m, err := r.NextMap()
29         if err != nil {
30                 t.Fatal(err)
31         }
32         if m["Message"] != "catch me" {
33                 t.FailNow()
34         }
35         if m["Urgency"] != "WARN" {
36                 t.FailNow()
37         }
38         if _, err = time.Parse(time.RFC3339Nano, m["Time"]); err != nil {
39                 t.FailNow()
40         }
41 }
42
43 func TestTrimmed(t *testing.T) {
44         var buf bytes.Buffer
45         logger := slog.New(NewRecfileHandler(&buf, slog.LevelWarn, "", "Message", ""))
46         logger.Warn("catch me")
47         r := recfile.NewReader(&buf)
48         m, err := r.NextMap()
49         if err != nil {
50                 t.Fatal(err)
51         }
52         if m["Message"] != "catch me" {
53                 t.FailNow()
54         }
55         if m["Urgency"] != "" {
56                 t.FailNow()
57         }
58         if m["Time"] != "" {
59                 t.FailNow()
60         }
61 }
62
63 func TestFeatured(t *testing.T) {
64         var buf bytes.Buffer
65         logger := slog.New(NewRecfileHandler(&buf, slog.LevelInfo, "L", "M", "T"))
66         logger.WithGroup("grou").WithGroup("py").With("foo", "bar").With("bar", "baz").Info(
67                 "catch me", "baz", []string{"multi", "line"},
68         )
69         r := recfile.NewReader(&buf)
70         m, err := r.NextMap()
71         if err != nil {
72                 t.Fatal(err)
73         }
74         if m["M"] != "catch me" {
75                 t.Fatal("M")
76         }
77         if m["L"] != "INFO" {
78                 t.Fatal("L")
79         }
80         if _, err = time.Parse(time.RFC3339Nano, m["T"]); err != nil {
81                 t.Fatal("T")
82         }
83         if m["grou_py_foo"] != "bar" {
84                 t.Fatal("foo")
85         }
86         if m["grou_py_bar"] != "baz" {
87                 t.Fatal("bar")
88         }
89         if m["grou_py_baz"] != "multi\nline" {
90                 t.Fatal("baz")
91         }
92 }