about summary refs log tree commit diff
diff options
context:
space:
mode:
authorMichael Goulet <michael@errs.io>2024-05-03 23:34:23 -0400
committerGitHub <noreply@github.com>2024-05-03 23:34:23 -0400
commitb2ca66793962c52b3f07711c0484ec4fca52e217 (patch)
tree80c8ec708fdd3052d24d0f9b842b5e903cfe110a
parentf8ab0a74ab4694caa8bfa764fa7ace8bc84c8278 (diff)
parent5ea65c8ccb639b26ccfb6804d5b046b37a18530d (diff)
downloadrust-b2ca66793962c52b3f07711c0484ec4fca52e217.tar.gz
rust-b2ca66793962c52b3f07711c0484ec4fca52e217.zip
Rollup merge of #124658 - GuillaumeGomez:migrate-to-run-make, r=jieyouxu
Migrate `run-make/doctests-keep-binaries` to new rmake.rs format

r? ```@jieyouxu```
-rw-r--r--src/tools/run-make-support/src/lib.rs6
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt1
-rw-r--r--tests/run-make/doctests-keep-binaries/Makefile33
-rw-r--r--tests/run-make/doctests-keep-binaries/rmake.rs68
4 files changed, 74 insertions, 34 deletions
diff --git a/src/tools/run-make-support/src/lib.rs b/src/tools/run-make-support/src/lib.rs
index 239f90b23c9..d040b05f20e 100644
--- a/src/tools/run-make-support/src/lib.rs
+++ b/src/tools/run-make-support/src/lib.rs
@@ -261,6 +261,12 @@ macro_rules! impl_common_helpers {
                 }
                 output
             }
+
+            /// Set the path where the command will be run.
+            pub fn current_dir<P: AsRef<Path>>(&mut self, path: P) -> &mut Self {
+                self.cmd.current_dir(path);
+                self
+            }
         }
     };
 }
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index 4b79b910ec3..a56ea8df6cc 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -44,7 +44,6 @@ run-make/dep-graph/Makefile
 run-make/dep-info-doesnt-run-much/Makefile
 run-make/dep-info-spaces/Makefile
 run-make/dep-info/Makefile
-run-make/doctests-keep-binaries/Makefile
 run-make/doctests-runtool/Makefile
 run-make/dump-ice-to-disk/Makefile
 run-make/dump-mono-stats/Makefile
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);
+    });
+}