This repository has been archived by the owner on Mar 18, 2018. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathlog_test.go
92 lines (74 loc) · 1.8 KB
/
log_test.go
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
package log
import (
"bytes"
"log"
"testing"
"time"
"github.com/stretchr/testify/assert"
)
func TestLevels(t *testing.T) {
if LevelDebug >= LevelInfo {
t.Error("invalid debug/info levels")
}
if LevelInfo >= LevelWarn {
t.Error("invalid info/warn levels")
}
if LevelWarn >= LevelError {
t.Error("invalid warn/error levels")
}
}
func captureOutput(f func()) (string, string) {
var bufOut bytes.Buffer
var bufErr bytes.Buffer
oldOut := logOut
oldErr := logErr
logOut = log.New(&bufOut, "", 0)
logErr = log.New(&bufErr, "", 0)
f()
time.Sleep(5 * time.Millisecond)
logOut = oldOut
logErr = oldErr
return bufOut.String(), bufErr.String()
}
func TestDebug(t *testing.T) {
out, err := captureOutput(func() {
Debug("blah", nil)
})
assert.Equal(t, "debug:{\"code\":\"blah\"}\n", out)
assert.Zero(t, err)
}
func TestInfo(t *testing.T) {
out, err := captureOutput(func() {
Info("blah", nil)
})
assert.Equal(t, "info:{\"code\":\"blah\"}\n", out)
assert.Zero(t, err)
}
func TestWarn(t *testing.T) {
out, err := captureOutput(func() {
Warn("blah", nil)
})
assert.Equal(t, "warn:{\"code\":\"blah\"}\n", err)
assert.Zero(t, out)
}
func TestError(t *testing.T) {
out, err := captureOutput(func() {
Error("blah", nil)
})
assert.Equal(t, "error:{\"code\":\"blah\"}\n", err)
assert.Zero(t, out)
}
func TestMeta(t *testing.T) {
out, err := captureOutput(func() {
Info("blah", M{"foo": "bar"})
})
assert.Equal(t, "info:{\"code\":\"blah\",\"meta\":{\"foo\":\"bar\"}}\n", out)
assert.Zero(t, err)
}
func TestReasons(t *testing.T) {
out, err := captureOutput(func() {
Info("blah", M{"foo": "bar"}, "Example Data")
})
assert.Equal(t, "info:{\"code\":\"blah\",\"meta\":{\"foo\":\"bar\"},\"reasons\":[{\"code\":\"unknown\",\"meta\":{\"data\":\"Example Data\"}}]}\n", out)
assert.Zero(t, err)
}