github.com/hy3/cuto@v0.9.8-0.20160830082821-aa6652f877b7/log/log_test.go (about)

     1  package log
     2  
     3  import (
     4  	"os"
     5  	"path/filepath"
     6  	"runtime"
     7  	"testing"
     8  
     9  	"github.com/cihub/seelog"
    10  
    11  	"github.com/unirita/cuto/testutil"
    12  	"github.com/unirita/cuto/util"
    13  )
    14  
    15  var lockName = getLockName()
    16  
    17  func getLockName() string {
    18  	if runtime.GOOS == "windows" {
    19  		return "log_test"
    20  	} else {
    21  		return "test.lock"
    22  	}
    23  }
    24  
    25  func initForTest() {
    26  	config := `
    27  <seelog type="sync" minlevel="trace">
    28      <outputs formatid="common">
    29          <console />
    30      </outputs>
    31      <formats>
    32          <format id="common" format="2015-04-01 12:34:56.789 [%LEV] %Msg%n"/>
    33      </formats>
    34  </seelog>`
    35  	logger, _ := seelog.LoggerFromConfigAsString(config)
    36  	locker, _ = util.InitLock(lockName)
    37  	seelog.ReplaceLogger(logger)
    38  	valid = true
    39  }
    40  
    41  func TestInit_ログレベルの指定が不正な場合にエラーが発生する(t *testing.T) {
    42  	err := Init("", "test", "", "invalid", 1000, 2, 1)
    43  	if err == nil {
    44  		t.Error("エラーが発生していない。")
    45  	}
    46  }
    47  
    48  func TestInit_初期化処理終了時点でログファイルがあらかじめ生成される(t *testing.T) {
    49  	testDir := filepath.Join(testutil.GetBaseDir(), "log", "_tmp")
    50  	os.RemoveAll(testDir)
    51  	os.MkdirAll(testDir, 0777)
    52  
    53  	Init(testDir, "test", "", "info", 1000, 2, 1)
    54  	expectedFile := filepath.Join(testDir, "test.log")
    55  	if _, err := os.Stat(expectedFile); err != nil {
    56  		t.Error("Log file must be created, but it was not.")
    57  		t.Logf("filepath: %s", expectedFile)
    58  	}
    59  }
    60  
    61  func TestTrace_traceレベルのメッセージを出力できる(t *testing.T) {
    62  	c := testutil.NewStdoutCapturer()
    63  	initForTest()
    64  	defer Term()
    65  
    66  	c.Start()
    67  	Trace("testmessage")
    68  	output := c.Stop()
    69  
    70  	if output != "2015-04-01 12:34:56.789 [TRC] testmessage\n" {
    71  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
    72  	}
    73  }
    74  
    75  func TestTrace_Initされていない時は何も出力しない(t *testing.T) {
    76  	c := testutil.NewStdoutCapturer()
    77  	valid = false
    78  
    79  	c.Start()
    80  	Trace("testmessage")
    81  	output := c.Stop()
    82  
    83  	if output != "" {
    84  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
    85  	}
    86  }
    87  
    88  func TestDebug_debugレベルのメッセージを出力できる(t *testing.T) {
    89  	c := testutil.NewStdoutCapturer()
    90  	initForTest()
    91  	defer Term()
    92  
    93  	c.Start()
    94  	Debug("testmessage")
    95  	output := c.Stop()
    96  
    97  	if output != "2015-04-01 12:34:56.789 [DBG] testmessage\n" {
    98  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
    99  	}
   100  }
   101  
   102  func TestDebug_Initされていない時は何も出力しない(t *testing.T) {
   103  	c := testutil.NewStdoutCapturer()
   104  	valid = false
   105  
   106  	c.Start()
   107  	Debug("testmessage")
   108  	output := c.Stop()
   109  
   110  	if output != "" {
   111  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   112  	}
   113  }
   114  
   115  func TestInfo_infoレベルのメッセージを出力できる(t *testing.T) {
   116  	c := testutil.NewStdoutCapturer()
   117  	initForTest()
   118  	defer Term()
   119  
   120  	c.Start()
   121  	Info("testmessage")
   122  	output := c.Stop()
   123  
   124  	if output != "2015-04-01 12:34:56.789 [INF] testmessage\n" {
   125  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   126  	}
   127  }
   128  
   129  func TestInfo_Initされていない時は何も出力しない(t *testing.T) {
   130  	c := testutil.NewStdoutCapturer()
   131  	valid = false
   132  
   133  	c.Start()
   134  	Info("testmessage")
   135  	output := c.Stop()
   136  
   137  	if output != "" {
   138  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   139  	}
   140  }
   141  
   142  func TestWarn_warnレベルのメッセージを出力できる(t *testing.T) {
   143  	c := testutil.NewStdoutCapturer()
   144  	initForTest()
   145  	defer Term()
   146  
   147  	c.Start()
   148  	Warn("testmessage")
   149  	output := c.Stop()
   150  
   151  	if output != "2015-04-01 12:34:56.789 [WRN] testmessage\n" {
   152  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   153  	}
   154  }
   155  
   156  func TestWarn_Initされていない時は何も出力しない(t *testing.T) {
   157  	c := testutil.NewStdoutCapturer()
   158  	valid = false
   159  
   160  	c.Start()
   161  	Warn("testmessage")
   162  	output := c.Stop()
   163  
   164  	if output != "" {
   165  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   166  	}
   167  }
   168  
   169  func TestError_errorレベルのメッセージを出力できる(t *testing.T) {
   170  	c := testutil.NewStdoutCapturer()
   171  	initForTest()
   172  	defer Term()
   173  
   174  	c.Start()
   175  	Error("testmessage")
   176  	output := c.Stop()
   177  
   178  	if output != "2015-04-01 12:34:56.789 [ERR] testmessage\n" {
   179  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   180  	}
   181  }
   182  
   183  func TestError_Initされていない時は何も出力しない(t *testing.T) {
   184  	c := testutil.NewStdoutCapturer()
   185  	valid = false
   186  
   187  	c.Start()
   188  	Error("testmessage")
   189  	output := c.Stop()
   190  
   191  	if output != "" {
   192  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   193  	}
   194  }
   195  
   196  func TestCritical_criticalレベルのメッセージを出力できる(t *testing.T) {
   197  	c := testutil.NewStdoutCapturer()
   198  	initForTest()
   199  	defer Term()
   200  
   201  	c.Start()
   202  	Critical("testmessage")
   203  	output := c.Stop()
   204  
   205  	if output != "2015-04-01 12:34:56.789 [CRT] testmessage\n" {
   206  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   207  	}
   208  }
   209  
   210  func TestCritical_Initされていない時は何も出力しない(t *testing.T) {
   211  	c := testutil.NewStdoutCapturer()
   212  	valid = false
   213  
   214  	c.Start()
   215  	Critical("testmessage")
   216  	output := c.Stop()
   217  
   218  	if output != "" {
   219  		t.Errorf("出力されたメッセージ[%s]が想定と異なる。", output)
   220  	}
   221  }