Add snapshot test for cross-compiled dist without docs
This commit is contained in:
parent
d327d651e2
commit
598387bfb5
2 changed files with 88 additions and 5 deletions
|
|
@ -145,8 +145,7 @@ pub trait Step: 'static + Clone + Debug + PartialEq + Eq + Hash {
|
|||
}
|
||||
|
||||
/// Metadata that describes an executed step, mostly for testing and tracing.
|
||||
#[allow(unused)]
|
||||
#[derive(Debug, PartialEq, Eq)]
|
||||
#[derive(Clone, Debug, PartialEq, Eq)]
|
||||
pub struct StepMetadata {
|
||||
name: String,
|
||||
kind: Kind,
|
||||
|
|
|
|||
|
|
@ -1493,7 +1493,7 @@ mod snapshot {
|
|||
/// This also serves as an important regression test for <https://github.com/rust-lang/rust/issues/138123>
|
||||
/// and <https://github.com/rust-lang/rust/issues/138004>.
|
||||
#[test]
|
||||
fn dist_all_cross() {
|
||||
fn dist_all_cross_extended() {
|
||||
let ctx = TestCtx::new();
|
||||
insta::assert_snapshot!(
|
||||
ctx
|
||||
|
|
@ -1571,8 +1571,77 @@ mod snapshot {
|
|||
");
|
||||
}
|
||||
|
||||
// Enable dist cranelift tarball by default with `x dist` if cranelift is enabled in
|
||||
// `rust.codegen-backends`.
|
||||
/// Simulates e.g. the powerpc64 builder, which is fully cross-compiled from x64, but it does
|
||||
/// not build docs. Crutically, it shouldn't build host stage 2 rustc.
|
||||
#[test]
|
||||
fn dist_all_cross_extended_no_docs() {
|
||||
let ctx = TestCtx::new();
|
||||
let steps = ctx
|
||||
.config("dist")
|
||||
.hosts(&[TEST_TRIPLE_1])
|
||||
.targets(&[TEST_TRIPLE_1])
|
||||
.args(&[
|
||||
"--set",
|
||||
"rust.channel=nightly",
|
||||
"--set",
|
||||
"build.extended=true",
|
||||
"--set",
|
||||
"build.docs=false",
|
||||
])
|
||||
.get_steps();
|
||||
|
||||
// Make sure that we don't build stage2 host rustc
|
||||
// steps.assert_no_match(|m| {
|
||||
// m.name == "rustc"
|
||||
// && m.built_by.map(|b| b.stage) == Some(1)
|
||||
// && *m.target.triple == host_target()
|
||||
// });
|
||||
|
||||
insta::assert_snapshot!(
|
||||
steps.render(), @r"
|
||||
[dist] mingw <target1>
|
||||
[build] llvm <host>
|
||||
[build] llvm <target1>
|
||||
[build] rustc 0 <host> -> rustc 1 <host>
|
||||
[build] rustc 0 <host> -> WasmComponentLd 1 <host>
|
||||
[build] rustc 1 <host> -> std 1 <target1>
|
||||
[build] rustc 1 <host> -> std 1 <host>
|
||||
[build] rustc 1 <host> -> rustc 2 <target1>
|
||||
[build] rustc 1 <host> -> WasmComponentLd 2 <target1>
|
||||
[build] rustdoc 2 <target1>
|
||||
[build] rustc 1 <host> -> rust-analyzer-proc-macro-srv 2 <target1>
|
||||
[build] rustc 0 <host> -> GenerateCopyright 1 <host>
|
||||
[build] rustc 0 <host> -> RustInstaller 1 <host>
|
||||
[dist] rustc <target1>
|
||||
[build] rustc 1 <host> -> rustc 2 <host>
|
||||
[build] rustc 1 <host> -> WasmComponentLd 2 <host>
|
||||
[build] rustc 2 <host> -> std 2 <target1>
|
||||
[dist] rustc 2 <host> -> std 2 <target1>
|
||||
[dist] rustc 1 <host> -> rustc-dev 2 <target1>
|
||||
[dist] rustc 1 <host> -> analysis 2 <target1>
|
||||
[dist] src <>
|
||||
[build] rustc 1 <host> -> cargo 2 <target1>
|
||||
[dist] rustc 1 <host> -> cargo 2 <target1>
|
||||
[build] rustc 1 <host> -> rust-analyzer 2 <target1>
|
||||
[dist] rustc 1 <host> -> rust-analyzer 2 <target1>
|
||||
[build] rustc 1 <host> -> rustfmt 2 <target1>
|
||||
[build] rustc 1 <host> -> cargo-fmt 2 <target1>
|
||||
[dist] rustc 1 <host> -> rustfmt 2 <target1>
|
||||
[build] rustc 1 <host> -> clippy-driver 2 <target1>
|
||||
[build] rustc 1 <host> -> cargo-clippy 2 <target1>
|
||||
[dist] rustc 1 <host> -> clippy 2 <target1>
|
||||
[build] rustc 1 <host> -> miri 2 <target1>
|
||||
[build] rustc 1 <host> -> cargo-miri 2 <target1>
|
||||
[dist] rustc 1 <host> -> miri 2 <target1>
|
||||
[build] rustc 1 <host> -> LlvmBitcodeLinker 2 <target1>
|
||||
[dist] rustc 1 <host> -> std 1 <target1>
|
||||
[dist] rustc 1 <host> -> extended 2 <target1>
|
||||
[dist] reproducible-artifacts <target1>
|
||||
");
|
||||
}
|
||||
|
||||
/// Enable dist cranelift tarball by default with `x dist` if cranelift is enabled in
|
||||
/// `rust.codegen-backends`.
|
||||
#[test]
|
||||
fn dist_cranelift_by_default() {
|
||||
let ctx = TestCtx::new();
|
||||
|
|
@ -2426,6 +2495,21 @@ impl ExecutedSteps {
|
|||
}
|
||||
}
|
||||
|
||||
/// Make sure that no metadata matches the given `func`.
|
||||
#[track_caller]
|
||||
fn assert_no_match<F>(&self, func: F)
|
||||
where
|
||||
F: Fn(StepMetadata) -> bool,
|
||||
{
|
||||
for metadata in self.steps.iter().filter_map(|s| s.metadata.clone()) {
|
||||
if func(metadata.clone()) {
|
||||
panic!(
|
||||
"Metadata {metadata:?} was found, even though it should have not been present"
|
||||
);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
fn contains(&self, metadata: &StepMetadata) -> bool {
|
||||
self.steps
|
||||
.iter()
|
||||
|
|
|
|||
Loading…
Add table
Add a link
Reference in a new issue