@@ -60,27 +60,43 @@ impl Runner {
60
60
snapbox:: debug!( "Case: {:#?}" , s) ;
61
61
match s {
62
62
Ok ( status) => {
63
- let _ = writeln ! (
63
+ let _ = write ! (
64
64
stderr,
65
65
"{} {} ... {}" ,
66
66
palette. hint( "Testing" ) ,
67
67
status. name( ) ,
68
- status. spawn. status. summary( )
68
+ status. spawn. status. summary( ) ,
69
69
) ;
70
+ if let Some ( duration) = status. duration {
71
+ let _ = write ! (
72
+ stderr,
73
+ " {}" ,
74
+ palette. hint( humantime:: format_duration( duration) ) ,
75
+ ) ;
76
+ }
77
+ let _ = writeln ! ( stderr) ;
70
78
if !status. is_ok ( ) {
71
79
// Assuming `status` will print the newline
72
80
let _ = write ! ( stderr, "{}" , & status) ;
73
81
}
74
82
None
75
83
}
76
84
Err ( status) => {
77
- let _ = writeln ! (
85
+ let _ = write ! (
78
86
stderr,
79
87
"{} {} ... {}" ,
80
88
palette. hint( "Testing" ) ,
81
89
status. name( ) ,
82
90
palette. error( "failed" ) ,
83
91
) ;
92
+ if let Some ( duration) = status. duration {
93
+ let _ = write ! (
94
+ stderr,
95
+ " {}" ,
96
+ palette. hint( humantime:: format_duration( duration) ) ,
97
+ ) ;
98
+ }
99
+ let _ = writeln ! ( stderr) ;
84
100
// Assuming `status` will print the newline
85
101
let _ = write ! ( stderr, "{}" , & status) ;
86
102
Some ( status)
@@ -356,10 +372,13 @@ impl Case {
356
372
}
357
373
358
374
let cmd = step. to_command ( cwd) . map_err ( |e| output. clone ( ) . error ( e) ) ?;
375
+ let timer = std:: time:: Instant :: now ( ) ;
359
376
let cmd_output = cmd
360
377
. output ( )
361
378
. map_err ( |e| output. clone ( ) . error ( e. to_string ( ) . into ( ) ) ) ?;
379
+
362
380
let output = output. output ( cmd_output) ;
381
+ let output = output. duration ( timer. elapsed ( ) ) ;
363
382
364
383
// For Mode::Dump's sake, allow running all
365
384
let output = self . validate_spawn ( output, step. expected_status ( ) ) ;
@@ -549,6 +568,7 @@ pub(crate) struct Output {
549
568
stdout : Option < Stream > ,
550
569
stderr : Option < Stream > ,
551
570
fs : Filesystem ,
571
+ duration : Option < std:: time:: Duration > ,
552
572
}
553
573
554
574
impl Output {
@@ -563,6 +583,7 @@ impl Output {
563
583
stdout : None ,
564
584
stderr : None ,
565
585
fs : Default :: default ( ) ,
586
+ duration : Default :: default ( ) ,
566
587
}
567
588
}
568
589
@@ -574,6 +595,7 @@ impl Output {
574
595
stdout : None ,
575
596
stderr : None ,
576
597
fs : Default :: default ( ) ,
598
+ duration : Default :: default ( ) ,
577
599
}
578
600
}
579
601
@@ -599,6 +621,11 @@ impl Output {
599
621
self
600
622
}
601
623
624
+ fn duration ( mut self , duration : std:: time:: Duration ) -> Self {
625
+ self . duration = Some ( duration) ;
626
+ self
627
+ }
628
+
602
629
fn is_ok ( & self ) -> bool {
603
630
self . spawn . is_ok ( )
604
631
&& self . stdout . as_ref ( ) . map ( |s| s. is_ok ( ) ) . unwrap_or ( true )
0 commit comments