output_test.go 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107
  1. package logger
  2. import (
  3. "bufio"
  4. "bytes"
  5. "fmt"
  6. "strings"
  7. "testing"
  8. "time"
  9. "github.com/stretchr/testify/assert"
  10. )
  11. func TestLogLevel(t *testing.T) {
  12. timeFormat := "2006-01-02"
  13. f := NewDefaultFormatter(timeFormat)
  14. m := NewWriteManager()
  15. var testBuffer bytes.Buffer
  16. logger := NewOutputWriter(m)
  17. logger.Add(&testBuffer, f, InfoLevel, DebugLevel)
  18. testTime := f.Timestamp(InfoLevel, time.Now())
  19. testInfo := "hello Dalton, how are you doing?"
  20. logger.Info(testInfo)
  21. tesErr := "hello Austin, how did it break today?"
  22. logger.Error(tesErr)
  23. testDebug := "hello Bill, who are you?"
  24. logger.Debug(testDebug)
  25. m.Shutdown()
  26. lines := strings.Split(testBuffer.String(), "\n")
  27. assert.Len(t, lines, 3, "only expected two strings in the buffer")
  28. infoLine := lines[0]
  29. debugLine := lines[1]
  30. compareInfo := fmt.Sprintf("%s%s", testTime, testInfo)
  31. assert.Equal(t, compareInfo, infoLine, "expect the strings to match")
  32. compareDebug := fmt.Sprintf("%s%s", testTime, testDebug)
  33. assert.Equal(t, compareDebug, debugLine, "expect the strings to match")
  34. }
  35. func TestOutputWrite(t *testing.T) {
  36. timeFormat := "2006-01-02"
  37. f := NewDefaultFormatter(timeFormat)
  38. m := NewWriteManager()
  39. var testBuffer bytes.Buffer
  40. logger := NewOutputWriter(m)
  41. logger.Add(&testBuffer, f, InfoLevel)
  42. logger.Debugf("debug message not logged here")
  43. testData := "hello Bob Bork, how are you doing?"
  44. logger.Info(testData)
  45. testTime := f.Timestamp(InfoLevel, time.Now())
  46. m.Shutdown()
  47. scanner := bufio.NewScanner(&testBuffer)
  48. scanner.Scan()
  49. line := scanner.Text()
  50. assert.NoError(t, scanner.Err())
  51. compareLine := fmt.Sprintf("%s%s", testTime, testData)
  52. assert.Equal(t, compareLine, line, "expect the strings to match")
  53. }
  54. func TestFatalWrite(t *testing.T) {
  55. timeFormat := "2006-01-02"
  56. f := NewDefaultFormatter(timeFormat)
  57. m := NewWriteManager()
  58. var testBuffer bytes.Buffer
  59. logger := NewOutputWriter(m)
  60. logger.Add(&testBuffer, f, FatalLevel)
  61. oldOsExit := osExit
  62. defer func() { osExit = oldOsExit }()
  63. var got int
  64. myExit := func(code int) {
  65. got = code
  66. }
  67. osExit = myExit
  68. testData := "so long y'all"
  69. logger.Fatal(testData)
  70. testTime := f.Timestamp(FatalLevel, time.Now())
  71. scanner := bufio.NewScanner(&testBuffer)
  72. scanner.Scan()
  73. line := scanner.Text()
  74. assert.NoError(t, scanner.Err())
  75. compareLine := fmt.Sprintf("%s%s", testTime, testData)
  76. assert.Equal(t, compareLine, line, "expect the strings to match")
  77. assert.Equal(t, got, 1, "exit code should be one for a fatal log")
  78. }