...

Source file src/github.com/sirupsen/logrus/logger_test.go

Documentation: github.com/sirupsen/logrus

     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