File: multi_test.go

package info (click to toggle)
golang-github-bep-logg 0.4.0-1
  • links: PTS, VCS
  • area: main
  • in suites: forky, sid, trixie
  • size: 256 kB
  • sloc: makefile: 9
file content (76 lines) | stat: -rw-r--r-- 1,880 bytes parent folder | download
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
package multi_test

import (
	"testing"

	"github.com/bep/logg"
	"github.com/bep/logg/handlers/memory"
	"github.com/bep/logg/handlers/multi"
	qt "github.com/frankban/quicktest"
)

func TestMulti(t *testing.T) {
	a := memory.New()
	b := memory.New()

	l := logg.New(logg.Options{
		Level:   logg.LevelInfo,
		Handler: multi.New(a, b),
	})

	info := l.WithLevel(logg.LevelInfo)

	info.WithField("user", "tj").WithField("id", "123").Log(logg.String("hello"))
	info.Log(logg.String("world"))
	info.WithLevel(logg.LevelError).Log(logg.String("boom"))

	qt.Assert(t, a.Entries, qt.HasLen, 3)
	qt.Assert(t, b.Entries, qt.HasLen, 3)
}

func TestMultiModifyEntry(t *testing.T) {
	var a logg.HandlerFunc = func(e *logg.Entry) error {
		e.Message += "-modified"
		e.Fields = append(e.Fields, logg.Field{Name: "added", Value: "value"})
		return nil
	}

	b := memory.New()

	l := logg.New(
		logg.Options{
			Level:   logg.LevelInfo,
			Handler: multi.New(a, b),
		})

	l.WithLevel(logg.LevelInfo).WithField("initial", "value").Log(logg.String("text"))

	qt.Assert(t, b.Entries, qt.HasLen, 1)
	qt.Assert(t, b.Entries[0].Message, qt.Equals, "text-modified")
	qt.Assert(t, b.Entries[0].Fields, qt.HasLen, 2)
	qt.Assert(t, b.Entries[0].Fields[0].Name, qt.Equals, "initial")
	qt.Assert(t, b.Entries[0].Fields[1].Name, qt.Equals, "added")
}

func TestStopEntry(t *testing.T) {
	var a logg.HandlerFunc = func(e *logg.Entry) error {
		if e.Fields[0].Value == "v2" {
			return logg.ErrStopLogEntry
		}
		return nil
	}

	b := memory.New()

	l := logg.New(
		logg.Options{
			Level:   logg.LevelInfo,
			Handler: multi.New(a, b),
		})

	l.WithLevel(logg.LevelInfo).WithField("v", "v1").Log(logg.String("text"))
	l.WithLevel(logg.LevelInfo).WithField("v", "v2").Log(logg.String("text"))
	l.WithLevel(logg.LevelInfo).WithField("v", "v3").Log(logg.String("text"))

	qt.Assert(t, b.Entries, qt.HasLen, 2)
}