@@ -43,23 +43,60 @@ func TestFilterEvents(t *testing.T) {
4343
4444func TestCallerHook (t * testing.T ) {
4545 param .Init (nil )
46-
47- h := & CallerHook {}
46+ log := newLogger ()
47+ log . AddHook ( & CallerHook {})
4848
4949 out := bytes .NewBuffer (nil )
50- log := newLogger ()
5150 log .SetOutput (out )
52- log .logger .AddHook (h )
53- log .SetFormatter (& ConsoleFormatter {})
5451
55- log .Error ("test 1" )
56- assert .Contains (t , out .String (), "testing.go:" )
52+ validateFunc := func (formatter logrus.Formatter ) {
53+ if _ , ok := formatter .(* JSONFormatter ); ok {
54+ assert .Contains (t , out .String (), "caller" , "testing.go:" )
55+ } else {
56+ assert .Contains (t , out .String (), "testing.go:" )
57+ }
5758
58- out = bytes .NewBuffer (nil )
59- log .SetOutput (out )
59+ out .Reset ()
60+ }
61+
62+ for _ , formatter := range []logrus.Formatter {
63+ & ConsoleFormatter {}, & JSONFormatter {},
64+ } {
65+ t .Run (fmt .Sprintf ("%T" , formatter ), func (t * testing.T ) {
66+ log .SetFormatter (formatter )
67+
68+ log .Error ("test 1" )
69+ validateFunc (formatter )
70+
71+ log .WithField ("test" , "test" ).WithField ("test2" , "test2" ).Info ("test 2" )
72+ validateFunc (formatter )
73+ })
74+ }
75+ }
76+
77+ func TestPrefixFieldClashes (t * testing.T ) {
78+ param .Init (nil )
79+ Log = newLogger ()
80+
81+ out := bytes .NewBuffer (nil )
82+ Log .SetOutput (out )
83+ Log .SetFormatter (& JSONFormatter {})
6084
61- log .WithField ("test" , "test" ).WithField ("test2" , "test2" ).Error ("test 2" )
62- assert .Contains (t , out .String (), "testing.go:" )
85+ Log .AddHook (& CallerHook {})
86+
87+ Log .WithFields (logrus.Fields {
88+ "level" : "test" ,
89+ "message" : "test" ,
90+ "timestamp" : "test" ,
91+ "caller" : "test" ,
92+ }).Info ("super awesome test" )
93+
94+ assert .Contains (t , out .String (), `"fields.level":"test"` )
95+ assert .Contains (t , out .String (), `"fields.message":"test"` )
96+ assert .Contains (t , out .String (), `"fields.timestamp":"test"` )
97+ assert .Contains (t , out .String (), `"fields.caller":"test"` )
98+ assert .Contains (t , out .String (), `"level":"info"` )
99+ assert .Contains (t , out .String (), `"message":"super awesome test"` )
63100}
64101
65102func TestSaaskitError (t * testing.T ) {
@@ -85,25 +122,30 @@ func TestSaaskitError(t *testing.T) {
85122 },
86123 }
87124 for _ , tt := range tests {
88- t .Run (tt .name , func (t * testing.T ) {
89- out := bytes .NewBuffer (nil )
90- Log .SetOutput (out )
91-
92- h := & hook {}
93- Log .AddHook (h )
94-
95- Error (tt .args ... )
96-
97- require .Len (t , h .entries , 1 )
98- require .Contains (t , h .entries [0 ].Data , "saaskit.error" )
99- if bugsnagErr , ok := h .entries [0 ].Data ["saaskit.error" ].(* errors.Error ); ok {
100- assert .IsType (t , tt .wantErrType , bugsnagErr .Err )
101- firstLine := strings .Split (string (bugsnagErr .Stack ()), "\n " )[0 ]
102- assert .Contains (t , firstLine , "log_test.go:" )
103- } else {
104- assert .IsType (t , tt .wantErrType , h .entries [0 ].Data ["saaskit.error" ])
105- }
106- })
125+ for _ , formatter := range []logrus.Formatter {
126+ & ConsoleFormatter {}, & JSONFormatter {},
127+ } {
128+ t .Run (fmt .Sprintf ("%s %T" , tt .name , formatter ), func (t * testing.T ) {
129+ out := bytes .NewBuffer (nil )
130+ Log .SetOutput (out )
131+ Log .SetFormatter (formatter )
132+
133+ h := & hook {}
134+ Log .AddHook (h )
135+
136+ Error (tt .args ... )
137+
138+ require .Len (t , h .entries , 1 )
139+ require .Contains (t , h .entries [0 ].Data , "saaskit.error" )
140+ if bugsnagErr , ok := h .entries [0 ].Data ["saaskit.error" ].(* errors.Error ); ok {
141+ assert .IsType (t , tt .wantErrType , bugsnagErr .Err )
142+ firstLine := strings .Split (string (bugsnagErr .Stack ()), "\n " )[0 ]
143+ assert .Contains (t , firstLine , "log_test.go:" )
144+ } else {
145+ assert .IsType (t , tt .wantErrType , h .entries [0 ].Data ["saaskit.error" ])
146+ }
147+ })
148+ }
107149 }
108150}
109151
@@ -127,25 +169,30 @@ func TestSaaskitErrorf(t *testing.T) {
127169 },
128170 }
129171 for _ , tt := range tests {
130- t .Run (tt .name , func (t * testing.T ) {
131- out := bytes .NewBuffer (nil )
132- Log .SetOutput (out )
133-
134- h := & hook {}
135- Log .AddHook (h )
136-
137- Errorf (tt .format , tt .args ... )
138-
139- require .Len (t , h .entries , 1 )
140- require .Contains (t , h .entries [0 ].Data , "saaskit.error" )
141- if bugsnagErr , ok := h .entries [0 ].Data ["saaskit.error" ].(* errors.Error ); ok {
142- assert .IsType (t , tt .wantErrType , bugsnagErr .Err )
143- firstLine := strings .Split (string (bugsnagErr .Stack ()), "\n " )[0 ]
144- assert .Contains (t , firstLine , "log_test.go:" )
145- } else {
146- assert .IsType (t , tt .wantErrType , h .entries [0 ].Data ["saaskit.error" ])
147- }
148- })
172+ for _ , formatter := range []logrus.Formatter {
173+ & ConsoleFormatter {}, & JSONFormatter {},
174+ } {
175+ t .Run (fmt .Sprintf ("%s %T" , tt .name , formatter ), func (t * testing.T ) {
176+ out := bytes .NewBuffer (nil )
177+ Log .SetOutput (out )
178+ Log .SetFormatter (formatter )
179+
180+ h := & hook {}
181+ Log .AddHook (h )
182+
183+ Errorf (tt .format , tt .args ... )
184+
185+ require .Len (t , h .entries , 1 )
186+ require .Contains (t , h .entries [0 ].Data , "saaskit.error" )
187+ if bugsnagErr , ok := h .entries [0 ].Data ["saaskit.error" ].(* errors.Error ); ok {
188+ assert .IsType (t , tt .wantErrType , bugsnagErr .Err )
189+ firstLine := strings .Split (string (bugsnagErr .Stack ()), "\n " )[0 ]
190+ assert .Contains (t , firstLine , "log_test.go:" )
191+ } else {
192+ assert .IsType (t , tt .wantErrType , h .entries [0 ].Data ["saaskit.error" ])
193+ }
194+ })
195+ }
149196 }
150197}
151198
@@ -170,8 +217,7 @@ func (h *hook) Levels() []logrus.Level {
170217
171218var _ error = myError {}
172219
173- type myError struct {
174- }
220+ type myError struct {}
175221
176222func (e myError ) Error () string {
177223 return "my error"
0 commit comments