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 }