about summary refs log tree commit diff
path: root/tests
diff options
context:
space:
mode:
authorGuillaume Gomez <guillaume.gomez@huawei.com>2024-05-03 15:13:08 +0200
committerGuillaume Gomez <guillaume.gomez@huawei.com>2024-05-03 21:27:52 +0200
commit5ea65c8ccb639b26ccfb6804d5b046b37a18530d (patch)
tree30bb03f22a80234bc73d42fa26ce7eb0a44e8c36 /tests
parentcc29dfa785495e91bfd0f8e12fb3be229b06ebe6 (diff)
downloadrust-5ea65c8ccb639b26ccfb6804d5b046b37a18530d.tar.gz
rust-5ea65c8ccb639b26ccfb6804d5b046b37a18530d.zip
Migrate `run-make/doctests-keep-binaries` to new `rmake.rs` format
Diffstat (limited to 'tests')
-rw-r--r--tests/run-make/doctests-keep-binaries/Makefile33
-rw-r--r--tests/run-make/doctests-keep-binaries/rmake.rs68
2 files changed, 68 insertions, 33 deletions
diff --git a/tests/run-make/doctests-keep-binaries/Makefile b/tests/run-make/doctests-keep-binaries/Makefile
deleted file mode 100644
index 2c647851ad0..00000000000
--- a/tests/run-make/doctests-keep-binaries/Makefile
+++ /dev/null
@@ -1,33 +0,0 @@
-# ignore-cross-compile
-include ../tools.mk
-
-# Check that valid binaries are persisted by running them, regardless of whether the --run or --no-run option is used.
-
-MY_SRC_DIR := ${CURDIR}
-
-all: run no_run test_run_directory
-
-run:
-	mkdir -p $(TMPDIR)/doctests
-	$(RUSTC) --crate-type rlib t.rs
-	$(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs
-	$(TMPDIR)/doctests/t_rs_2_0/rust_out
-	$(TMPDIR)/doctests/t_rs_8_0/rust_out
-	rm -rf $(TMPDIR)/doctests
-
-no_run:
-	mkdir -p $(TMPDIR)/doctests
-	$(RUSTC) --crate-type rlib t.rs
-	$(RUSTDOC) -Zunstable-options --test --persist-doctests $(TMPDIR)/doctests --extern t=$(TMPDIR)/libt.rlib t.rs --no-run
-	$(TMPDIR)/doctests/t_rs_2_0/rust_out
-	$(TMPDIR)/doctests/t_rs_8_0/rust_out
-	rm -rf $(TMPDIR)/doctests
-
-# Behavior with --test-run-directory with relative paths.
-test_run_directory:
-	mkdir -p $(TMPDIR)/doctests
-	mkdir -p $(TMPDIR)/rundir
-	$(RUSTC) --crate-type rlib t.rs
-	( cd $(TMPDIR); \
-		$(RUSTDOC) -Zunstable-options --test --persist-doctests doctests --test-run-directory rundir --extern t=libt.rlib $(MY_SRC_DIR)/t.rs )
-	rm -rf $(TMPDIR)/doctests $(TMPDIR)/rundir
diff --git a/tests/run-make/doctests-keep-binaries/rmake.rs b/tests/run-make/doctests-keep-binaries/rmake.rs
new file mode 100644
index 00000000000..ad0c2764df7
--- /dev/null
+++ b/tests/run-make/doctests-keep-binaries/rmake.rs
@@ -0,0 +1,68 @@
+// 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)
+            .arg("--extern")
+            .arg(format!("t={}", extern_path.display()))
+            .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)
+            .arg("--extern")
+            .arg(format!("t={}", extern_path.display()))
+            .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)
+            .arg("--extern")
+            .arg("t=libt.rlib")
+            .run();
+
+        remove_dir_all(run_dir_path);
+    });
+}