@@ -112,120 +112,163 @@ func (f *fakeLogger) Info(msg string, vals ...interface{}) {
112
112
func (f * fakeLogger ) Enabled () bool { return true }
113
113
func (f * fakeLogger ) V (lvl int ) logr.InfoLogger { return f }
114
114
115
+ var _ = Describe ("Zap options setup" , func () {
116
+ var opts * Options
117
+
118
+ BeforeEach (func () {
119
+ opts = & Options {}
120
+ })
121
+
122
+ It ("should enable development mode" , func () {
123
+ UseDevMode (true )(opts )
124
+ Expect (opts .Development ).To (BeTrue ())
125
+ })
126
+
127
+ It ("should disable development mode" , func () {
128
+ UseDevMode (false )(opts )
129
+ Expect (opts .Development ).To (BeFalse ())
130
+ })
131
+
132
+ It ("should set a custom writer" , func () {
133
+ var w fakeSyncWriter
134
+ WriteTo (& w )(opts )
135
+ Expect (opts .DestWritter ).To (Equal (& w ))
136
+ })
137
+ })
138
+
115
139
var _ = Describe ("Zap logger setup" , func () {
116
140
Context ("with the default output" , func () {
117
141
It ("shouldn't fail when setting up production" , func () {
118
142
Expect (Logger (false )).NotTo (BeNil ())
143
+ Expect (New (UseDevMode (false ))).NotTo (BeNil ())
119
144
})
120
145
121
146
It ("shouldn't fail when setting up development" , func () {
122
147
Expect (Logger (true )).NotTo (BeNil ())
148
+ Expect (New (UseDevMode (true ))).NotTo (BeNil ())
123
149
})
124
150
})
125
151
126
152
Context ("with custom non-sync output" , func () {
127
153
It ("shouldn't fail when setting up production" , func () {
128
154
Expect (LoggerTo (ioutil .Discard , false )).NotTo (BeNil ())
155
+ Expect (New (WriteTo (ioutil .Discard ), UseDevMode (false ))).NotTo (BeNil ())
129
156
})
130
157
131
158
It ("shouldn't fail when setting up development" , func () {
132
159
Expect (LoggerTo (ioutil .Discard , true )).NotTo (BeNil ())
160
+ Expect (New (WriteTo (ioutil .Discard ), UseDevMode (true ))).NotTo (BeNil ())
133
161
})
134
162
})
135
163
136
164
Context ("when logging kubernetes objects" , func () {
137
165
var logOut * bytes.Buffer
138
166
var logger logr.Logger
139
167
140
- BeforeEach (func () {
141
- logOut = new (bytes.Buffer )
142
- By ("setting up the logger" )
143
- // use production settings (false) to get just json output
144
- logger = LoggerTo (logOut , false )
145
- })
146
-
147
- It ("should log a standard namespaced Kubernetes object name and namespace" , func () {
148
- pod := & kapi.Pod {}
149
- pod .Name = "some-pod"
150
- pod .Namespace = "some-ns"
151
- logger .Info ("here's a kubernetes object" , "thing" , pod )
168
+ defineTests := func () {
169
+ It ("should log a standard namespaced Kubernetes object name and namespace" , func () {
170
+ pod := & kapi.Pod {}
171
+ pod .Name = "some-pod"
172
+ pod .Namespace = "some-ns"
173
+ logger .Info ("here's a kubernetes object" , "thing" , pod )
174
+
175
+ outRaw := logOut .Bytes ()
176
+ res := map [string ]interface {}{}
177
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
178
+
179
+ Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
180
+ "name" : pod .Name ,
181
+ "namespace" : pod .Namespace ,
182
+ }))
183
+ })
184
+
185
+ It ("should work fine with normal stringers" , func () {
186
+ logger .Info ("here's a non-kubernetes stringer" , "thing" , testStringer {})
187
+ outRaw := logOut .Bytes ()
188
+ res := map [string ]interface {}{}
189
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
190
+
191
+ Expect (res ).To (HaveKeyWithValue ("thing" , "value" ))
192
+ })
193
+
194
+ It ("should log a standard non-namespaced Kubernetes object name" , func () {
195
+ node := & kapi.Node {}
196
+ node .Name = "some-node"
197
+ logger .Info ("here's a kubernetes object" , "thing" , node )
198
+
199
+ outRaw := logOut .Bytes ()
200
+ res := map [string ]interface {}{}
201
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
202
+
203
+ Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
204
+ "name" : node .Name ,
205
+ }))
206
+ })
207
+
208
+ It ("should log a standard Kubernetes object's kind, if set" , func () {
209
+ node := & kapi.Node {}
210
+ node .Name = "some-node"
211
+ node .APIVersion = "v1"
212
+ node .Kind = "Node"
213
+ logger .Info ("here's a kubernetes object" , "thing" , node )
214
+
215
+ outRaw := logOut .Bytes ()
216
+ res := map [string ]interface {}{}
217
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
218
+
219
+ Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
220
+ "name" : node .Name ,
221
+ "apiVersion" : "v1" ,
222
+ "kind" : "Node" ,
223
+ }))
224
+ })
225
+
226
+ It ("should log a standard non-namespaced NamespacedName name" , func () {
227
+ name := types.NamespacedName {Name : "some-node" }
228
+ logger .Info ("here's a kubernetes object" , "thing" , name )
229
+
230
+ outRaw := logOut .Bytes ()
231
+ res := map [string ]interface {}{}
232
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
233
+
234
+ Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
235
+ "name" : name .Name ,
236
+ }))
237
+ })
238
+
239
+ It ("should log a standard namespaced NamespacedName name and namespace" , func () {
240
+ name := types.NamespacedName {Name : "some-pod" , Namespace : "some-ns" }
241
+ logger .Info ("here's a kubernetes object" , "thing" , name )
242
+
243
+ outRaw := logOut .Bytes ()
244
+ res := map [string ]interface {}{}
245
+ Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
246
+
247
+ Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
248
+ "name" : name .Name ,
249
+ "namespace" : name .Namespace ,
250
+ }))
251
+ })
252
+ }
253
+
254
+ Context ("with logger created using New" , func () {
255
+ BeforeEach (func () {
256
+ logOut = new (bytes.Buffer )
257
+ By ("setting up the logger" )
258
+ // use production settings (false) to get just json output
259
+ logger = New (WriteTo (logOut ), UseDevMode (false ))
260
+ })
261
+ defineTests ()
152
262
153
- outRaw := logOut .Bytes ()
154
- res := map [string ]interface {}{}
155
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
156
-
157
- Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
158
- "name" : pod .Name ,
159
- "namespace" : pod .Namespace ,
160
- }))
161
263
})
162
-
163
- It ("should work fine with normal stringers" , func () {
164
- logger .Info ("here's a non-kubernetes stringer" , "thing" , testStringer {})
165
- outRaw := logOut .Bytes ()
166
- res := map [string ]interface {}{}
167
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
168
-
169
- Expect (res ).To (HaveKeyWithValue ("thing" , "value" ))
170
- })
171
-
172
- It ("should log a standard non-namespaced Kubernetes object name" , func () {
173
- node := & kapi.Node {}
174
- node .Name = "some-node"
175
- logger .Info ("here's a kubernetes object" , "thing" , node )
176
-
177
- outRaw := logOut .Bytes ()
178
- res := map [string ]interface {}{}
179
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
180
-
181
- Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
182
- "name" : node .Name ,
183
- }))
184
- })
185
-
186
- It ("should log a standard Kubernetes object's kind, if set" , func () {
187
- node := & kapi.Node {}
188
- node .Name = "some-node"
189
- node .APIVersion = "v1"
190
- node .Kind = "Node"
191
- logger .Info ("here's a kubernetes object" , "thing" , node )
192
-
193
- outRaw := logOut .Bytes ()
194
- res := map [string ]interface {}{}
195
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
196
-
197
- Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
198
- "name" : node .Name ,
199
- "apiVersion" : "v1" ,
200
- "kind" : "Node" ,
201
- }))
202
- })
203
-
204
- It ("should log a standard non-namespaced NamespacedName name" , func () {
205
- name := types.NamespacedName {Name : "some-node" }
206
- logger .Info ("here's a kubernetes object" , "thing" , name )
207
-
208
- outRaw := logOut .Bytes ()
209
- res := map [string ]interface {}{}
210
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
211
-
212
- Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
213
- "name" : name .Name ,
214
- }))
215
- })
216
-
217
- It ("should log a standard namespaced NamespacedName name and namespace" , func () {
218
- name := types.NamespacedName {Name : "some-pod" , Namespace : "some-ns" }
219
- logger .Info ("here's a kubernetes object" , "thing" , name )
220
-
221
- outRaw := logOut .Bytes ()
222
- res := map [string ]interface {}{}
223
- Expect (json .Unmarshal (outRaw , & res )).To (Succeed ())
224
-
225
- Expect (res ).To (HaveKeyWithValue ("thing" , map [string ]interface {}{
226
- "name" : name .Name ,
227
- "namespace" : name .Namespace ,
228
- }))
264
+ Context ("with logger created using LoggerTo" , func () {
265
+ BeforeEach (func () {
266
+ logOut = new (bytes.Buffer )
267
+ By ("setting up the logger" )
268
+ // use production settings (false) to get just json output
269
+ logger = LoggerTo (logOut , false )
270
+ })
271
+ defineTests ()
229
272
})
230
273
})
231
274
})
0 commit comments