Skip to content

Commit 0a5dc82

Browse files
authored
Rollup merge of #124807 - GuillaumeGomez:migrate-rustdoc-io-error, r=jieyouxu
Migrate `run-make/rustdoc-io-error` to `rmake.rs` Part of #121876. r? `@jieyouxu`
2 parents 26cf66c + ab1a67e commit 0a5dc82

File tree

3 files changed

+31
-21
lines changed

3 files changed

+31
-21
lines changed

src/tools/tidy/src/allowed_run_make_makefiles.txt

-1
Original file line numberDiff line numberDiff line change
@@ -244,7 +244,6 @@ run-make/rlib-format-packed-bundled-libs-3/Makefile
244244
run-make/rlib-format-packed-bundled-libs/Makefile
245245
run-make/rmeta-preferred/Makefile
246246
run-make/rustc-macro-dep-files/Makefile
247-
run-make/rustdoc-io-error/Makefile
248247
run-make/rustdoc-output-path/Makefile
249248
run-make/rustdoc-scrape-examples-invalid-expr/Makefile
250249
run-make/rustdoc-scrape-examples-macros/Makefile

tests/run-make/rustdoc-io-error/Makefile

-20
This file was deleted.
+31
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,31 @@
1+
// This test verifies that rustdoc doesn't ICE when it encounters an IO error
2+
// while generating files. Ideally this would be a rustdoc-ui test, so we could
3+
// verify the error message as well.
4+
//
5+
// It operates by creating a temporary directory and modifying its
6+
// permissions so that it is not writable. We have to take special care to set
7+
// the permissions back to normal so that it's able to be deleted later.
8+
9+
use run_make_support::{rustdoc, tmp_dir};
10+
use std::fs;
11+
12+
fn main() {
13+
let out_dir = tmp_dir().join("rustdoc-io-error");
14+
let output = fs::create_dir(&out_dir).unwrap();
15+
let mut permissions = fs::metadata(&out_dir).unwrap().permissions();
16+
permissions.set_readonly(true);
17+
fs::set_permissions(&out_dir, permissions.clone()).unwrap();
18+
19+
let output = rustdoc().input("foo.rs").output(&out_dir).command_output();
20+
21+
// Changing back permissions.
22+
permissions.set_readonly(false);
23+
fs::set_permissions(&out_dir, permissions).unwrap();
24+
25+
// Checks that rustdoc failed with the error code 1.
26+
assert_eq!(output.status.code().unwrap(), 1);
27+
assert!(!output.status.success());
28+
let stderr = String::from_utf8(output.stderr).unwrap();
29+
30+
assert!(stderr.contains("error: couldn't generate documentation: Permission denied"));
31+
}

0 commit comments

Comments
 (0)