@@ -13,6 +13,7 @@ use common::{CompileFail, ParseFail, Pretty, RunFail, RunPass, RunPassValgrind};
13
13
use common:: { Codegen , DebugInfoLldb , DebugInfoGdb , Rustdoc , CodegenUnits } ;
14
14
use common:: { Incremental , RunMake , Ui , MirOpt } ;
15
15
use errors:: { self , ErrorKind , Error } ;
16
+ use filetime:: FileTime ;
16
17
use json;
17
18
use header:: TestProps ;
18
19
use header;
@@ -2457,12 +2458,25 @@ actual:\n\
2457
2458
}
2458
2459
}
2459
2460
2461
+ fn check_mir_test_timestamp ( & self , test_name : & str , output_file : & Path ) {
2462
+ let t = |file| FileTime :: from_last_modification_time ( & fs:: metadata ( file) . unwrap ( ) ) ;
2463
+ let source_file = & self . testpaths . file ;
2464
+ let output_time = t ( output_file) ;
2465
+ let source_time = t ( source_file) ;
2466
+ if source_time > output_time {
2467
+ debug ! ( "source file time: {:?} output file time: {:?}" , source_time, output_time) ;
2468
+ panic ! ( "test source file `{}` is newer than potentially stale output file `{}`." ,
2469
+ source_file. display( ) , test_name) ;
2470
+ }
2471
+ }
2472
+
2460
2473
fn compare_mir_test_output ( & self , test_name : & str , expected_content : & Vec < & str > ) {
2461
2474
let mut output_file = PathBuf :: new ( ) ;
2462
2475
output_file. push ( self . get_mir_dump_dir ( ) ) ;
2463
2476
output_file. push ( test_name) ;
2464
2477
debug ! ( "comparing the contests of: {:?}" , output_file) ;
2465
2478
debug ! ( "with: {:?}" , expected_content) ;
2479
+ self . check_mir_test_timestamp ( test_name, & output_file) ;
2466
2480
2467
2481
let mut dumped_file = fs:: File :: open ( output_file. clone ( ) ) . unwrap ( ) ;
2468
2482
let mut dumped_string = String :: new ( ) ;
0 commit comments