rust/tests/run-make/doctests-merge/rmake.rs

40 lines
1.4 KiB
Rust

use std::path::Path;
use run_make_support::{cwd, diff, rustc, rustdoc};
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);
}