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
4 changed files with 29 additions and 4 deletions
+14 -1
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:
@@ -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.
+1 -1
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",
+2 -2
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"