interface_test.go 1.9 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374
  1. package lgr
  2. import (
  3. "bytes"
  4. "errors"
  5. "fmt"
  6. "log"
  7. "os"
  8. "strings"
  9. "testing"
  10. "time"
  11. "github.com/stretchr/testify/assert"
  12. )
  13. func TestLogger(t *testing.T) {
  14. buff := bytes.NewBufferString("")
  15. lg := Func(func(format string, args ...interface{}) {
  16. fmt.Fprintf(buff, format, args...)
  17. })
  18. lg.Logf("blah %s %d something", "str", 123)
  19. assert.Equal(t, "blah str 123 something", buff.String())
  20. Std.Logf("blah %s %d something", "str", 123)
  21. Std.Logf("[DEBUG] auth failed, %s", errors.New("blah blah"))
  22. }
  23. func TestStd(t *testing.T) {
  24. buff := bytes.NewBufferString("")
  25. log.SetOutput(buff)
  26. defer log.SetOutput(os.Stdout)
  27. Std.Logf("blah %s %d something", "str", 123)
  28. assert.True(t, strings.HasSuffix(buff.String(), "blah str 123 something\n"), buff.String())
  29. }
  30. func TestNoOp(t *testing.T) {
  31. buff := bytes.NewBufferString("")
  32. log.SetOutput(buff)
  33. defer log.SetOutput(os.Stdout)
  34. NoOp.Logf("blah %s %d something", "str", 123)
  35. assert.Equal(t, "", buff.String())
  36. }
  37. func TestDefault(t *testing.T) {
  38. buff := bytes.NewBuffer([]byte{})
  39. def.stdout = buff
  40. def.now = func() time.Time { return time.Date(2018, 1, 7, 13, 2, 34, 0, time.Local) }
  41. defer func() {
  42. def.stdout = os.Stdout
  43. def.now = time.Now
  44. }()
  45. Printf("[INFO] something 123 %s", "xyz")
  46. assert.Equal(t, "2018/01/07 13:02:34.000 INFO something 123 xyz\n", buff.String())
  47. buff.Reset()
  48. Printf("[DEBUG] something 123 %s", "xyz")
  49. assert.Equal(t, "", buff.String())
  50. buff.Reset()
  51. Print("[WARN] something 123")
  52. assert.Equal(t, "2018/01/07 13:02:34.000 WARN something 123\n", buff.String())
  53. }
  54. func TestDefaultWithSetup(t *testing.T) {
  55. buff := bytes.NewBuffer([]byte{})
  56. Setup(Out(buff), Debug, CallerFile, CallerFunc)
  57. def.now = func() time.Time { return time.Date(2018, 1, 7, 13, 2, 34, 0, time.Local) }
  58. Printf("[INFO] something 123 %s", "xyz")
  59. assert.Equal(t, "2018/01/07 13:02:34.000 INFO {lgr/interface_test.go:72 lgr.TestDefaultWithSetup} something 123 xyz\n", buff.String())
  60. }