@@ -9,8 +9,8 @@ use crate::build;
9
9
use crate :: config:: { Channel , ConfigInfo } ;
10
10
use crate :: utils:: {
11
11
create_dir, get_sysroot_dir, get_toolchain, git_clone, git_clone_root_dir, remove_file,
12
- run_command, run_command_with_env, run_command_with_output_and_env , rustc_version_info ,
13
- split_args, walk_dir,
12
+ run_command, run_command_with_env, run_command_with_output , run_command_with_output_and_env ,
13
+ rustc_version_info , split_args, walk_dir,
14
14
} ;
15
15
16
16
type Env = HashMap < String , String > ;
@@ -484,6 +484,31 @@ fn setup_rustc(env: &mut Env, args: &TestArg) -> Result<PathBuf, String> {
484
484
} else {
485
485
run_command_with_output_and_env ( & [ & "git" , & "checkout" ] , rust_dir, Some ( env) ) ?;
486
486
}
487
+
488
+ let mut patches = Vec :: new ( ) ;
489
+ walk_dir (
490
+ "patches/tests" ,
491
+ & mut |_| Ok ( ( ) ) ,
492
+ & mut |file_path : & Path | {
493
+ patches. push ( file_path. to_path_buf ( ) ) ;
494
+ Ok ( ( ) )
495
+ } ,
496
+ false ,
497
+ ) ?;
498
+ patches. sort ( ) ;
499
+ // TODO: remove duplication with prepare.rs by creating a apply_patch function in the utils
500
+ // module.
501
+ for file_path in patches {
502
+ println ! ( "[GIT] apply `{}`" , file_path. display( ) ) ;
503
+ let path = Path :: new ( "../.." ) . join ( file_path) ;
504
+ run_command_with_output ( & [ & "git" , & "apply" , & path] , rust_dir) ?;
505
+ run_command_with_output ( & [ & "git" , & "add" , & "-A" ] , rust_dir) ?;
506
+ run_command_with_output (
507
+ & [ & "git" , & "commit" , & "--no-gpg-sign" , & "-m" , & format ! ( "Patch {}" , path. display( ) ) ] ,
508
+ rust_dir,
509
+ ) ?;
510
+ }
511
+
487
512
let cargo = String :: from_utf8 (
488
513
run_command_with_env ( & [ & "rustup" , & "which" , & "cargo" ] , rust_dir, Some ( env) ) ?. stdout ,
489
514
)
0 commit comments