log_writer_test.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116
  1. package log
  2. import (
  3. "testing"
  4. "github.com/inconshreveable/log15"
  5. . "github.com/smartystreets/goconvey/convey"
  6. )
  7. type FakeLogger struct {
  8. debug string
  9. info string
  10. warn string
  11. err string
  12. crit string
  13. }
  14. func (f *FakeLogger) New(ctx ...interface{}) log15.Logger {
  15. return nil
  16. }
  17. func (f *FakeLogger) Debug(msg string, ctx ...interface{}) {
  18. f.debug = msg
  19. }
  20. func (f *FakeLogger) Info(msg string, ctx ...interface{}) {
  21. f.info = msg
  22. }
  23. func (f *FakeLogger) Warn(msg string, ctx ...interface{}) {
  24. f.warn = msg
  25. }
  26. func (f *FakeLogger) Error(msg string, ctx ...interface{}) {
  27. f.err = msg
  28. }
  29. func (f *FakeLogger) Crit(msg string, ctx ...interface{}) {
  30. f.crit = msg
  31. }
  32. func (f *FakeLogger) GetHandler() log15.Handler {
  33. return nil
  34. }
  35. func (f *FakeLogger) SetHandler(l log15.Handler) {}
  36. func TestLogWriter(t *testing.T) {
  37. Convey("When writing to a LogWriter", t, func() {
  38. Convey("Should write using the correct level [crit]", func() {
  39. fake := &FakeLogger{}
  40. crit := NewLogWriter(fake, LvlCrit, "")
  41. n, err := crit.Write([]byte("crit"))
  42. So(n, ShouldEqual, 4)
  43. So(err, ShouldBeNil)
  44. So(fake.crit, ShouldEqual, "crit")
  45. })
  46. Convey("Should write using the correct level [error]", func() {
  47. fake := &FakeLogger{}
  48. crit := NewLogWriter(fake, LvlError, "")
  49. n, err := crit.Write([]byte("error"))
  50. So(n, ShouldEqual, 5)
  51. So(err, ShouldBeNil)
  52. So(fake.err, ShouldEqual, "error")
  53. })
  54. Convey("Should write using the correct level [warn]", func() {
  55. fake := &FakeLogger{}
  56. crit := NewLogWriter(fake, LvlWarn, "")
  57. n, err := crit.Write([]byte("warn"))
  58. So(n, ShouldEqual, 4)
  59. So(err, ShouldBeNil)
  60. So(fake.warn, ShouldEqual, "warn")
  61. })
  62. Convey("Should write using the correct level [info]", func() {
  63. fake := &FakeLogger{}
  64. crit := NewLogWriter(fake, LvlInfo, "")
  65. n, err := crit.Write([]byte("info"))
  66. So(n, ShouldEqual, 4)
  67. So(err, ShouldBeNil)
  68. So(fake.info, ShouldEqual, "info")
  69. })
  70. Convey("Should write using the correct level [debug]", func() {
  71. fake := &FakeLogger{}
  72. crit := NewLogWriter(fake, LvlDebug, "")
  73. n, err := crit.Write([]byte("debug"))
  74. So(n, ShouldEqual, 5)
  75. So(err, ShouldBeNil)
  76. So(fake.debug, ShouldEqual, "debug")
  77. })
  78. Convey("Should prefix the output with the prefix", func() {
  79. fake := &FakeLogger{}
  80. crit := NewLogWriter(fake, LvlDebug, "prefix")
  81. n, err := crit.Write([]byte("debug"))
  82. So(n, ShouldEqual, 5) // n is how much of input consumed
  83. So(err, ShouldBeNil)
  84. So(fake.debug, ShouldEqual, "prefixdebug")
  85. })
  86. })
  87. }