about summary refs log tree commit diff
diff options
context:
space:
mode:
authorbors <bors@rust-lang.org>2024-06-20 16:09:14 +0000
committerbors <bors@rust-lang.org>2024-06-20 16:09:14 +0000
commitcb8a7ea0ed866295e0f65725cea6662bea51971a (patch)
treec1d4e3aef79f1514ececf86001b5400c2a1318b2
parent1ca578e68eb715e772fc0c1b9e6ca7c5b122765a (diff)
parentb30ef41833bef87fe6cca7ec3717380c300150ea (diff)
downloadrust-cb8a7ea0ed866295e0f65725cea6662bea51971a.tar.gz
rust-cb8a7ea0ed866295e0f65725cea6662bea51971a.zip
Auto merge of #124807 - GuillaumeGomez:migrate-rustdoc-io-error, r=jieyouxu
Migrate `run-make/rustdoc-io-error` to `rmake.rs`

Part of https://github.com/rust-lang/rust/issues/121876.

r? `@jieyouxu`

try-job: armhf-gnu
-rw-r--r--src/tools/tidy/src/allowed_run_make_makefiles.txt1
-rw-r--r--tests/run-make/rustdoc-io-error/Makefile20
-rw-r--r--tests/run-make/rustdoc-io-error/rmake.rs31
3 files changed, 31 insertions, 21 deletions
diff --git a/src/tools/tidy/src/allowed_run_make_makefiles.txt b/src/tools/tidy/src/allowed_run_make_makefiles.txt
index c4c1ad03341..4e64181c6f5 100644
--- a/src/tools/tidy/src/allowed_run_make_makefiles.txt
+++ b/src/tools/tidy/src/allowed_run_make_makefiles.txt
@@ -177,7 +177,6 @@ run-make/rlib-format-packed-bundled-libs-3/Makefile
 run-make/rlib-format-packed-bundled-libs/Makefile
 run-make/rmeta-preferred/Makefile
 run-make/rustc-macro-dep-files/Makefile
-run-make/rustdoc-io-error/Makefile
 run-make/sanitizer-cdylib-link/Makefile
 run-make/sanitizer-dylib-link/Makefile
 run-make/sanitizer-staticlib-link/Makefile
diff --git a/tests/run-make/rustdoc-io-error/Makefile b/tests/run-make/rustdoc-io-error/Makefile
deleted file mode 100644
index 27f5ecf94ab..00000000000
--- a/tests/run-make/rustdoc-io-error/Makefile
+++ /dev/null
@@ -1,20 +0,0 @@
-include ../tools.mk
-
-# This test verifies that rustdoc doesn't ICE when it encounters an IO error
-# while generating files. Ideally this would be a rustdoc-ui test, so we could
-# verify the error message as well.
-
-# ignore-windows
-# The test uses `chmod`.
-
-OUTPUT_DIR := "$(TMPDIR)/rustdoc-io-error"
-
-# This test operates by creating a temporary directory and modifying its
-# permissions so that it is not writable. We have to take special care to set
-# the permissions back to normal so that it's able to be deleted later.
-all:
-	mkdir -p $(OUTPUT_DIR)
-	chmod u-w $(OUTPUT_DIR)
-	-$(shell $(RUSTDOC) -o $(OUTPUT_DIR) foo.rs)
-	chmod u+w $(OUTPUT_DIR)
-	exit $($(.SHELLSTATUS) -eq 1)
diff --git a/tests/run-make/rustdoc-io-error/rmake.rs b/tests/run-make/rustdoc-io-error/rmake.rs
new file mode 100644
index 00000000000..d60e4438e6f
--- /dev/null
+++ b/tests/run-make/rustdoc-io-error/rmake.rs
@@ -0,0 +1,31 @@
+// This test verifies that rustdoc doesn't ICE when it encounters an IO error
+// while generating files. Ideally this would be a rustdoc-ui test, so we could
+// verify the error message as well.
+//
+// It operates by creating a temporary directory and modifying its
+// permissions so that it is not writable. We have to take special care to set
+// the permissions back to normal so that it's able to be deleted later.
+
+//@ ignore-windows - the `set_readonly` functions doesn't work on folders.
+//@ ignore-arm - weird file perms on armhf-gnu
+
+use run_make_support::{path, rustdoc};
+use std::fs;
+
+fn main() {
+    let out_dir = path("rustdoc-io-error");
+    let output = fs::create_dir(&out_dir).unwrap();
+    let mut permissions = fs::metadata(&out_dir).unwrap().permissions();
+    let original_permissions = permissions.clone();
+
+    permissions.set_readonly(true);
+    fs::set_permissions(&out_dir, permissions).unwrap();
+
+    let output = rustdoc().input("foo.rs").output(&out_dir).env("RUST_BACKTRACE", "1").run_fail();
+
+    fs::set_permissions(&out_dir, original_permissions).unwrap();
+
+    output
+        .assert_exit_code(1)
+        .assert_stderr_contains("error: couldn't generate documentation: Permission denied");
+}