]> Cypherpunks.ru repositories - gorecfile.git/blobdiff - slog/handler_test.go
log.slog handler
[gorecfile.git] / slog / handler_test.go
diff --git a/slog/handler_test.go b/slog/handler_test.go
new file mode 100644 (file)
index 0000000..19fdd82
--- /dev/null
@@ -0,0 +1,92 @@
+package slog
+
+import (
+       "bytes"
+       "log/slog"
+       "testing"
+       "time"
+
+       "go.cypherpunks.ru/recfile"
+)
+
+func TestBasic(t *testing.T) {
+       var buf bytes.Buffer
+       logger := slog.New(NewRecfileHandler(
+               &buf,
+               slog.LevelWarn,
+               "Urgency",
+               "Message",
+               "Time",
+       ))
+       if !logger.Enabled(nil, slog.LevelWarn) {
+               t.FailNow()
+       }
+       logger.Info("won't catch me")
+       logger.Warn("catch me")
+
+       r := recfile.NewReader(&buf)
+       m, err := r.NextMap()
+       if err != nil {
+               t.Fatal(err)
+       }
+       if m["Message"] != "catch me" {
+               t.FailNow()
+       }
+       if m["Urgency"] != "WARN" {
+               t.FailNow()
+       }
+       if _, err = time.Parse(time.RFC3339Nano, m["Time"]); err != nil {
+               t.FailNow()
+       }
+}
+
+func TestTrimmed(t *testing.T) {
+       var buf bytes.Buffer
+       logger := slog.New(NewRecfileHandler(&buf, slog.LevelWarn, "", "Message", ""))
+       logger.Warn("catch me")
+       r := recfile.NewReader(&buf)
+       m, err := r.NextMap()
+       if err != nil {
+               t.Fatal(err)
+       }
+       if m["Message"] != "catch me" {
+               t.FailNow()
+       }
+       if m["Urgency"] != "" {
+               t.FailNow()
+       }
+       if m["Time"] != "" {
+               t.FailNow()
+       }
+}
+
+func TestFeatured(t *testing.T) {
+       var buf bytes.Buffer
+       logger := slog.New(NewRecfileHandler(&buf, slog.LevelInfo, "L", "M", "T"))
+       logger.WithGroup("grou").WithGroup("py").With("foo", "bar").With("bar", "baz").Info(
+               "catch me", "baz", []string{"multi", "line"},
+       )
+       r := recfile.NewReader(&buf)
+       m, err := r.NextMap()
+       if err != nil {
+               t.Fatal(err)
+       }
+       if m["M"] != "catch me" {
+               t.Fatal("M")
+       }
+       if m["L"] != "INFO" {
+               t.Fatal("L")
+       }
+       if _, err = time.Parse(time.RFC3339Nano, m["T"]); err != nil {
+               t.Fatal("T")
+       }
+       if m["grou_py_foo"] != "bar" {
+               t.Fatal("foo")
+       }
+       if m["grou_py_bar"] != "baz" {
+               t.Fatal("bar")
+       }
+       if m["grou_py_baz"] != "multi\nline" {
+               t.Fatal("baz")
+       }
+}