...
1 package logrus
2
3 import (
4 "bytes"
5 "encoding/json"
6 "fmt"
7 "testing"
8
9 "github.com/stretchr/testify/assert"
10 "github.com/stretchr/testify/require"
11 )
12
13 func TestFieldValueError(t *testing.T) {
14 buf := &bytes.Buffer{}
15 l := &Logger{
16 Out: buf,
17 Formatter: new(JSONFormatter),
18 Hooks: make(LevelHooks),
19 Level: DebugLevel,
20 }
21 l.WithField("func", func() {}).Info("test")
22 fmt.Println(buf.String())
23 var data map[string]interface{}
24 if err := json.Unmarshal(buf.Bytes(), &data); err != nil {
25 t.Error("unexpected error", err)
26 }
27 _, ok := data[FieldKeyLogrusError]
28 require.True(t, ok, `cannot found expected "logrus_error" field: %v`, data)
29 }
30
31 func TestNoFieldValueError(t *testing.T) {
32 buf := &bytes.Buffer{}
33 l := &Logger{
34 Out: buf,
35 Formatter: new(JSONFormatter),
36 Hooks: make(LevelHooks),
37 Level: DebugLevel,
38 }
39 l.WithField("str", "str").Info("test")
40 fmt.Println(buf.String())
41 var data map[string]interface{}
42 if err := json.Unmarshal(buf.Bytes(), &data); err != nil {
43 t.Error("unexpected error", err)
44 }
45 _, ok := data[FieldKeyLogrusError]
46 require.False(t, ok)
47 }
48
49 func TestWarninglnNotEqualToWarning(t *testing.T) {
50 buf := &bytes.Buffer{}
51 bufln := &bytes.Buffer{}
52
53 formatter := new(TextFormatter)
54 formatter.DisableTimestamp = true
55 formatter.DisableLevelTruncation = true
56
57 l := &Logger{
58 Out: buf,
59 Formatter: formatter,
60 Hooks: make(LevelHooks),
61 Level: DebugLevel,
62 }
63 l.Warning("hello,", "world")
64
65 l.SetOutput(bufln)
66 l.Warningln("hello,", "world")
67
68 assert.NotEqual(t, buf.String(), bufln.String(), "Warning() and Wantingln() should not be equal")
69 }
70
71 type testBufferPool struct {
72 buffers []*bytes.Buffer
73 get int
74 }
75
76 func (p *testBufferPool) Get() *bytes.Buffer {
77 p.get++
78 return new(bytes.Buffer)
79 }
80
81 func (p *testBufferPool) Put(buf *bytes.Buffer) {
82 p.buffers = append(p.buffers, buf)
83 }
84
85 func TestLogger_SetBufferPool(t *testing.T) {
86 out := &bytes.Buffer{}
87 l := New()
88 l.SetOutput(out)
89
90 pool := new(testBufferPool)
91 l.SetBufferPool(pool)
92
93 l.Info("test")
94
95 assert.Equal(t, pool.get, 1, "Logger.SetBufferPool(): The BufferPool.Get() must be called")
96 assert.Len(t, pool.buffers, 1, "Logger.SetBufferPool(): The BufferPool.Put() must be called")
97 }
98
View as plain text