github.com/rigado/snapd@v2.42.5-go-mod+incompatible/logger/logger_test.go (about)

     1  // -*- Mode: Go; indent-tabs-mode: t -*-
     2  
     3  /*
     4   * Copyright (C) 2014-2015 Canonical Ltd
     5   *
     6   * This program is free software: you can redistribute it and/or modify
     7   * it under the terms of the GNU General Public License version 3 as
     8   * published by the Free Software Foundation.
     9   *
    10   * This program is distributed in the hope that it will be useful,
    11   * but WITHOUT ANY WARRANTY; without even the implied warranty of
    12   * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
    13   * GNU General Public License for more details.
    14   *
    15   * You should have received a copy of the GNU General Public License
    16   * along with this program.  If not, see <http://www.gnu.org/licenses/>.
    17   *
    18   */
    19  
    20  package logger_test
    21  
    22  import (
    23  	"bytes"
    24  	"log"
    25  	"os"
    26  	"runtime"
    27  	"testing"
    28  
    29  	. "gopkg.in/check.v1"
    30  
    31  	"github.com/snapcore/snapd/logger"
    32  	"github.com/snapcore/snapd/testutil"
    33  )
    34  
    35  // Hook up check.v1 into the "go test" runner
    36  func Test(t *testing.T) { TestingT(t) }
    37  
    38  var _ = Suite(&LogSuite{})
    39  
    40  type LogSuite struct {
    41  	logbuf        *bytes.Buffer
    42  	restoreLogger func()
    43  }
    44  
    45  func (s *LogSuite) SetUpTest(c *C) {
    46  	s.logbuf, s.restoreLogger = logger.MockLogger()
    47  }
    48  
    49  func (s *LogSuite) TearDownTest(c *C) {
    50  	s.restoreLogger()
    51  }
    52  
    53  func (s *LogSuite) TestDefault(c *C) {
    54  	// env shenanigans
    55  	runtime.LockOSThread()
    56  	defer runtime.UnlockOSThread()
    57  
    58  	oldTerm, hadTerm := os.LookupEnv("TERM")
    59  	defer func() {
    60  		if hadTerm {
    61  			os.Setenv("TERM", oldTerm)
    62  		} else {
    63  			os.Unsetenv("TERM")
    64  		}
    65  	}()
    66  
    67  	if logger.GetLogger() != nil {
    68  		logger.SetLogger(nil)
    69  	}
    70  	c.Check(logger.GetLogger(), IsNil)
    71  
    72  	os.Setenv("TERM", "dumb")
    73  	err := logger.SimpleSetup()
    74  	c.Assert(err, IsNil)
    75  	c.Check(logger.GetLogger(), NotNil)
    76  	c.Check(logger.GetLoggerFlags(), Equals, logger.DefaultFlags)
    77  
    78  	os.Unsetenv("TERM")
    79  	err = logger.SimpleSetup()
    80  	c.Assert(err, IsNil)
    81  	c.Check(logger.GetLogger(), NotNil)
    82  	c.Check(logger.GetLoggerFlags(), Equals, log.Lshortfile)
    83  }
    84  
    85  func (s *LogSuite) TestNew(c *C) {
    86  	var buf bytes.Buffer
    87  	l, err := logger.New(&buf, logger.DefaultFlags)
    88  	c.Assert(err, IsNil)
    89  	c.Assert(l, NotNil)
    90  }
    91  
    92  func (s *LogSuite) TestDebugf(c *C) {
    93  	logger.Debugf("xyzzy")
    94  	c.Check(s.logbuf.String(), Equals, "")
    95  }
    96  
    97  func (s *LogSuite) TestDebugfEnv(c *C) {
    98  	os.Setenv("SNAPD_DEBUG", "1")
    99  	defer os.Unsetenv("SNAPD_DEBUG")
   100  
   101  	logger.Debugf("xyzzy")
   102  	c.Check(s.logbuf.String(), testutil.Contains, `DEBUG: xyzzy`)
   103  }
   104  
   105  func (s *LogSuite) TestNoticef(c *C) {
   106  	logger.Noticef("xyzzy")
   107  	c.Check(s.logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: xyzzy`)
   108  }
   109  
   110  func (s *LogSuite) TestPanicf(c *C) {
   111  	c.Check(func() { logger.Panicf("xyzzy") }, Panics, "xyzzy")
   112  	c.Check(s.logbuf.String(), Matches, `(?m).*logger_test\.go:\d+: PANIC xyzzy`)
   113  }