2024-06-10 16:33:14 -05:00
|
|
|
use std::path::Path;
|
|
|
|
|
2024-07-29 07:38:47 -05:00
|
|
|
use run_make_support::{cwd, diff, rustc, rustdoc};
|
|
|
|
|
2024-06-10 16:33:14 -05:00
|
|
|
fn test_and_compare(input_file: &str, stdout_file: &str, edition: &str, dep: &Path) {
|
|
|
|
let mut cmd = rustdoc();
|
|
|
|
|
|
|
|
let output = cmd
|
|
|
|
.input(input_file)
|
|
|
|
.arg("--test")
|
|
|
|
.arg("-Zunstable-options")
|
|
|
|
.edition(edition)
|
|
|
|
.arg("--test-args=--test-threads=1")
|
|
|
|
.extern_("foo", dep.display().to_string())
|
|
|
|
.env("RUST_BACKTRACE", "short")
|
|
|
|
.run();
|
|
|
|
|
|
|
|
diff()
|
|
|
|
.expected_file(stdout_file)
|
|
|
|
.actual_text("output", output.stdout_utf8())
|
|
|
|
.normalize(r#"finished in \d+\.\d+s"#, "finished in $$TIME")
|
|
|
|
.run();
|
|
|
|
}
|
|
|
|
|
|
|
|
fn main() {
|
|
|
|
let out_file = cwd().join("libfoo.rlib");
|
|
|
|
|
|
|
|
rustc().input("doctest.rs").crate_type("rlib").output(&out_file).run();
|
|
|
|
|
|
|
|
// First we ensure that running with the 2024 edition will not fail at runtime.
|
|
|
|
test_and_compare("doctest.rs", "doctest-2024.stdout", "2024", &out_file);
|
|
|
|
|
|
|
|
// Then we ensure that running with an edition < 2024 will not fail at runtime.
|
|
|
|
test_and_compare("doctest.rs", "doctest-2021.stdout", "2021", &out_file);
|
|
|
|
|
|
|
|
// Now we check with the standalone attribute which should succeed in all cases.
|
|
|
|
test_and_compare("doctest-standalone.rs", "doctest-standalone.stdout", "2024", &out_file);
|
|
|
|
test_and_compare("doctest-standalone.rs", "doctest-standalone.stdout", "2021", &out_file);
|
|
|
|
}
|