File tree Expand file tree Collapse file tree 3 files changed +32
-21
lines changed
tests/run-make/rustdoc-io-error Expand file tree Collapse file tree 3 files changed +32
-21
lines changed Original file line number Diff line number Diff line change @@ -241,7 +241,6 @@ run-make/rlib-format-packed-bundled-libs-3/Makefile
241241run-make/rlib-format-packed-bundled-libs/Makefile
242242run-make/rmeta-preferred/Makefile
243243run-make/rustc-macro-dep-files/Makefile
244- run-make/rustdoc-io-error/Makefile
245244run-make/rustdoc-scrape-examples-invalid-expr/Makefile
246245run-make/rustdoc-scrape-examples-macros/Makefile
247246run-make/rustdoc-scrape-examples-multiple/Makefile
Load Diff This file was deleted.
Original file line number Diff line number Diff line change 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+ let original_permissions = permissions. clone ( ) ;
17+ permissions. set_readonly ( true ) ;
18+ fs:: set_permissions ( & out_dir, permissions. clone ( ) ) . unwrap ( ) ;
19+
20+ let output = rustdoc ( ) . input ( "foo.rs" ) . output ( & out_dir) . command_output ( ) ;
21+
22+ // Changing back permissions.
23+ fs:: set_permissions ( & out_dir, original_permissions) . unwrap ( ) ;
24+
25+ // Checks that rustdoc failed with the error code 1.
26+ #[ cfg( unix) ]
27+ assert_eq ! ( output. status. code( ) . unwrap( ) , 1 ) ;
28+ assert ! ( !output. status. success( ) ) ;
29+ let stderr = String :: from_utf8 ( output. stderr ) . unwrap ( ) ;
30+
31+ assert ! ( stderr. contains( "error: couldn't generate documentation: Permission denied" ) ) ;
32+ }
You can’t perform that action at this time.
0 commit comments