| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869 | package utilimport (	"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)}
 |