diff options
| author | Michael Vogt <michael.vogt@gmail.com> | 2017-09-13 19:14:28 +0200 |
|---|---|---|
| committer | Samuele Pedroni <pedronis@lucediurna.net> | 2017-09-13 19:14:28 +0200 |
| commit | ee9452fe754067a88f7a31d839f9da2a20887f60 (patch) | |
| tree | 050ca239a530122a6dbdb891b16bfa07bd54f903 /logger | |
| parent | 10d6cce8c1a7bf57e0d83e554b99c2d927378ce3 (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.go | 16 | ||||
| -rw-r--r-- | logger/logger_test.go | 40 |
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`) } |
