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  }