@@ -8,6 +8,7 @@ use super::*;
88use crate :: Flags ;
99use crate :: core:: build_steps:: doc:: DocumentationFormat ;
1010use crate :: core:: config:: Config ;
11+ use crate :: utils:: helpers:: get_host_target;
1112use crate :: utils:: tests:: git:: { GitCtx , git_test} ;
1213
1314static TEST_TRIPLE_1 : & str = "i686-unknown-haiku" ;
@@ -1235,24 +1236,38 @@ fn any_debug() {
12351236/// The staging tests use insta for snapshot testing.
12361237/// See bootstrap's README on how to bless the snapshots.
12371238mod staging {
1239+ use crate :: Build ;
1240+ use crate :: core:: builder:: Builder ;
12381241 use crate :: core:: builder:: tests:: {
12391242 TEST_TRIPLE_1 , configure, configure_with_args, render_steps, run_build,
12401243 } ;
1244+ use crate :: utils:: tests:: ConfigBuilder ;
12411245
12421246 #[ test]
12431247 fn build_compiler_stage_1 ( ) {
1244- let mut cache = run_build (
1245- & [ "compiler" . into ( ) ] ,
1246- configure_with_args ( & [ "build" , "--stage" , "1" ] , & [ TEST_TRIPLE_1 ] , & [ TEST_TRIPLE_1 ] ) ,
1247- ) ;
1248- let steps = cache. into_executed_steps ( ) ;
1249- insta:: assert_snapshot!( render_steps( & steps) , @r"
1250- [build] rustc 0 <target1> -> std 0 <target1>
1251- [build] llvm <target1>
1252- [build] rustc 0 <target1> -> rustc 1 <target1>
1253- [build] rustc 0 <target1> -> rustc 1 <target1>
1248+ insta:: assert_snapshot!(
1249+ ConfigBuilder :: build( )
1250+ . path( "compiler" )
1251+ . stage( 1 )
1252+ . get_steps( ) , @r"
1253+ [build] rustc 0 <host> -> std 0 <host>
1254+ [build] llvm <host>
1255+ [build] rustc 0 <host> -> rustc 1 <host>
1256+ [build] rustc 0 <host> -> rustc 1 <host>
12541257 " ) ;
12551258 }
1259+
1260+ impl ConfigBuilder {
1261+ fn get_steps ( self ) -> String {
1262+ let config = self . create_config ( ) ;
1263+
1264+ let kind = config. cmd . kind ( ) ;
1265+ let build = Build :: new ( config) ;
1266+ let builder = Builder :: new ( & build) ;
1267+ builder. run_step_descriptions ( & Builder :: get_step_descriptions ( kind) , & builder. paths ) ;
1268+ render_steps ( & builder. cache . into_executed_steps ( ) )
1269+ }
1270+ }
12561271}
12571272
12581273/// Renders the executed bootstrap steps for usage in snapshot tests with insta.
@@ -1276,19 +1291,14 @@ fn render_steps(steps: &[(Box<dyn Any>, Box<dyn Any>)]) -> String {
12761291 "[build] {} -> std {} <{}>" ,
12771292 render_compiler( std. compiler) ,
12781293 std. compiler. stage,
1279- std. target
1294+ normalize_target ( std. target)
12801295 ) )
12811296 } else if let Some ( ( llvm, output) ) = downcast_step :: < llvm:: Llvm > ( step, output) {
1282- Some ( format ! ( "[build] llvm <{}>" , llvm. target) )
1297+ Some ( format ! ( "[build] llvm <{}>" , normalize_target ( llvm. target) ) )
12831298 } else {
12841299 None
12851300 }
12861301 } )
1287- . map ( |line| {
1288- line. replace ( TEST_TRIPLE_1 , "target1" )
1289- . replace ( TEST_TRIPLE_2 , "target2" )
1290- . replace ( TEST_TRIPLE_3 , "target3" )
1291- } )
12921302 . collect :: < Vec < _ > > ( )
12931303 . join ( "\n " )
12941304}
@@ -1306,6 +1316,10 @@ fn downcast_step<'a, S: Step>(
13061316 Some ( ( step, output) )
13071317}
13081318
1319+ fn normalize_target ( target : TargetSelection ) -> String {
1320+ target. to_string ( ) . replace ( & get_host_target ( ) . to_string ( ) , "host" )
1321+ }
1322+
13091323fn render_compiler ( compiler : Compiler ) -> String {
1310- format ! ( "rustc {} <{}>" , compiler. stage, compiler. host)
1324+ format ! ( "rustc {} <{}>" , compiler. stage, normalize_target ( compiler. host) )
13111325}
0 commit comments