123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 |
- package util
- import (
- "errors"
- "testing"
- "github.com/sirupsen/logrus"
- "github.com/stretchr/testify/assert"
- )
- type m map[string]interface{}
- type TestLogWriter struct {
- Logs []string
- }
- func NewTestLogWriter() *TestLogWriter {
- return &TestLogWriter{Logs: make([]string, 0)}
- }
- func (tl *TestLogWriter) Write(p []byte) (n int, err error) {
- tl.Logs = append(tl.Logs, string(p))
- return len(p), nil
- }
- func (tl *TestLogWriter) Reset() {
- tl.Logs = tl.Logs[:0]
- }
- func TestContextualError_Log(t *testing.T) {
- l := logrus.New()
- l.Formatter = &logrus.TextFormatter{
- DisableTimestamp: true,
- DisableColors: true,
- }
- tl := NewTestLogWriter()
- l.Out = tl
- // Test a full context line
- tl.Reset()
- e := NewContextualError("test message", m{"field": "1"}, errors.New("error"))
- e.Log(l)
- assert.Equal(t, []string{"level=error msg=\"test message\" error=error field=1\n"}, tl.Logs)
- // Test a line with an error and msg but no fields
- tl.Reset()
- e = NewContextualError("test message", nil, errors.New("error"))
- e.Log(l)
- assert.Equal(t, []string{"level=error msg=\"test message\" error=error\n"}, tl.Logs)
- // Test just a context and fields
- tl.Reset()
- e = NewContextualError("test message", m{"field": "1"}, nil)
- e.Log(l)
- assert.Equal(t, []string{"level=error msg=\"test message\" field=1\n"}, tl.Logs)
- // Test just a context
- tl.Reset()
- e = NewContextualError("test message", nil, nil)
- e.Log(l)
- assert.Equal(t, []string{"level=error msg=\"test message\"\n"}, tl.Logs)
- // Test just an error
- tl.Reset()
- e = NewContextualError("", nil, errors.New("error"))
- e.Log(l)
- assert.Equal(t, []string{"level=error error=error\n"}, tl.Logs)
- }
|