3
3
use std:: fs:: File ;
4
4
use std:: io;
5
5
use std:: io:: prelude:: Write ;
6
+ use std:: time:: Instant ;
6
7
7
8
use super :: {
8
9
bench:: fmt_bench_samples,
@@ -14,7 +15,7 @@ use super::{
14
15
options:: { Options , OutputFormat } ,
15
16
run_tests,
16
17
test_result:: TestResult ,
17
- time:: TestExecTime ,
18
+ time:: { TestExecTime , TestSuiteExecTime } ,
18
19
types:: { NamePadding , TestDesc , TestDescAndFn } ,
19
20
} ;
20
21
@@ -49,6 +50,7 @@ pub struct ConsoleTestState {
49
50
pub allowed_fail : usize ,
50
51
pub filtered_out : usize ,
51
52
pub measured : usize ,
53
+ pub exec_time : Option < TestSuiteExecTime > ,
52
54
pub metrics : MetricMap ,
53
55
pub failures : Vec < ( TestDesc , Vec < u8 > ) > ,
54
56
pub not_failures : Vec < ( TestDesc , Vec < u8 > ) > ,
@@ -72,6 +74,7 @@ impl ConsoleTestState {
72
74
allowed_fail : 0 ,
73
75
filtered_out : 0 ,
74
76
measured : 0 ,
77
+ exec_time : None ,
75
78
metrics : MetricMap :: new ( ) ,
76
79
failures : Vec :: new ( ) ,
77
80
not_failures : Vec :: new ( ) ,
@@ -277,7 +280,12 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
277
280
} ;
278
281
let mut st = ConsoleTestState :: new ( opts) ?;
279
282
283
+ // `Instant` is currently not supported for wasm targets
284
+ let is_instant_supported = !cfg ! ( target_arch = "wasm32" ) ;
285
+
286
+ let start_time = is_instant_supported. then ( Instant :: now) ;
280
287
run_tests ( opts, tests, |x| on_test_event ( & x, & mut st, & mut * out) ) ?;
288
+ st. exec_time = start_time. map ( |t| TestSuiteExecTime ( t. elapsed ( ) ) ) ;
281
289
282
290
assert ! ( st. current_test_count( ) == st. total) ;
283
291
0 commit comments