Skip doctests of proc-macro crates

This commit is contained in:
hyd-dev 2021-05-27 06:40:47 +08:00
parent 62046bf8b4
commit f42a6d1026
No known key found for this signature in database
GPG Key ID: 74FA7FD5B8DA14B8
5 changed files with 15 additions and 0 deletions

View File

@ -903,6 +903,13 @@ fn phase_rustdoc(fst_arg: &str, mut args: env::Args) {
show_error(format!("cross-interpreting doc-tests is not currently supported by Miri."));
}
// Doc-tests of `proc-macro` crates (and their dependencies) are always built for the host,
// so we are not able to run them in Miri.
if ArgFlagValueIter::new("--crate-type").any(|crate_type| crate_type == "proc-macro") {
eprintln!("Running doc-tests of `proc-macro` crates is not currently supported by Miri.");
return;
}
// For each doc-test, rustdoc starts two child processes: first the test is compiled,
// then the produced executable is invoked. We want to reroute both of these to cargo-miri,
// such that the first time we'll enter phase_cargo_rustc, and phase_cargo_runner second.

View File

@ -140,6 +140,10 @@ def test_cargo_miri_test():
"test.subcrate.stdout.ref", "test.stderr-proc-macro.ref",
env={'MIRIFLAGS': "-Zmiri-disable-isolation"},
)
test("`cargo miri test` (subcrate, doctests)",
cargo_miri("test") + ["-p", "subcrate", "--doc"],
"test.stdout-empty.ref", "test.stderr-proc-macro-doctest.ref",
)
os.chdir(os.path.dirname(os.path.realpath(__file__)))
os.environ["RUST_TEST_NOCAPTURE"] = "0" # this affects test output, so make sure it is not set

View File

@ -1,2 +1,5 @@
#[cfg(doctest)]
use num_cpus as _;
#[cfg(test)]
compile_error!("Miri should not touch me");

View File

@ -0,0 +1 @@
Running doc-tests of `proc-macro` crates is not currently supported by Miri.

View File