2
0

error_test.go 1.6 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869
  1. package util
  2. import (
  3. "errors"
  4. "testing"
  5. "github.com/sirupsen/logrus"
  6. "github.com/stretchr/testify/assert"
  7. )
  8. type m map[string]interface{}
  9. type TestLogWriter struct {
  10. Logs []string
  11. }
  12. func NewTestLogWriter() *TestLogWriter {
  13. return &TestLogWriter{Logs: make([]string, 0)}
  14. }
  15. func (tl *TestLogWriter) Write(p []byte) (n int, err error) {
  16. tl.Logs = append(tl.Logs, string(p))
  17. return len(p), nil
  18. }
  19. func (tl *TestLogWriter) Reset() {
  20. tl.Logs = tl.Logs[:0]
  21. }
  22. func TestContextualError_Log(t *testing.T) {
  23. l := logrus.New()
  24. l.Formatter = &logrus.TextFormatter{
  25. DisableTimestamp: true,
  26. DisableColors: true,
  27. }
  28. tl := NewTestLogWriter()
  29. l.Out = tl
  30. // Test a full context line
  31. tl.Reset()
  32. e := NewContextualError("test message", m{"field": "1"}, errors.New("error"))
  33. e.Log(l)
  34. assert.Equal(t, []string{"level=error msg=\"test message\" error=error field=1\n"}, tl.Logs)
  35. // Test a line with an error and msg but no fields
  36. tl.Reset()
  37. e = NewContextualError("test message", nil, errors.New("error"))
  38. e.Log(l)
  39. assert.Equal(t, []string{"level=error msg=\"test message\" error=error\n"}, tl.Logs)
  40. // Test just a context and fields
  41. tl.Reset()
  42. e = NewContextualError("test message", m{"field": "1"}, nil)
  43. e.Log(l)
  44. assert.Equal(t, []string{"level=error msg=\"test message\" field=1\n"}, tl.Logs)
  45. // Test just a context
  46. tl.Reset()
  47. e = NewContextualError("test message", nil, nil)
  48. e.Log(l)
  49. assert.Equal(t, []string{"level=error msg=\"test message\"\n"}, tl.Logs)
  50. // Test just an error
  51. tl.Reset()
  52. e = NewContextualError("", nil, errors.New("error"))
  53. e.Log(l)
  54. assert.Equal(t, []string{"level=error error=error\n"}, tl.Logs)
  55. }