Skip to content

Commit e759b97

Browse files
committed
Refactor test::LintDocs
1 parent 2ca5cb8 commit e759b97

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;
@@ -3304,8 +3304,8 @@ impl Step for TierCheck {
33043304

33053305
#[derive(Debug, Clone, PartialEq, Eq, Hash)]
33063306
pub struct LintDocs {
3307-
pub compiler: Compiler,
3308-
pub target: TargetSelection,
3307+
build_compiler: Compiler,
3308+
target: TargetSelection,
33093309
}
33103310

33113311
impl Step for LintDocs {
@@ -3318,17 +3318,36 @@ impl Step for LintDocs {
33183318
}
33193319

33203320
fn make_run(run: RunConfig<'_>) {
3321+
// Bump the stage to 2, because the rustc book requires an in-tree compiler.
3322+
// At the same time, since this step is enabled by default, we don't want `x test` to fail
3323+
// in stage 1.
3324+
let stage = if run.builder.config.is_explicit_stage() || run.builder.top_stage >= 2 {
3325+
run.builder.top_stage
3326+
} else {
3327+
2
3328+
};
3329+
33213330
run.builder.ensure(LintDocs {
3322-
compiler: run.builder.compiler(run.builder.top_stage, run.builder.config.host_target),
3331+
build_compiler: prepare_doc_compiler(
3332+
run.builder,
3333+
run.builder.config.host_target,
3334+
stage,
3335+
),
33233336
target: run.target,
33243337
});
33253338
}
33263339

33273340
/// Tests that the lint examples in the rustc book generate the correct
33283341
/// lints and have the expected format.
33293342
fn run(self, builder: &Builder<'_>) {
3330-
builder
3331-
.ensure(crate::core::build_steps::doc::RustcBook::validate(self.compiler, self.target));
3343+
builder.ensure(crate::core::build_steps::doc::RustcBook::validate(
3344+
self.build_compiler,
3345+
self.target,
3346+
));
3347+
}
3348+
3349+
fn metadata(&self) -> Option<StepMetadata> {
3350+
Some(StepMetadata::test("lint-docs", self.target).built_by(self.build_compiler))
33323351
}
33333352
}
33343353

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

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2093,6 +2093,7 @@ mod snapshot {
20932093
[build] rustc 0 <host> -> Linkchecker 1 <host>
20942094
[test] tier-check <host>
20952095
[doc] rustc (book) <host>
2096+
[test] rustc 1 <host> -> lint-docs 2 <host>
20962097
[doc] rustc 1 <host> -> std 1 <host> crates=[]
20972098
[build] rustc 0 <host> -> RustdocTheme 1 <host>
20982099
[test] RustdocUi <host>

0 commit comments

Comments
 (0)