github.com/cloudbase/juju-core@v0.0.0-20140504232958-a7271ac7912f/log/log_test.go (about) 1 // Copyright 2011, 2012, 2013 Canonical Ltd. 2 // Licensed under the AGPLv3, see LICENCE file for details. 3 4 package log_test 5 6 import ( 7 "bytes" 8 "fmt" 9 "testing" 10 "time" 11 12 "github.com/juju/loggo" 13 gc "launchpad.net/gocheck" 14 15 "launchpad.net/juju-core/log" 16 ) 17 18 func Test(t *testing.T) { 19 gc.TestingT(t) 20 } 21 22 type testWriter struct { 23 bytes.Buffer 24 } 25 26 type suite struct { 27 writer *testWriter 28 oldWriter loggo.Writer 29 oldLevel loggo.Level 30 } 31 32 var _ = gc.Suite(&suite{}) 33 34 func (t *testWriter) Write(level loggo.Level, module, filename string, line int, timestamp time.Time, message string) { 35 t.Buffer.WriteString(fmt.Sprintf("%s %s %s", level, module, message)) 36 } 37 38 func (s *suite) SetUpTest(c *gc.C) { 39 var err error 40 s.writer = &testWriter{} 41 s.oldWriter, s.oldLevel, err = loggo.RemoveWriter("default") 42 c.Assert(err, gc.IsNil) 43 err = loggo.RegisterWriter("test", s.writer, loggo.TRACE) 44 c.Assert(err, gc.IsNil) 45 logger := loggo.GetLogger("juju") 46 logger.SetLogLevel(loggo.TRACE) 47 } 48 49 func (s *suite) TearDownTest(c *gc.C) { 50 _, _, err := loggo.RemoveWriter("test") 51 c.Assert(err, gc.IsNil) 52 err = loggo.RegisterWriter("default", s.oldWriter, s.oldLevel) 53 c.Assert(err, gc.IsNil) 54 } 55 56 func (s *suite) TestLoggerDebug(c *gc.C) { 57 input := "Hello World" 58 log.Debugf(input) 59 c.Assert(s.writer.String(), gc.Equals, "DEBUG juju "+input) 60 } 61 62 func (s *suite) TestInfoLogger(c *gc.C) { 63 input := "Hello World" 64 log.Infof(input) 65 c.Assert(s.writer.String(), gc.Equals, "INFO juju "+input) 66 } 67 68 func (s *suite) TestErrorLogger(c *gc.C) { 69 input := "Hello World" 70 log.Errorf(input) 71 c.Assert(s.writer.String(), gc.Equals, "ERROR juju "+input) 72 } 73 74 func (s *suite) TestWarningLogger(c *gc.C) { 75 input := "Hello World" 76 log.Warningf(input) 77 c.Assert(s.writer.String(), gc.Equals, "WARNING juju "+input) 78 } 79 80 func (s *suite) TestNoticeLogger(c *gc.C) { 81 input := "Hello World" 82 log.Noticef(input) 83 c.Assert(s.writer.String(), gc.Equals, "INFO juju "+input) 84 }