From f87696b26883057302aea8509456990733ecd4b7 Mon Sep 17 00:00:00 2001 From: Mark Simulacrum Date: Sat, 2 Sep 2017 08:02:32 -0600 Subject: Test rustdoc unit tests. Doc tests are temporarily disabled until next release cycle, since current beta Cargo errors on them. Upgrade should be smooth as the relevant tests are already fixed in this commit. --- src/bootstrap/builder.rs | 6 ++--- src/bootstrap/check.rs | 69 +++++++++++++++++++++++++++++++++++++++++++++++- 2 files changed, 71 insertions(+), 4 deletions(-) (limited to 'src/bootstrap') diff --git a/src/bootstrap/builder.rs b/src/bootstrap/builder.rs index 722b3d16e9d..4765546b184 100644 --- a/src/bootstrap/builder.rs +++ b/src/bootstrap/builder.rs @@ -251,9 +251,9 @@ impl<'a> Builder<'a> { tool::RustInstaller, tool::Cargo, tool::Rls, tool::Rustdoc, tool::Clippy, native::Llvm), Kind::Test => describe!(check::Tidy, check::Bootstrap, check::DefaultCompiletest, - check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Linkcheck, - check::Cargotest, check::Cargo, check::Rls, check::Docs, check::ErrorIndex, - check::Distcheck), + check::HostCompiletest, check::Crate, check::CrateLibrustc, check::Rustdoc, + check::Linkcheck, check::Cargotest, check::Cargo, check::Rls, check::Docs, + check::ErrorIndex, check::Distcheck), Kind::Bench => describe!(check::Crate, check::CrateLibrustc), Kind::Doc => describe!(doc::UnstableBook, doc::UnstableBookGen, doc::TheBook, doc::Standalone, doc::Std, doc::Test, doc::Rustc, doc::ErrorIndex, doc::Nomicon, diff --git a/src/bootstrap/check.rs b/src/bootstrap/check.rs index 92fb2105b7c..0d5c3addd9e 100644 --- a/src/bootstrap/check.rs +++ b/src/bootstrap/check.rs @@ -900,7 +900,6 @@ impl Step for CrateLibrustc { } } - #[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] pub struct Crate { compiler: Compiler, @@ -1080,6 +1079,74 @@ impl Step for Crate { } } +#[derive(Debug, Copy, Clone, PartialEq, Eq, Hash)] +pub struct Rustdoc { + host: Interned, + test_kind: TestKind, +} + +impl Step for Rustdoc { + type Output = (); + const DEFAULT: bool = true; + const ONLY_HOSTS: bool = true; + + fn should_run(run: ShouldRun) -> ShouldRun { + run.path("src/librustdoc").path("src/tools/rustdoc") + } + + fn make_run(run: RunConfig) { + let builder = run.builder; + + let test_kind = if builder.kind == Kind::Test { + TestKind::Test + } else if builder.kind == Kind::Bench { + TestKind::Bench + } else { + panic!("unexpected builder.kind in crate: {:?}", builder.kind); + }; + + builder.ensure(Rustdoc { + host: run.host, + test_kind, + }); + } + + fn run(self, builder: &Builder) { + let build = builder.build; + let test_kind = self.test_kind; + + let compiler = builder.compiler(builder.top_stage, self.host); + let target = compiler.host; + + builder.ensure(RemoteCopyLibs { compiler, target }); + + let mut cargo = builder.cargo(compiler, Mode::Librustc, target, test_kind.subcommand()); + compile::rustc_cargo(build, &compiler, target, &mut cargo); + let _folder = build.fold_output(|| { + format!("{}_stage{}-rustdoc", test_kind.subcommand(), compiler.stage) + }); + println!("{} rustdoc stage{} ({} -> {})", test_kind, compiler.stage, + &compiler.host, target); + + if test_kind.subcommand() == "test" && !build.fail_fast { + cargo.arg("--no-fail-fast"); + } + + cargo.arg("-p").arg("rustdoc:0.0.0"); + + cargo.arg("--"); + cargo.args(&build.config.cmd.test_args()); + + if build.config.quiet_tests { + cargo.arg("--quiet"); + } + + let _time = util::timeit(); + + try_run(build, &mut cargo); + } +} + fn envify(s: &str) -> String { s.chars().map(|c| { match c { -- cgit 1.4.1-3-g733a5