diff --git a/src/bootstrap/flags.rs b/src/bootstrap/flags.rs index 42b949527e0..eb5c3b8ce14 100644 --- a/src/bootstrap/flags.rs +++ b/src/bootstrap/flags.rs @@ -60,6 +60,7 @@ pub enum Subcommand { test_args: Vec, rustc_args: Vec, fail_fast: bool, + doc_tests: bool, }, Bench { paths: Vec, @@ -164,6 +165,7 @@ To learn more about a subcommand, run `./x.py -h`"); "extra options to pass the compiler when running tests", "ARGS", ); + opts.optflag("", "doc", "run doc tests"); }, "bench" => { opts.optmulti("", "test-args", "extra arguments", "ARGS"); }, "clean" => { opts.optflag("", "all", "clean all build artifacts"); }, @@ -320,6 +322,7 @@ Arguments: test_args: matches.opt_strs("test-args"), rustc_args: matches.opt_strs("rustc-args"), fail_fast: !matches.opt_present("no-fail-fast"), + doc_tests: matches.opt_present("doc"), } } "bench" => { @@ -410,6 +413,13 @@ impl Subcommand { _ => false, } } + + pub fn doc_tests(&self) -> bool { + match *self { + Subcommand::Test { doc_tests, .. } => doc_tests, + _ => false, + } + } } fn split(s: Vec) -> Vec { diff --git a/src/bootstrap/lib.rs b/src/bootstrap/lib.rs index afd740ce548..90f50275b6b 100644 --- a/src/bootstrap/lib.rs +++ b/src/bootstrap/lib.rs @@ -226,6 +226,7 @@ pub struct Build { rustfmt_info: channel::GitInfo, local_rebuild: bool, fail_fast: bool, + doc_tests: bool, verbosity: usize, // Targets for which to build. @@ -326,6 +327,7 @@ impl Build { initial_cargo: config.initial_cargo.clone(), local_rebuild: config.local_rebuild, fail_fast: config.cmd.fail_fast(), + doc_tests: config.cmd.doc_tests(), verbosity: config.verbose, build: config.build, diff --git a/src/bootstrap/test.rs b/src/bootstrap/test.rs index 64ede4f4ecc..c969f102471 100644 --- a/src/bootstrap/test.rs +++ b/src/bootstrap/test.rs @@ -1355,6 +1355,9 @@ impl Step for Crate { if test_kind.subcommand() == "test" && !build.fail_fast { cargo.arg("--no-fail-fast"); } + if build.doc_tests { + cargo.arg("--doc"); + } cargo.arg("-p").arg(krate);