@@ -244,161 +244,125 @@ mod tests {
244
244
write ! ( f, "display" )
245
245
}
246
246
}
247
+ let ( int, mod1, mod2) = ( 114514 , Mods , Mods ) ;
248
+
249
+ const LEVEL_ARG : Level = Level :: Info ;
250
+
251
+ let assert_records = |kv : & [ ( & ' static str , & str ) ] , payload| {
252
+ let records = test_sink. records ( ) ;
253
+ assert_eq ! ( records. len( ) , Level :: count( ) + 1 ) ;
254
+ test_sink. clear ( ) ;
255
+
256
+ records
257
+ . into_iter ( )
258
+ . zip ( [
259
+ LEVEL_ARG ,
260
+ Level :: Trace ,
261
+ Level :: Debug ,
262
+ Level :: Info ,
263
+ Level :: Warn ,
264
+ Level :: Error ,
265
+ Level :: Critical ,
266
+ ] )
267
+ . for_each ( |( record, expected_level) | {
268
+ assert_eq ! ( record. level( ) , expected_level) ;
269
+ assert_eq ! (
270
+ record
271
+ . key_values( )
272
+ . into_iter( )
273
+ . map( |( k, v) | ( k. inner( ) , v. to_string( ) ) )
274
+ . collect:: <Vec <_>>( ) ,
275
+ kv. into_iter( )
276
+ . map( |( k, v) | ( KeyInner :: StaticStr ( k) , v. to_string( ) ) )
277
+ . collect:: <Vec <_>>( )
278
+ ) ;
279
+ assert_eq ! ( record. payload( ) , payload) ;
280
+ } ) ;
281
+ } ;
247
282
248
- let mut check = vec ! [
249
- ( vec![ ] , Level :: Info , "logger" . to_string( ) ) ,
250
- ( vec![ ] , Level :: Error , "logger, kv(0)" . to_string( ) ) ,
251
- (
252
- vec![ ( KeyInner :: StaticStr ( "kn" ) , "114514" . to_string( ) ) ] ,
253
- Level :: Warn ,
254
- "logger, kv(1)" . to_string( ) ,
255
- ) ,
256
- (
257
- vec![
258
- ( KeyInner :: StaticStr ( "kn" ) , "114514" . to_string( ) ) ,
259
- ( KeyInner :: StaticStr ( "kdi" ) , "display" . to_string( ) ) ,
260
- ( KeyInner :: StaticStr ( "kde" ) , "debug" . to_string( ) ) ,
261
- ] ,
262
- Level :: Critical ,
263
- "logger, kv(2)" . to_string( ) ,
264
- ) ,
265
- (
266
- vec![ ( KeyInner :: StaticStr ( "n" ) , "114514" . to_string( ) ) ] ,
267
- Level :: Trace ,
268
- "logger, kv(1,vref)" . to_string( ) ,
269
- ) ,
270
- (
271
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
272
- Level :: Debug ,
273
- "logger, kv(mod,vref)" . to_string( ) ,
274
- ) ,
275
- (
276
- vec![
277
- ( KeyInner :: StaticStr ( "n" ) , "114514" . to_string( ) ) ,
278
- ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ,
279
- ( KeyInner :: StaticStr ( "mod_de" ) , "debug" . to_string( ) ) ,
280
- ] ,
281
- Level :: Info ,
282
- "logger, kv(s,mod,vref)" . to_string( ) ,
283
- ) ,
284
- (
285
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
286
- Level :: Debug ,
287
- "arbitrary order = logger, fmt, kv" . to_string( ) ,
288
- ) ,
289
- (
290
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
291
- Level :: Debug ,
292
- "arbitrary order = fmt, logger, kv" . to_string( ) ,
293
- ) ,
294
- ] ;
295
-
296
- log ! ( logger: test, Level :: Info , "logger" ) ;
297
- log ! ( logger: test, kv: { } , Level :: Error , "logger, kv(0)" ) ;
298
- log ! ( logger: test, kv: { kn = 114514 } , Level :: Warn , "logger, kv(1)" ) ;
299
- log ! ( logger: test, kv: { kn = 114514 , kdi: = Mods , kde: ? = Mods } , Level :: Critical , "logger, kv(2)" ) ;
300
-
301
- let ( n, mod_di, mod_de) = ( 114514 , Mods , Mods ) ;
302
- log ! ( logger: test, kv: { n } , Level :: Trace , "logger, kv(1,vref)" ) ;
303
- log ! ( logger: test, kv: { mod_di: } , Level :: Debug , "logger, kv(mod,vref)" ) ;
304
- log ! ( logger: test, kv: { n, mod_di: , mod_de: ? } , Level :: Info , "logger, kv(s,mod,vref)" ) ;
305
- log ! ( logger: test, Level :: Debug , "arbitrary order = logger, fmt, kv" , kv: { mod_di: } ) ;
306
- log ! ( Level :: Debug , "arbitrary order = fmt, logger, kv" , logger: test, kv: { mod_di: } ) ;
307
-
308
- macro_rules! add_records {
309
- ( $( $level: ident => $variant: ident) ,+ ) => {
310
- $(
311
- $level!( logger: test, "{}: logger" , stringify!( $level) ) ;
312
- check. push( ( vec![ ] , Level :: $variant, format!( "{}: logger" , stringify!( $level) ) ) ) ;
313
-
314
- $level!( logger: test, kv: { } , "{}: logger, kv(0)" , stringify!( $level) ) ;
315
- check. push( ( vec![ ] , Level :: $variant, format!( "{}: logger, kv(0)" , stringify!( $level) ) ) ) ;
316
-
317
- $level!( logger: test, kv: { kn = 114514 } , "{}: logger, kv(1)" , stringify!( $level) ) ;
318
- check. push( (
319
- vec![ ( KeyInner :: StaticStr ( "kn" ) , "114514" . to_string( ) ) ] ,
320
- Level :: $variant,
321
- format!( "{}: logger, kv(1)" , stringify!( $level) )
322
- ) ) ;
323
-
324
- $level!( logger: test, kv: { kn = 114514 , kdi: = Mods , kde: ? = Mods } , "{}: logger, kv(s,mod)" , stringify!( $level) ) ;
325
- check. push( (
326
- vec![
327
- ( KeyInner :: StaticStr ( "kn" ) , "114514" . to_string( ) ) ,
328
- ( KeyInner :: StaticStr ( "kdi" ) , "display" . to_string( ) ) ,
329
- ( KeyInner :: StaticStr ( "kde" ) , "debug" . to_string( ) ) ,
330
- ] ,
331
- Level :: $variant,
332
- format!( "{}: logger, kv(s,mod)" , stringify!( $level) )
333
- ) ) ;
334
-
335
- $level!( logger: test, kv: { n } , "{}: logger, kv(1,vref)" , stringify!( $level) ) ;
336
- check. push( (
337
- vec![ ( KeyInner :: StaticStr ( "n" ) , "114514" . to_string( ) ) ] ,
338
- Level :: $variant,
339
- format!( "{}: logger, kv(1,vref)" , stringify!( $level) )
340
- ) ) ;
341
-
342
- $level!( logger: test, kv: { mod_di: } , "{}: logger, kv(mod,vref)" , stringify!( $level) ) ;
343
- check. push( (
344
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
345
- Level :: $variant,
346
- format!( "{}: logger, kv(mod,vref)" , stringify!( $level) )
347
- ) ) ;
348
-
349
- $level!( logger: test, kv: { n, mod_di: , mod_de: ? } , "{}: logger, kv(s,mod,vref)" , stringify!( $level) ) ;
350
- check. push( (
351
- vec![
352
- ( KeyInner :: StaticStr ( "n" ) , "114514" . to_string( ) ) ,
353
- ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ,
354
- ( KeyInner :: StaticStr ( "mod_de" ) , "debug" . to_string( ) ) ,
355
- ] ,
356
- Level :: $variant,
357
- format!( "{}: logger, kv(s,mod,vref)" , stringify!( $level) )
358
- ) ) ;
359
-
360
- $level!( logger: test, "{}: arbitrary order = logger, fmt, kv" , stringify!( $level) , kv: { mod_di: } ) ;
361
- check. push( (
362
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
363
- Level :: $variant,
364
- format!( "{}: arbitrary order = logger, fmt, kv" , stringify!( $level) )
365
- ) ) ;
366
-
367
- $level!( "{}: arbitrary order = fmt, logger, kv" , stringify!( $level) , logger: test, kv: { mod_di: } ) ;
368
- check. push( (
369
- vec![ ( KeyInner :: StaticStr ( "mod_di" ) , "display" . to_string( ) ) ] ,
370
- Level :: $variant,
371
- format!( "{}: arbitrary order = fmt, logger, kv" , stringify!( $level) )
372
- ) ) ;
373
- ) +
374
- } ;
375
- }
376
- add_records ! (
377
- critical => Critical ,
378
- error => Error ,
379
- warn => Warn ,
380
- info => Info ,
381
- debug => Debug ,
382
- trace => Trace
283
+ log ! ( logger: test, LEVEL_ARG , "logger param only" ) ;
284
+ trace ! ( logger: test, "logger param only" ) ;
285
+ debug ! ( logger: test, "logger param only" ) ;
286
+ info ! ( logger: test, "logger param only" ) ;
287
+ warn ! ( logger: test, "logger param only" ) ;
288
+ error ! ( logger: test, "logger param only" ) ;
289
+ critical ! ( logger: test, "logger param only" ) ;
290
+ assert_records ( & [ ] , "logger param only" ) ;
291
+
292
+ log ! ( logger: test, kv: { } , LEVEL_ARG , "empty kv param" ) ;
293
+ trace ! ( logger: test, kv: { } , "empty kv param" ) ;
294
+ debug ! ( logger: test, kv: { } , "empty kv param" ) ;
295
+ info ! ( logger: test, kv: { } , "empty kv param" ) ;
296
+ warn ! ( logger: test, kv: { } , "empty kv param" ) ;
297
+ error ! ( logger: test, kv: { } , "empty kv param" ) ;
298
+ critical ! ( logger: test, kv: { } , "empty kv param" ) ;
299
+ assert_records ( & [ ] , "empty kv param" ) ;
300
+
301
+ log ! ( logger: test, kv: { int = 114514 } , LEVEL_ARG , "kv capture value directly" ) ;
302
+ trace ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
303
+ debug ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
304
+ info ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
305
+ warn ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
306
+ error ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
307
+ critical ! ( logger: test, kv: { int = 114514 } , "kv capture value directly" ) ;
308
+ assert_records ( & [ ( "int" , "114514" ) ] , "kv capture value directly" ) ;
309
+
310
+ log ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , LEVEL_ARG , "kv capture value using modifiers" ) ;
311
+ trace ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
312
+ debug ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
313
+ info ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
314
+ warn ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
315
+ error ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
316
+ critical ! ( logger: test, kv: { int = 114514 , mod1: = Mods , mod2: ? = Mods } , "kv capture value using modifiers" ) ;
317
+ assert_records (
318
+ & [ ( "int" , "114514" ) , ( "mod1" , "display" ) , ( "mod2" , "debug" ) ] ,
319
+ "kv capture value using modifiers" ,
320
+ ) ;
321
+
322
+ log ! ( logger: test, kv: { int } , LEVEL_ARG , "kv shorthand" ) ;
323
+ trace ! ( logger: test, kv: { int } , "kv shorthand" ) ;
324
+ debug ! ( logger: test, kv: { int } , "kv shorthand" ) ;
325
+ info ! ( logger: test, kv: { int } , "kv shorthand" ) ;
326
+ warn ! ( logger: test, kv: { int } , "kv shorthand" ) ;
327
+ error ! ( logger: test, kv: { int } , "kv shorthand" ) ;
328
+ critical ! ( logger: test, kv: { int } , "kv shorthand" ) ;
329
+ assert_records ( & [ ( "int" , "114514" ) ] , "kv shorthand" ) ;
330
+
331
+ log ! ( logger: test, kv: { int, mod1: , mod2: ? } , LEVEL_ARG , "kv shorthand modifiers" ) ;
332
+ trace ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
333
+ debug ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
334
+ info ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
335
+ warn ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
336
+ error ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
337
+ critical ! ( logger: test, kv: { int, mod1: , mod2: ? } , "kv shorthand modifiers" ) ;
338
+ assert_records (
339
+ & [ ( "int" , "114514" ) , ( "mod1" , "display" ) , ( "mod2" , "debug" ) ] ,
340
+ "kv shorthand modifiers" ,
383
341
) ;
384
342
385
- let records = test_sink. records ( ) ;
386
- let from_sink = records
387
- . iter ( )
388
- . map ( |record| {
389
- (
390
- record
391
- . key_values ( )
392
- . into_iter ( )
393
- . map ( |( k, v) | ( k. inner ( ) , v. to_string ( ) ) )
394
- . collect :: < Vec < _ > > ( ) ,
395
- record. level ( ) ,
396
- record. payload ( ) . to_string ( ) ,
397
- )
398
- } )
399
- . collect :: < Vec < _ > > ( ) ;
400
-
401
- assert_eq ! ( check, from_sink) ;
343
+ log ! ( logger: test, LEVEL_ARG , "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
344
+ trace ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
345
+ debug ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
346
+ info ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
347
+ warn ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
348
+ error ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
349
+ critical ! ( logger: test, "params arbitrary order: logger, format, kv" , kv: { mod1: } ) ;
350
+ assert_records (
351
+ & [ ( "mod1" , "display" ) ] ,
352
+ "params arbitrary order: logger, format, kv" ,
353
+ ) ;
354
+
355
+ log ! ( LEVEL_ARG , "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
356
+ trace ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
357
+ debug ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
358
+ info ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
359
+ warn ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
360
+ error ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
361
+ critical ! ( "params arbitrary order = format, kv, logger" , kv: { mod1: ? } , logger: test) ;
362
+ assert_records (
363
+ & [ ( "mod1" , "debug" ) ] ,
364
+ "params arbitrary order = format, kv, logger" ,
365
+ ) ;
402
366
}
403
367
404
368
#[ test]
0 commit comments