Stabilize rustdoc --test-run-directory

This commit is contained in:
Arpad Borsos 2022-10-28 11:43:30 +02:00 committed by Arpad Borsos
parent cf32b9de1e
commit 2e924bbef3
No known key found for this signature in database
GPG Key ID: 570F20163159CB55
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 This flag will run your code examples as tests. For more, see [the chapter
on documentation tests](write-documentation/documentation-tests.md). 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 ## `--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`. 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 ## `--target`: generate documentation for the specified target triple
Using this flag looks like this: 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 This will include your README as documentation on the hidden struct `ReadmeDoctests`, which will
then be tested alongside the rest of your doctests. 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| { stable("test-args", |o| {
o.optmulti("", "test-args", "arguments to pass to the test runner", "ARGS") o.optmulti("", "test-args", "arguments to pass to the test runner", "ARGS")
}), }),
unstable("test-run-directory", |o| { stable("test-run-directory", |o| {
o.optopt( o.optopt(
"", "",
"test-run-directory", "test-run-directory",

View File

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