summaryrefslogtreecommitdiff
path: root/logger
diff options
authorMichael Vogt <michael.vogt@gmail.com>2017-09-13 19:14:28 +0200
committerSamuele Pedroni <pedronis@lucediurna.net>2017-09-13 19:14:28 +0200
commitee9452fe754067a88f7a31d839f9da2a20887f60 (patch)
tree050ca239a530122a6dbdb891b16bfa07bd54f903 /logger
parent10d6cce8c1a7bf57e0d83e554b99c2d927378ce3 (diff)
many: add logger.MockLogger() and use it in the tests (#3911)
We have two noisy tests in the unittest runs right now. Messages get logged to stdout which really should not be visible. With the use of the new logger.MockLogger() those are now no longer visible. I also tweaked the existing pattern of: var logbuf bytes.Buffer l, err := logger.New(&logbuf, logger.DefaultFlags) c.Assert(err, IsNil) logger.SetLogger(l) to just use: logbuf, restore := logger.MockLogger() defer restore()
Diffstat (limited to 'logger')
-rw-r--r--logger/logger.go16
-rw-r--r--logger/logger_test.go40
2 files changed, 24 insertions, 32 deletions
diff --git a/logger/logger.go b/logger/logger.go
index 216aa79ad7..065e2a02ca 100644
--- a/logger/logger.go
+++ b/logger/logger.go
@@ -20,6 +20,7 @@
package logger
import (
+ "bytes"
"fmt"
"io"
"log"
@@ -86,6 +87,21 @@ func Debugf(format string, v ...interface{}) {
logger.Debug(msg)
}
+// MockLogger replaces the exiting logger with a buffer and returns
+// the log buffer and a restore function.
+func MockLogger() (buf *bytes.Buffer, restore func()) {
+ buf = &bytes.Buffer{}
+ oldLogger := logger
+ l, err := New(buf, DefaultFlags)
+ if err != nil {
+ panic(err)
+ }
+ SetLogger(l)
+ return buf, func() {
+ SetLogger(oldLogger)
+ }
+}
+
// SetLogger sets the global logger to the given one
func SetLogger(l Logger) {
lock.Lock()
diff --git a/logger/logger_test.go b/logger/logger_test.go
index 9996f04f62..c2054d3ca1 100644
--- a/logger/logger_test.go
+++ b/logger/logger_test.go
@@ -36,16 +36,16 @@ func Test(t *testing.T) { TestingT(t) }
var _ = Suite(&LogSuite{})
type LogSuite struct {
- oldLogger logger.Logger
+ logbuf *bytes.Buffer
+ restoreLogger func()
}
func (s *LogSuite) SetUpTest(c *C) {
- s.oldLogger = logger.GetLogger()
- logger.SetLogger(logger.NullLogger)
+ s.logbuf, s.restoreLogger = logger.MockLogger()
}
func (s *LogSuite) TearDownTest(c *C) {
- logger.SetLogger(s.oldLogger)
+ s.restoreLogger()
}
func (s *LogSuite) TestDefault(c *C) {
@@ -67,48 +67,24 @@ func (s *LogSuite) TestNew(c *C) {
}
func (s *LogSuite) TestDebugf(c *C) {
- var logbuf bytes.Buffer
- l, err := logger.New(&logbuf, logger.DefaultFlags)
- c.Assert(err, IsNil)
-
- logger.SetLogger(l)
-
logger.Debugf("xyzzy")
- c.Check(logbuf.String(), Equals, "")
+ c.Check(s.logbuf.String(), Equals, "")
}
func (s *LogSuite) TestDebugfEnv(c *C) {
- var logbuf bytes.Buffer
- l, err := logger.New(&logbuf, logger.DefaultFlags)
- c.Assert(err, IsNil)
-
- logger.SetLogger(l)
-
os.Setenv("SNAPD_DEBUG", "1")
defer os.Unsetenv("SNAPD_DEBUG")
logger.Debugf("xyzzy")
- c.Check(logbuf.String(), testutil.Contains, `DEBUG: xyzzy`)
+ c.Check(s.logbuf.String(), testutil.Contains, `DEBUG: xyzzy`)
}
func (s *LogSuite) TestNoticef(c *C) {
- var logbuf bytes.Buffer
- l, err := logger.New(&logbuf, logger.DefaultFlags)
- c.Assert(err, IsNil)
-
- logger.SetLogger(l)
-
logger.Noticef("xyzzy")
- c.Check(logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
+ c.Check(s.logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
}
func (s *LogSuite) TestPanicf(c *C) {
- var logbuf bytes.Buffer
- l, err := logger.New(&logbuf, logger.DefaultFlags)
- c.Assert(err, IsNil)
-
- logger.SetLogger(l)
-
c.Check(func() { logger.Panicf("xyzzy") }, Panics, "xyzzy")
- c.Check(logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
+ c.Check(s.logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
}