@@ -637,8 +637,8 @@ mod snapshot {
637637
638638 use crate :: core:: build_steps:: { compile, dist, doc, test, tool} ;
639639 use crate :: core:: builder:: tests:: {
640- TEST_TRIPLE_1 , TEST_TRIPLE_2 , TEST_TRIPLE_3 , configure, configure_with_args, first ,
641- host_target, render_steps, run_build,
640+ RenderConfig , TEST_TRIPLE_1 , TEST_TRIPLE_2 , TEST_TRIPLE_3 , configure, configure_with_args,
641+ first , host_target, render_steps, run_build,
642642 } ;
643643 use crate :: core:: builder:: { Builder , Kind , StepDescription , StepMetadata } ;
644644 use crate :: core:: config:: TargetSelection ;
@@ -1529,7 +1529,10 @@ struct ExecutedSteps {
15291529
15301530impl ExecutedSteps {
15311531 fn render ( & self ) -> String {
1532- render_steps ( & self . steps )
1532+ self . render_with ( RenderConfig :: default ( ) )
1533+ }
1534+ fn render_with ( & self , config : RenderConfig ) -> String {
1535+ render_steps ( & self . steps , config)
15331536 }
15341537
15351538 #[ track_caller]
@@ -1538,7 +1541,7 @@ impl ExecutedSteps {
15381541 if !self . contains ( & metadata) {
15391542 panic ! (
15401543 "Metadata `{}` ({metadata:?}) not found in executed steps:\n {}" ,
1541- render_metadata( & metadata) ,
1544+ render_metadata( & metadata, & RenderConfig :: default ( ) ) ,
15421545 self . render( )
15431546 ) ;
15441547 }
@@ -1553,7 +1556,7 @@ impl ExecutedSteps {
15531556 if !self . contains_fuzzy ( & metadata) {
15541557 panic ! (
15551558 "Metadata `{}` ({metadata:?}) not found in executed steps:\n {}" ,
1556- render_metadata( & metadata) ,
1559+ render_metadata( & metadata, & RenderConfig :: default ( ) ) ,
15571560 self . render( )
15581561 ) ;
15591562 }
@@ -1565,7 +1568,7 @@ impl ExecutedSteps {
15651568 if self . contains ( & metadata) {
15661569 panic ! (
15671570 "Metadata `{}` ({metadata:?}) found in executed steps (it should not be there):\n {}" ,
1568- render_metadata( & metadata) ,
1571+ render_metadata( & metadata, & RenderConfig :: default ( ) ) ,
15691572 self . render( )
15701573 ) ;
15711574 }
@@ -1618,14 +1621,24 @@ impl ConfigBuilder {
16181621 }
16191622}
16201623
1624+ struct RenderConfig {
1625+ normalize_host : bool ,
1626+ }
1627+
1628+ impl Default for RenderConfig {
1629+ fn default ( ) -> Self {
1630+ Self { normalize_host : true }
1631+ }
1632+ }
1633+
16211634/// Renders the executed bootstrap steps for usage in snapshot tests with insta.
16221635/// Only renders certain important steps.
16231636/// Each value in `steps` should be a tuple of (Step, step output).
16241637///
16251638/// The arrow in the rendered output (`X -> Y`) means `X builds Y`.
16261639/// This is similar to the output printed by bootstrap to stdout, but here it is
16271640/// generated purely for the purpose of tests.
1628- fn render_steps ( steps : & [ ExecutedStep ] ) -> String {
1641+ fn render_steps ( steps : & [ ExecutedStep ] , config : RenderConfig ) -> String {
16291642 steps
16301643 . iter ( )
16311644 . filter_map ( |step| {
@@ -1635,35 +1648,35 @@ fn render_steps(steps: &[ExecutedStep]) -> String {
16351648 return None ;
16361649 } ;
16371650
1638- Some ( render_metadata ( & metadata) )
1651+ Some ( render_metadata ( & metadata, & config ) )
16391652 } )
16401653 . collect :: < Vec < _ > > ( )
16411654 . join ( "\n " )
16421655}
16431656
1644- fn render_metadata ( metadata : & StepMetadata ) -> String {
1657+ fn render_metadata ( metadata : & StepMetadata , config : & RenderConfig ) -> String {
16451658 let mut record = format ! ( "[{}] " , metadata. kind. as_str( ) ) ;
16461659 if let Some ( compiler) = metadata. built_by {
1647- write ! ( record, "{} -> " , render_compiler( compiler) ) ;
1660+ write ! ( record, "{} -> " , render_compiler( compiler, config ) ) ;
16481661 }
16491662 let stage = metadata. get_stage ( ) . map ( |stage| format ! ( "{stage} " ) ) . unwrap_or_default ( ) ;
1650- write ! ( record, "{} {stage}<{}>" , metadata. name, normalize_target( metadata. target) ) ;
1663+ write ! ( record, "{} {stage}<{}>" , metadata. name, normalize_target( metadata. target, config ) ) ;
16511664 if let Some ( metadata) = & metadata. metadata {
16521665 write ! ( record, " {metadata}" ) ;
16531666 }
16541667 record
16551668}
16561669
1657- fn normalize_target ( target : TargetSelection ) -> String {
1658- target
1659- . to_string ( )
1660- . replace ( & host_target ( ) , "host" )
1661- . replace ( TEST_TRIPLE_1 , "target1" )
1662- . replace ( TEST_TRIPLE_2 , "target2" )
1670+ fn normalize_target ( target : TargetSelection , config : & RenderConfig ) -> String {
1671+ let mut target = target . to_string ( ) ;
1672+ if config . normalize_host {
1673+ target = target . replace ( & host_target ( ) , "host" ) ;
1674+ }
1675+ target . replace ( TEST_TRIPLE_1 , "target1" ) . replace ( TEST_TRIPLE_2 , "target2" )
16631676}
16641677
1665- fn render_compiler ( compiler : Compiler ) -> String {
1666- format ! ( "rustc {} <{}>" , compiler. stage, normalize_target( compiler. host) )
1678+ fn render_compiler ( compiler : Compiler , config : & RenderConfig ) -> String {
1679+ format ! ( "rustc {} <{}>" , compiler. stage, normalize_target( compiler. host, config ) )
16671680}
16681681
16691682fn host_target ( ) -> String {
0 commit comments