rust/tests/run-make/doctests-keep-binaries/rmake.rs
2024-05-14 13:39:40 +02:00

66 lines
2.0 KiB
Rust

// Check that valid binaries are persisted by running them, regardless of whether the
// --run or --no-run option is used.
use run_make_support::{run, rustc, rustdoc, tmp_dir};
use std::fs::{create_dir, remove_dir_all};
use std::path::Path;
fn setup_test_env<F: FnOnce(&Path, &Path)>(callback: F) {
let out_dir = tmp_dir().join("doctests");
create_dir(&out_dir).expect("failed to create doctests folder");
rustc().input("t.rs").crate_type("rlib").run();
callback(&out_dir, &tmp_dir().join("libt.rlib"));
remove_dir_all(out_dir);
}
fn check_generated_binaries() {
run("doctests/t_rs_2_0/rust_out");
run("doctests/t_rs_8_0/rust_out");
}
fn main() {
setup_test_env(|out_dir, extern_path| {
rustdoc()
.input("t.rs")
.arg("-Zunstable-options")
.arg("--test")
.arg("--persist-doctests")
.arg(out_dir)
.extern_("t", extern_path)
.run();
check_generated_binaries();
});
setup_test_env(|out_dir, extern_path| {
rustdoc()
.input("t.rs")
.arg("-Zunstable-options")
.arg("--test")
.arg("--persist-doctests")
.arg(out_dir)
.extern_("t", extern_path)
.arg("--no-run")
.run();
check_generated_binaries();
});
// Behavior with --test-run-directory with relative paths.
setup_test_env(|_out_dir, extern_path| {
let run_dir = "rundir";
let run_dir_path = tmp_dir().join("rundir");
create_dir(&run_dir_path).expect("failed to create rundir folder");
rustdoc()
.current_dir(tmp_dir())
.input(std::env::current_dir().unwrap().join("t.rs"))
.arg("-Zunstable-options")
.arg("--test")
.arg("--persist-doctests")
.arg("doctests")
.arg("--test-run-directory")
.arg(run_dir)
.extern_("t", "libt.rlib")
.run();
remove_dir_all(run_dir_path);
});
}