Rollup merge of #103682 - Swatinem:stable-run-directory, r=GuillaumeGomez

Stabilize rustdoc `--test-run-directory`

This should resolve https://github.com/rust-lang/rust/issues/84674
This commit is contained in:
Yuki Okushi 2023-04-14 23:00:33 +09:00 committed by GitHub
commit 9aa24fd8fb
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
4 changed files with 29 additions and 4 deletions

View File

@ -179,7 +179,7 @@ $ rustdoc src/lib.rs --test
This flag will run your code examples as tests. For more, see [the chapter
on documentation tests](write-documentation/documentation-tests.md).
See also `--test-args`.
See also `--test-args` and `--test-run-directory`.
## `--test-args`: pass options to test runner
@ -194,6 +194,19 @@ For more, see [the chapter on documentation tests](write-documentation/documenta
See also `--test`.
## `--test-run-directory`: run code examples in a specific directory
Using this flag looks like this:
```bash
$ rustdoc src/lib.rs --test --test-run-directory=/path/to/working/directory
```
This flag will run your code examples in the specified working directory.
For more, see [the chapter on documentation tests](write-documentation/documentation-tests.md).
See also `--test`.
## `--target`: generate documentation for the specified target triple
Using this flag looks like this:

View File

@ -443,3 +443,15 @@ pub struct ReadmeDoctests;
This will include your README as documentation on the hidden struct `ReadmeDoctests`, which will
then be tested alongside the rest of your doctests.
## Controlling the compilation and run directories
By default, `rustdoc --test` will compile and run documentation test examples
from the same working directory.
The compilation directory is being used for compiler diagnostics, the `file!()` macro and
the output of `rustdoc` test runner itself, whereas the run directory has an influence on file-system
operations within documentation test examples, such as `std::fs::read_to_string`.
The `--test-run-directory` flag allows controlling the run directory separately from the compilation directory.
This is particularly useful in workspaces, where compiler invocations and thus diagnostics should be
relative to the workspace directory, but documentation test examples should run relative to the crate directory.

View File

@ -284,7 +284,7 @@ fn opts() -> Vec<RustcOptGroup> {
stable("test-args", |o| {
o.optmulti("", "test-args", "arguments to pass to the test runner", "ARGS")
}),
unstable("test-run-directory", |o| {
stable("test-run-directory", |o| {
o.optopt(
"",
"test-run-directory",

View File

@ -2,8 +2,8 @@
// revisions: correct incorrect
// check-pass
// [correct]compile-flags:--test --test-run-directory={{src-base}} -Zunstable-options
// [incorrect]compile-flags:--test --test-run-directory={{src-base}}/coverage -Zunstable-options
// [correct]compile-flags:--test --test-run-directory={{src-base}}
// [incorrect]compile-flags:--test --test-run-directory={{src-base}}/coverage
// normalize-stdout-test: "tests/rustdoc-ui" -> "$$DIR"
// normalize-stdout-test "finished in \d+\.\d+s" -> "finished in $$TIME"