Skip to content

Commit 528eaaf

Browse files
committed
Add render config to make it possible to use popular targets in tests without them being normalized
1 parent 8a195ef commit 528eaaf

File tree

1 file changed

+32
-19
lines changed

1 file changed

+32
-19
lines changed

src/bootstrap/src/core/builder/tests.rs

Lines changed: 32 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -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

15301530
impl 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

16691682
fn host_target() -> String {

0 commit comments

Comments
 (0)