This repository has been archived by the owner on Aug 21, 2019. It is now read-only.
-
Notifications
You must be signed in to change notification settings - Fork 1
/
llog_test.go
120 lines (87 loc) · 2.99 KB
/
llog_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
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
package llog
import (
"bytes"
"fmt"
"testing"
)
func TestOnlyErrorLogging(t *testing.T) {
b := new(bytes.Buffer)
l := New(b, ERROR)
logAndAssertNoError(t, l.Error, "Error")
logfAndAssertNoError(t, l.Errorf, "%s", "Errorf")
logAndAssertNoError(t, l.Warning, "Warning")
logfAndAssertNoError(t, l.Warningf, "%s", "Warningf")
logAndAssertNoError(t, l.Info, "Info")
logfAndAssertNoError(t, l.Infof, "%s", "Infof")
logAndAssertNoError(t, l.Debug, "Debug")
logfAndAssertNoError(t, l.Debugf, "%s", "Debugf")
verifyLogEntries(t, b, "Error", "Errorf")
}
func TestWarningOrHigher(t *testing.T) {
b := new(bytes.Buffer)
l := New(b, WARNING)
logAndAssertNoError(t, l.Error, "Error")
logfAndAssertNoError(t, l.Errorf, "%s", "Errorf")
logAndAssertNoError(t, l.Warning, "Warning")
logfAndAssertNoError(t, l.Warningf, "%s", "Warningf")
logAndAssertNoError(t, l.Info, "Info")
logfAndAssertNoError(t, l.Infof, "%s", "Infof")
logAndAssertNoError(t, l.Debug, "Debug")
logfAndAssertNoError(t, l.Debugf, "%s", "Debugf")
verifyLogEntries(t, b, "Error", "Errorf", "Warning", "Warningf")
}
func TestInfoOrHigher(t *testing.T) {
b := new(bytes.Buffer)
l := New(b, INFO)
logAndAssertNoError(t, l.Error, "Error")
logfAndAssertNoError(t, l.Errorf, "%s", "Errorf")
logAndAssertNoError(t, l.Warning, "Warning")
logfAndAssertNoError(t, l.Warningf, "%s", "Warningf")
logAndAssertNoError(t, l.Info, "Info")
logfAndAssertNoError(t, l.Infof, "%s", "Infof")
logAndAssertNoError(t, l.Debug, "Debug")
logfAndAssertNoError(t, l.Debugf, "%s", "Debugf")
verifyLogEntries(t, b, "Error", "Errorf", "Warning", "Warningf", "Info", "Infof")
}
func TestDebugOrHigher(t *testing.T) {
b := new(bytes.Buffer)
l := New(b, DEBUG)
logAndAssertNoError(t, l.Error, "Error")
logfAndAssertNoError(t, l.Errorf, "%s", "Errorf")
logAndAssertNoError(t, l.Warning, "Warning")
logfAndAssertNoError(t, l.Warningf, "%s", "Warningf")
logAndAssertNoError(t, l.Info, "Info")
logfAndAssertNoError(t, l.Infof, "%s", "Infof")
logAndAssertNoError(t, l.Debug, "Debug")
logfAndAssertNoError(t, l.Debugf, "%s", "Debugf")
verifyLogEntries(t, b, "Error", "Errorf", "Warning", "Warningf", "Info", "Infof", "Debug", "Debugf")
}
func TestSetLevel(t *testing.T) {
b := new(bytes.Buffer)
l := New(b, INFO)
logAndAssertNoError(t, l.Debug, "Error")
l.SetLevel(DEBUG)
logAndAssertNoError(t, l.Debug, "Error")
verifyLogEntries(t, b, "Error")
}
func logAndAssertNoError(t *testing.T, fn func(...interface{}) error, msg ...interface{}) {
err := fn(msg...)
if err != nil {
t.Fatal(err)
}
}
func logfAndAssertNoError(t *testing.T, fn func(string, ...interface{}) error, fmt string, msg ...interface{}) {
err := fn(fmt, msg...)
if err != nil {
t.Fatal(err)
}
}
func verifyLogEntries(t *testing.T, b *bytes.Buffer, entries ...string) {
eb := new(bytes.Buffer)
for _, e := range entries {
eb.WriteString(fmt.Sprintln(e))
}
if eb.String() != b.String() {
t.Errorf("Expected entries log does not match\nExpected: %s\nGot: %s\n", eb.String(), b.String())
}
}