@@ -224,15 +224,17 @@ fn test_builtin_patterns() {
224
224
"Saturday" ,
225
225
"Sunday" ,
226
226
] ;
227
- const MONTH_NAMES : [ & str ; 12 ] = [
228
- "Jan" , "Feb" , "Mar" , "Apr" , "May" , "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ,
227
+ // "May" is ambiguous for short or full :)
228
+ const MONTH_NAMES : [ & str ; 11 ] = [
229
+ "Jan" , "Feb" , "Mar" , "Apr" , // "May",
230
+ "Jun" , "Jul" , "Aug" , "Sep" , "Oct" , "Nov" , "Dec" ,
229
231
] ;
230
- const MONTH_FULL_NAMES : [ & str ; 12 ] = [
232
+ const MONTH_FULL_NAMES : [ & str ; 11 ] = [
231
233
"January" ,
232
234
"February" ,
233
235
"March" ,
234
236
"April" ,
235
- "May" ,
237
+ // "May",
236
238
"June" ,
237
239
"July" ,
238
240
"August" ,
@@ -246,7 +248,7 @@ fn test_builtin_patterns() {
246
248
#[ track_caller]
247
249
fn check_inner (
248
250
pattern : impl Pattern + Clone + ' static ,
249
- template : Option < impl AsRef < str > > ,
251
+ expected_templates : Option < impl IntoIterator < Item = impl AsRef < str > > > , // OR list
250
252
ranges : Vec < RangeInclusive < u64 > > ,
251
253
) {
252
254
#[ track_caller]
@@ -282,6 +284,7 @@ fn test_builtin_patterns() {
282
284
res = replace_substring ( res, MONTH_FULL_NAMES , "{month_name_full}" ) ;
283
285
res = replace_substring ( res, WEEKDAY_NAMES , "{weekday_name}" ) ;
284
286
res = replace_substring ( res, MONTH_NAMES , "{month_name}" ) ;
287
+ res = replace_substring ( res, [ "May" ] , "{month_name|month_name_full}" ) ;
285
288
res = replace_substring ( res, AM_PM , "{am_pm}" ) ;
286
289
res = replace_substring ( res, [ __EOL] , "{eol}" ) ;
287
290
@@ -302,8 +305,10 @@ fn test_builtin_patterns() {
302
305
assert ! ( r. contains( d) ) ;
303
306
} ) ;
304
307
305
- if let Some ( template) = template {
306
- assert_eq ! ( input. 1 , template. as_ref( ) ) ;
308
+ if let Some ( expected_templates) = expected_templates {
309
+ assert ! ( expected_templates
310
+ . into_iter( )
311
+ . any( |t| input. 1 == t. as_ref( ) ) ) ;
307
312
}
308
313
}
309
314
@@ -330,13 +335,24 @@ fn test_builtin_patterns() {
330
335
const SOURCE_RANGE : RangeInclusive < u64 > = 0 ..=9999 ;
331
336
const OS_ID_RANGE : RangeInclusive < u64 > = 1 ..=u64:: MAX ;
332
337
333
- check ! ( "{weekday_name}" , Some ( "{weekday_name}" ) , vec![ ] ) ;
334
- check ! ( "{weekday_name_full}" , Some ( "{weekday_name_full}" ) , vec![ ] ) ;
335
- check ! ( "{month_name}" , Some ( "{month_name}" ) , vec![ ] ) ;
336
- check ! ( "{month_name_full}" , Some ( "{month_name_full}" ) , vec![ ] ) ;
338
+ check ! ( "{weekday_name}" , Some ( [ "{weekday_name}" ] ) , vec![ ] ) ;
339
+ check ! ( "{weekday_name_full}" , Some ( [ "{weekday_name_full}" ] ) , vec![ ] ) ;
340
+ check ! (
341
+ "{month_name}" ,
342
+ Some ( [ "{month_name}" , "{month_name|month_name_full}" ] ) ,
343
+ vec![ ]
344
+ ) ;
345
+ check ! (
346
+ "{month_name_full}" ,
347
+ Some ( [ "{month_name_full}" , "{month_name|month_name_full}" ] ) ,
348
+ vec![ ]
349
+ ) ;
337
350
check ! (
338
351
"{datetime}" ,
339
- Some ( "{weekday_name} {month_name} 00 00:00:00 0000" ) ,
352
+ Some ( [
353
+ "{weekday_name} {month_name} 00 00:00:00 0000" ,
354
+ "{weekday_name} {month_name|month_name_full} 00 00:00:00 0000"
355
+ ] ) ,
340
356
vec![
341
357
DAY_RANGE ,
342
358
HOUR_RANGE ,
@@ -345,59 +361,59 @@ fn test_builtin_patterns() {
345
361
YEAR_RANGE ,
346
362
] ,
347
363
) ;
348
- check ! ( "{year_short}" , Some ( "00" ) , vec![ YEAR_SHORT_RANGE ] ) ;
349
- check ! ( "{year}" , Some ( "0000" ) , vec![ YEAR_RANGE ] ) ;
364
+ check ! ( "{year_short}" , Some ( [ "00" ] ) , vec![ YEAR_SHORT_RANGE ] ) ;
365
+ check ! ( "{year}" , Some ( [ "0000" ] ) , vec![ YEAR_RANGE ] ) ;
350
366
check ! (
351
367
"{date_short}" ,
352
- Some ( "00/00/00" ) ,
368
+ Some ( [ "00/00/00" ] ) ,
353
369
vec![ MONTH_RANGE , DAY_RANGE , YEAR_SHORT_RANGE ] ,
354
370
) ;
355
371
check ! (
356
372
"{date}" ,
357
- Some ( "0000-00-00" ) ,
373
+ Some ( [ "0000-00-00" ] ) ,
358
374
vec![ YEAR_RANGE , MONTH_RANGE , DAY_RANGE ] ,
359
375
) ;
360
- check ! ( "{month}" , Some ( "00" ) , vec![ MONTH_RANGE ] ) ;
361
- check ! ( "{day}" , Some ( "00" ) , vec![ DAY_RANGE ] ) ;
362
- check ! ( "{hour}" , Some ( "00" ) , vec![ HOUR_RANGE ] ) ;
363
- check ! ( "{hour_12}" , Some ( "00" ) , vec![ HOUR_12_RANGE ] ) ;
364
- check ! ( "{minute}" , Some ( "00" ) , vec![ MINUTE_RANGE ] ) ;
365
- check ! ( "{second}" , Some ( "00" ) , vec![ SECOND_RANGE ] ) ;
366
- check ! ( "{millisecond}" , Some ( "000" ) , vec![ MILLISECOND_RANGE ] ) ;
367
- check ! ( "{microsecond}" , Some ( "000000" ) , vec![ MICROSECOND_RANGE ] ) ;
368
- check ! ( "{nanosecond}" , Some ( "000000000" ) , vec![ NANOSECOND_RANGE ] ) ;
369
- check ! ( "{am_pm}" , Some ( "{am_pm}" ) , vec![ ] ) ;
376
+ check ! ( "{month}" , Some ( [ "00" ] ) , vec![ MONTH_RANGE ] ) ;
377
+ check ! ( "{day}" , Some ( [ "00" ] ) , vec![ DAY_RANGE ] ) ;
378
+ check ! ( "{hour}" , Some ( [ "00" ] ) , vec![ HOUR_RANGE ] ) ;
379
+ check ! ( "{hour_12}" , Some ( [ "00" ] ) , vec![ HOUR_12_RANGE ] ) ;
380
+ check ! ( "{minute}" , Some ( [ "00" ] ) , vec![ MINUTE_RANGE ] ) ;
381
+ check ! ( "{second}" , Some ( [ "00" ] ) , vec![ SECOND_RANGE ] ) ;
382
+ check ! ( "{millisecond}" , Some ( [ "000" ] ) , vec![ MILLISECOND_RANGE ] ) ;
383
+ check ! ( "{microsecond}" , Some ( [ "000000" ] ) , vec![ MICROSECOND_RANGE ] ) ;
384
+ check ! ( "{nanosecond}" , Some ( [ "000000000" ] ) , vec![ NANOSECOND_RANGE ] ) ;
385
+ check ! ( "{am_pm}" , Some ( [ "{am_pm}" ] ) , vec![ ] ) ;
370
386
check ! (
371
387
"{time_12}" ,
372
- Some ( "00:00:00 {am_pm}" ) ,
388
+ Some ( [ "00:00:00 {am_pm}" ] ) ,
373
389
vec![ HOUR_12_RANGE , MINUTE_RANGE , SECOND_RANGE ] ,
374
390
) ;
375
391
check ! (
376
392
"{time_short}" ,
377
- Some ( "00:00" ) ,
393
+ Some ( [ "00:00" ] ) ,
378
394
vec![ HOUR_RANGE , MINUTE_RANGE ] ,
379
395
) ;
380
396
check ! (
381
397
"{time}" ,
382
- Some ( "00:00:00" ) ,
398
+ Some ( [ "00:00:00" ] ) ,
383
399
vec![ HOUR_RANGE , MINUTE_RANGE , SECOND_RANGE ] ,
384
400
) ;
385
401
check ! (
386
402
"{tz_offset}" ,
387
- Some ( "{begin_sign}00:00" ) ,
403
+ Some ( [ "{begin_sign}00:00" ] ) ,
388
404
vec![ HOUR_RANGE , MINUTE_RANGE ] ,
389
405
) ;
390
406
check ! (
391
407
"{unix_timestamp}" ,
392
- None as Option <& str >,
408
+ None as Option <Vec < & str > >,
393
409
vec![ 0 ..=i32 :: MAX as u64 ] ,
394
410
) ;
395
411
396
412
cfg_if ! {
397
413
if #[ cfg( feature = "source-location" ) ] {
398
414
check!(
399
415
"{full}" ,
400
- Some ( format!( "[0000-00-00 00:00:00.000] [logger-name] [info] [pattern, {}:000] test payload" , file!( ) ) ) ,
416
+ Some ( [ format!( "[0000-00-00 00:00:00.000] [logger-name] [info] [pattern, {}:000] test payload" , file!( ) ) ] ) ,
401
417
vec![
402
418
YEAR_RANGE ,
403
419
MONTH_RANGE ,
@@ -412,7 +428,7 @@ fn test_builtin_patterns() {
412
428
} else {
413
429
check!(
414
430
"{full}" ,
415
- Some ( "[0000-00-00 00:00:00.000] [logger-name] [info] test payload" ) ,
431
+ Some ( [ "[0000-00-00 00:00:00.000] [logger-name] [info] test payload" ] ) ,
416
432
vec![
417
433
YEAR_RANGE ,
418
434
MONTH_RANGE ,
@@ -426,30 +442,30 @@ fn test_builtin_patterns() {
426
442
}
427
443
}
428
444
429
- check ! ( "{level}" , Some ( "info" ) , vec![ ] ) ;
430
- check ! ( "{level_short}" , Some ( "I" ) , vec![ ] ) ;
445
+ check ! ( "{level}" , Some ( [ "info" ] ) , vec![ ] ) ;
446
+ check ! ( "{level_short}" , Some ( [ "I" ] ) , vec![ ] ) ;
431
447
cfg_if ! {
432
448
if #[ cfg( feature = "source-location" ) ] {
433
- check!( "{source}" , Some ( format!( "{}:000" , file!( ) ) ) , vec![ SOURCE_RANGE ] ) ;
434
- check!( "{file_name}" , Some ( "pattern.rs" ) , vec![ ] ) ;
435
- check!( "{file}" , Some ( file!( ) ) , vec![ ] ) ;
436
- check!( "{line}" , Some ( "000" ) , vec![ SOURCE_RANGE ] ) ;
437
- check!( "{column}" , Some ( "0" ) , vec![ SOURCE_RANGE ] ) ;
438
- check!( "{module_path}" , Some ( module_path!( ) ) , vec![ ] ) ;
449
+ check!( "{source}" , Some ( [ format!( "{}:000" , file!( ) ) ] ) , vec![ SOURCE_RANGE ] ) ;
450
+ check!( "{file_name}" , Some ( [ "pattern.rs" ] ) , vec![ ] ) ;
451
+ check!( "{file}" , Some ( [ file!( ) ] ) , vec![ ] ) ;
452
+ check!( "{line}" , Some ( [ "000" ] ) , vec![ SOURCE_RANGE ] ) ;
453
+ check!( "{column}" , Some ( [ "0" ] ) , vec![ SOURCE_RANGE ] ) ;
454
+ check!( "{module_path}" , Some ( [ module_path!( ) ] ) , vec![ ] ) ;
439
455
} else {
440
- check!( "{source}" , Some ( "" ) , vec![ ] ) ;
441
- check!( "{file_name}" , Some ( "" ) , vec![ ] ) ;
442
- check!( "{file}" , Some ( "" ) , vec![ ] ) ;
443
- check!( "{line}" , Some ( "" ) , vec![ ] ) ;
444
- check!( "{column}" , Some ( "" ) , vec![ ] ) ;
445
- check!( "{module_path}" , Some ( "" ) , vec![ ] ) ;
456
+ check!( "{source}" , Some ( [ "" ] ) , vec![ ] ) ;
457
+ check!( "{file_name}" , Some ( [ "" ] ) , vec![ ] ) ;
458
+ check!( "{file}" , Some ( [ "" ] ) , vec![ ] ) ;
459
+ check!( "{line}" , Some ( [ "" ] ) , vec![ ] ) ;
460
+ check!( "{column}" , Some ( [ "" ] ) , vec![ ] ) ;
461
+ check!( "{module_path}" , Some ( [ "" ] ) , vec![ ] ) ;
446
462
}
447
463
}
448
- check ! ( "{logger}" , Some ( "logger-name" ) , vec![ ] ) ;
449
- check ! ( "{payload}" , Some ( "test payload" ) , vec![ ] ) ;
450
- check ! ( "{pid}" , None as Option <& str >, vec![ OS_ID_RANGE ] ) ;
451
- check ! ( "{tid}" , None as Option <& str >, vec![ OS_ID_RANGE ] ) ;
452
- check ! ( "{eol}" , Some ( "{eol}" ) , vec![ ] ) ;
464
+ check ! ( "{logger}" , Some ( [ "logger-name" ] ) , vec![ ] ) ;
465
+ check ! ( "{payload}" , Some ( [ "test payload" ] ) , vec![ ] ) ;
466
+ check ! ( "{pid}" , None as Option <Vec < & str > >, vec![ OS_ID_RANGE ] ) ;
467
+ check ! ( "{tid}" , None as Option <Vec < & str > >, vec![ OS_ID_RANGE ] ) ;
468
+ check ! ( "{eol}" , Some ( [ "{eol}" ] ) , vec![ ] ) ;
453
469
}
454
470
455
471
#[ cfg( feature = "runtime-pattern" ) ]
0 commit comments