|
@@ -0,0 +1,116 @@
|
|
|
|
|
+package log
|
|
|
|
|
+
|
|
|
|
|
+import (
|
|
|
|
|
+ "testing"
|
|
|
|
|
+
|
|
|
|
|
+ "github.com/inconshreveable/log15"
|
|
|
|
|
+ . "github.com/smartystreets/goconvey/convey"
|
|
|
|
|
+)
|
|
|
|
|
+
|
|
|
|
|
+type FakeLogger struct {
|
|
|
|
|
+ debug string
|
|
|
|
|
+ info string
|
|
|
|
|
+ warn string
|
|
|
|
|
+ err string
|
|
|
|
|
+ crit string
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) New(ctx ...interface{}) log15.Logger {
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) Debug(msg string, ctx ...interface{}) {
|
|
|
|
|
+ f.debug = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) Info(msg string, ctx ...interface{}) {
|
|
|
|
|
+ f.info = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) Warn(msg string, ctx ...interface{}) {
|
|
|
|
|
+ f.warn = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) Error(msg string, ctx ...interface{}) {
|
|
|
|
|
+ f.err = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) Crit(msg string, ctx ...interface{}) {
|
|
|
|
|
+ f.crit = msg
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) GetHandler() log15.Handler {
|
|
|
|
|
+ return nil
|
|
|
|
|
+}
|
|
|
|
|
+
|
|
|
|
|
+func (f *FakeLogger) SetHandler(l log15.Handler) {}
|
|
|
|
|
+
|
|
|
|
|
+func TestLogWriter(t *testing.T) {
|
|
|
|
|
+ Convey("When writing to a LogWriter", t, func() {
|
|
|
|
|
+ Convey("Should write using the correct level [crit]", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlCrit, "")
|
|
|
|
|
+ n, err := crit.Write([]byte("crit"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 4)
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.crit, ShouldEqual, "crit")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Convey("Should write using the correct level [error]", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlError, "")
|
|
|
|
|
+ n, err := crit.Write([]byte("error"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 5)
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.err, ShouldEqual, "error")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Convey("Should write using the correct level [warn]", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlWarn, "")
|
|
|
|
|
+ n, err := crit.Write([]byte("warn"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 4)
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.warn, ShouldEqual, "warn")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Convey("Should write using the correct level [info]", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlInfo, "")
|
|
|
|
|
+ n, err := crit.Write([]byte("info"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 4)
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.info, ShouldEqual, "info")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Convey("Should write using the correct level [debug]", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlDebug, "")
|
|
|
|
|
+ n, err := crit.Write([]byte("debug"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 5)
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.debug, ShouldEqual, "debug")
|
|
|
|
|
+ })
|
|
|
|
|
+
|
|
|
|
|
+ Convey("Should prefix the output with the prefix", func() {
|
|
|
|
|
+ fake := &FakeLogger{}
|
|
|
|
|
+
|
|
|
|
|
+ crit := NewLogWriter(fake, LvlDebug, "prefix")
|
|
|
|
|
+ n, err := crit.Write([]byte("debug"))
|
|
|
|
|
+
|
|
|
|
|
+ So(n, ShouldEqual, 5) // n is how much of input consumed
|
|
|
|
|
+ So(err, ShouldBeNil)
|
|
|
|
|
+ So(fake.debug, ShouldEqual, "prefixdebug")
|
|
|
|
|
+ })
|
|
|
|
|
+ })
|
|
|
|
|
+}
|