@@ -9,8 +9,8 @@ use crate::build;
99use crate :: config:: { Channel , ConfigInfo } ;
1010use crate :: utils:: {
1111 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,
1414} ;
1515
1616type Env = HashMap < String , String > ;
@@ -484,6 +484,31 @@ fn setup_rustc(env: &mut Env, args: &TestArg) -> Result<PathBuf, String> {
484484 } else {
485485 run_command_with_output_and_env ( & [ & "git" , & "checkout" ] , rust_dir, Some ( env) ) ?;
486486 }
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+
487512 let cargo = String :: from_utf8 (
488513 run_command_with_env ( & [ & "rustup" , & "which" , & "cargo" ] , rust_dir, Some ( env) ) ?. stdout ,
489514 )
0 commit comments