whatcanGOwrong
This commit is contained in:
@@ -0,0 +1,97 @@
|
||||
package logrus
|
||||
|
||||
import (
|
||||
"bytes"
|
||||
"encoding/json"
|
||||
"fmt"
|
||||
"testing"
|
||||
|
||||
"github.com/stretchr/testify/assert"
|
||||
"github.com/stretchr/testify/require"
|
||||
)
|
||||
|
||||
func TestFieldValueError(t *testing.T) {
|
||||
buf := &bytes.Buffer{}
|
||||
l := &Logger{
|
||||
Out: buf,
|
||||
Formatter: new(JSONFormatter),
|
||||
Hooks: make(LevelHooks),
|
||||
Level: DebugLevel,
|
||||
}
|
||||
l.WithField("func", func() {}).Info("test")
|
||||
fmt.Println(buf.String())
|
||||
var data map[string]interface{}
|
||||
if err := json.Unmarshal(buf.Bytes(), &data); err != nil {
|
||||
t.Error("unexpected error", err)
|
||||
}
|
||||
_, ok := data[FieldKeyLogrusError]
|
||||
require.True(t, ok, `cannot found expected "logrus_error" field: %v`, data)
|
||||
}
|
||||
|
||||
func TestNoFieldValueError(t *testing.T) {
|
||||
buf := &bytes.Buffer{}
|
||||
l := &Logger{
|
||||
Out: buf,
|
||||
Formatter: new(JSONFormatter),
|
||||
Hooks: make(LevelHooks),
|
||||
Level: DebugLevel,
|
||||
}
|
||||
l.WithField("str", "str").Info("test")
|
||||
fmt.Println(buf.String())
|
||||
var data map[string]interface{}
|
||||
if err := json.Unmarshal(buf.Bytes(), &data); err != nil {
|
||||
t.Error("unexpected error", err)
|
||||
}
|
||||
_, ok := data[FieldKeyLogrusError]
|
||||
require.False(t, ok)
|
||||
}
|
||||
|
||||
func TestWarninglnNotEqualToWarning(t *testing.T) {
|
||||
buf := &bytes.Buffer{}
|
||||
bufln := &bytes.Buffer{}
|
||||
|
||||
formatter := new(TextFormatter)
|
||||
formatter.DisableTimestamp = true
|
||||
formatter.DisableLevelTruncation = true
|
||||
|
||||
l := &Logger{
|
||||
Out: buf,
|
||||
Formatter: formatter,
|
||||
Hooks: make(LevelHooks),
|
||||
Level: DebugLevel,
|
||||
}
|
||||
l.Warning("hello,", "world")
|
||||
|
||||
l.SetOutput(bufln)
|
||||
l.Warningln("hello,", "world")
|
||||
|
||||
assert.NotEqual(t, buf.String(), bufln.String(), "Warning() and Wantingln() should not be equal")
|
||||
}
|
||||
|
||||
type testBufferPool struct {
|
||||
buffers []*bytes.Buffer
|
||||
get int
|
||||
}
|
||||
|
||||
func (p *testBufferPool) Get() *bytes.Buffer {
|
||||
p.get++
|
||||
return new(bytes.Buffer)
|
||||
}
|
||||
|
||||
func (p *testBufferPool) Put(buf *bytes.Buffer) {
|
||||
p.buffers = append(p.buffers, buf)
|
||||
}
|
||||
|
||||
func TestLogger_SetBufferPool(t *testing.T) {
|
||||
out := &bytes.Buffer{}
|
||||
l := New()
|
||||
l.SetOutput(out)
|
||||
|
||||
pool := new(testBufferPool)
|
||||
l.SetBufferPool(pool)
|
||||
|
||||
l.Info("test")
|
||||
|
||||
assert.Equal(t, pool.get, 1, "Logger.SetBufferPool(): The BufferPool.Get() must be called")
|
||||
assert.Len(t, pool.buffers, 1, "Logger.SetBufferPool(): The BufferPool.Put() must be called")
|
||||
}
|
||||
Reference in New Issue
Block a user