Skip to content

Commit 08b4e10

Browse files
committed
Refactor test::LintDocs
1 parent e9c3e64 commit 08b4e10

File tree

3 files changed

+31
-7
lines changed

3 files changed

+31
-7
lines changed

src/bootstrap/src/core/build_steps/doc.rs

Lines changed: 5 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -791,7 +791,11 @@ fn doc_std(
791791
}
792792

793793
/// Prepare a compiler that will be able to document something for `target` at `stage`.
794-
fn prepare_doc_compiler(builder: &Builder<'_>, target: TargetSelection, stage: u32) -> Compiler {
794+
pub fn prepare_doc_compiler(
795+
builder: &Builder<'_>,
796+
target: TargetSelection,
797+
stage: u32,
798+
) -> Compiler {
795799
assert!(stage > 0, "Cannot document anything in stage 0");
796800
let build_compiler = builder.compiler(stage - 1, builder.host_target);
797801
builder.std(build_compiler, target);

src/bootstrap/src/core/build_steps/test.rs

Lines changed: 25 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -12,7 +12,7 @@ use std::{env, fs, iter};
1212
use build_helper::exit;
1313

1414
use crate::core::build_steps::compile::{Std, run_cargo};
15-
use crate::core::build_steps::doc::DocumentationFormat;
15+
use crate::core::build_steps::doc::{DocumentationFormat, prepare_doc_compiler};
1616
use crate::core::build_steps::gcc::{Gcc, add_cg_gcc_cargo_flags};
1717
use crate::core::build_steps::llvm::get_llvm_version;
1818
use crate::core::build_steps::run::get_completion_paths;
@@ -3273,8 +3273,8 @@ impl Step for TierCheck {
32733273

32743274
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
32753275
pub struct LintDocs {
3276-
pub compiler: Compiler,
3277-
pub target: TargetSelection,
3276+
build_compiler: Compiler,
3277+
target: TargetSelection,
32783278
}
32793279

32803280
impl Step for LintDocs {
@@ -3287,17 +3287,36 @@ impl Step for LintDocs {
32873287
}
32883288

32893289
fn make_run(run: RunConfig<'_>) {
3290+
// Bump the stage to 2, because the rustc book requires an in-tree compiler.
3291+
// At the same time, since this step is enabled by default, we don't want `x test` to fail
3292+
// in stage 1.
3293+
let stage = if run.builder.config.is_explicit_stage() || run.builder.top_stage >= 2 {
3294+
run.builder.top_stage
3295+
} else {
3296+
2
3297+
};
3298+
32903299
run.builder.ensure(LintDocs {
3291-
compiler: run.builder.compiler(run.builder.top_stage, run.builder.config.host_target),
3300+
build_compiler: prepare_doc_compiler(
3301+
run.builder,
3302+
run.builder.config.host_target,
3303+
stage,
3304+
),
32923305
target: run.target,
32933306
});
32943307
}
32953308

32963309
/// Tests that the lint examples in the rustc book generate the correct
32973310
/// lints and have the expected format.
32983311
fn run(self, builder: &Builder<'_>) {
3299-
builder
3300-
.ensure(crate::core::build_steps::doc::RustcBook::validate(self.compiler, self.target));
3312+
builder.ensure(crate::core::build_steps::doc::RustcBook::validate(
3313+
self.build_compiler,
3314+
self.target,
3315+
));
3316+
}
3317+
3318+
fn metadata(&self) -> Option<StepMetadata> {
3319+
Some(StepMetadata::test("lint-docs", self.target).built_by(self.build_compiler))
33013320
}
33023321
}
33033322

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1907,6 +1907,7 @@ mod snapshot {
19071907
[build] rustc 0 <host> -> Linkchecker 1 <host>
19081908
[test] tier-check <host>
19091909
[doc] rustc (book) <host>
1910+
[test] rustc 1 <host> -> lint-docs 2 <host>
19101911
[doc] rustc 1 <host> -> std 1 <host> crates=[]
19111912
[build] rustc 0 <host> -> RustdocTheme 1 <host>
19121913
[test] RustdocUi <host>

0 commit comments

Comments
 (0)