33use std:: fs:: File ;
44use std:: io;
55use std:: io:: prelude:: Write ;
6+ use std:: time:: Instant ;
67
78use super :: {
89 bench:: fmt_bench_samples,
@@ -14,7 +15,7 @@ use super::{
1415 options:: { Options , OutputFormat } ,
1516 run_tests,
1617 test_result:: TestResult ,
17- time:: TestExecTime ,
18+ time:: { TestExecTime , TestSuiteExecTime } ,
1819 types:: { NamePadding , TestDesc , TestDescAndFn } ,
1920} ;
2021
@@ -49,6 +50,7 @@ pub struct ConsoleTestState {
4950 pub allowed_fail : usize ,
5051 pub filtered_out : usize ,
5152 pub measured : usize ,
53+ pub exec_time : Option < TestSuiteExecTime > ,
5254 pub metrics : MetricMap ,
5355 pub failures : Vec < ( TestDesc , Vec < u8 > ) > ,
5456 pub not_failures : Vec < ( TestDesc , Vec < u8 > ) > ,
@@ -72,6 +74,7 @@ impl ConsoleTestState {
7274 allowed_fail : 0 ,
7375 filtered_out : 0 ,
7476 measured : 0 ,
77+ exec_time : None ,
7578 metrics : MetricMap :: new ( ) ,
7679 failures : Vec :: new ( ) ,
7780 not_failures : Vec :: new ( ) ,
@@ -277,7 +280,12 @@ pub fn run_tests_console(opts: &TestOpts, tests: Vec<TestDescAndFn>) -> io::Resu
277280 } ;
278281 let mut st = ConsoleTestState :: new ( opts) ?;
279282
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) ;
280287 run_tests ( opts, tests, |x| on_test_event ( & x, & mut st, & mut * out) ) ?;
288+ st. exec_time = start_time. map ( |t| TestSuiteExecTime ( t. elapsed ( ) ) ) ;
281289
282290 assert ! ( st. current_test_count( ) == st. total) ;
283291
0 commit comments