Description
In #8954 I changed the cwd that rustdoc
itself is invoked to be similar to how rustc
is invoked.
This is needed to get correct workspace-relative file paths, at least for -Z instrument-coverage
purposes (rust-lang/rust#79417) (maybe also debuginfo, but I haven’t checked).
The problem is that this also changes the cwd in which the doctests themselves are executed, which is sadly a regression from stable :-(
CC @jan-auer @alexcrichton @richkadel maybe @jyn514
I have a small example here with unit, integration and doctests, running it with:
stable:
rustc --crate-name child --edition=2018 child/src/lib.rs […]
rustdoc --edition=2018 --crate-type lib --test /Users/swatinem/Coding/cargo-test-cwd/child/src/lib.rs […]
nightly:
rustc --crate-name child --edition=2018 child/src/lib.rs […]
rustdoc --edition=2018 --crate-type lib --crate-name child --test child/src/lib.rs […]
Full output below, but it shows that unit and integration tests are run with the crate directory as CWD, not the workspace, but the compiler itself is invoked from the workspace.
I think we need a way to tell rustdoc to use a specific cwd when running the doctests vs when compiling them.
`cargo +stable test --workspace --verbose -- --nocapture > stable.txt 2>&1`
Compiling root v0.1.0 (/Users/swatinem/Coding/cargo-test-cwd)
Compiling child v0.1.0 (/Users/swatinem/Coding/cargo-test-cwd/child)
Running `rustc --crate-name root --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=b9fe8482c61999e8 -C extra-filename=-b9fe8482c61999e8 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name child --edition=2018 child/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=51b38cc0eeaf6f95 -C extra-filename=-51b38cc0eeaf6f95 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name root --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=8d2e496c07b655ba -C extra-filename=-8d2e496c07b655ba --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name child --edition=2018 child/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=2c1e3a1656f1d0d3 -C extra-filename=-2c1e3a1656f1d0d3 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name integration --edition=2018 tests/integration.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=d55edb18df8de4ee -C extra-filename=-d55edb18df8de4ee --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --extern root=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libroot-b9fe8482c61999e8.rlib -C target-cpu=native`
Running `rustc --crate-name integration --edition=2018 child/tests/integration.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=a20222878ab3a217 -C extra-filename=-a20222878ab3a217 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --extern child=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libchild-51b38cc0eeaf6f95.rlib -C target-cpu=native`
Finished test [unoptimized + debuginfo] target(s) in 1.19s
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/child-2c1e3a1656f1d0d3 --nocapture`
running 1 test
unit test child: /Users/swatinem/Coding/cargo-test-cwd/child
test unit_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/integration-a20222878ab3a217 --nocapture`
running 1 test
integration test child: /Users/swatinem/Coding/cargo-test-cwd/child
test integration_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/root-8d2e496c07b655ba --nocapture`
running 1 test
unit test root: /Users/swatinem/Coding/cargo-test-cwd
test unit_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/integration-d55edb18df8de4ee --nocapture`
running 1 test
integration test root: /Users/swatinem/Coding/cargo-test-cwd
test integration_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Doc-tests child
Running `rustdoc --edition=2018 --crate-type lib --test /Users/swatinem/Coding/cargo-test-cwd/child/src/lib.rs --crate-name child -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --test-args --nocapture --extern child=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libchild-51b38cc0eeaf6f95.rlib -C embed-bitcode=no`
running 1 test
test src/lib.rs - (line 1) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
Doc-tests root
Running `rustdoc --edition=2018 --crate-type lib --test /Users/swatinem/Coding/cargo-test-cwd/src/lib.rs --crate-name root -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --test-args --nocapture --extern root=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libroot-b9fe8482c61999e8.rlib -C embed-bitcode=no`
running 1 test
test src/lib.rs - (line 1) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out
`cargo +nightly test --workspace --verbose -- --nocapture > nightly.txt 2>&1`
Compiling root v0.1.0 (/Users/swatinem/Coding/cargo-test-cwd)
Compiling child v0.1.0 (/Users/swatinem/Coding/cargo-test-cwd/child)
Running `rustc --crate-name root --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=763164469cdcead1 -C extra-filename=-763164469cdcead1 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name root --edition=2018 src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=9644a0ca393294d3 -C extra-filename=-9644a0ca393294d3 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name child --edition=2018 child/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --crate-type lib --emit=dep-info,metadata,link -C embed-bitcode=no -C debuginfo=2 -C metadata=3da7cb1692c9969f -C extra-filename=-3da7cb1692c9969f --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name child --edition=2018 child/src/lib.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=b1c958d1677c12d4 -C extra-filename=-b1c958d1677c12d4 --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C target-cpu=native`
Running `rustc --crate-name integration --edition=2018 tests/integration.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=3efdbdc44398e0ef -C extra-filename=-3efdbdc44398e0ef --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --extern root=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libroot-763164469cdcead1.rlib -C target-cpu=native`
Running `rustc --crate-name integration --edition=2018 child/tests/integration.rs --error-format=json --json=diagnostic-rendered-ansi --emit=dep-info,link -C embed-bitcode=no -C debuginfo=2 --test -C metadata=f9944916cab4691d -C extra-filename=-f9944916cab4691d --out-dir /Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -C incremental=/Users/swatinem/Coding/cargo-test-cwd/target/debug/incremental -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --extern child=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libchild-3da7cb1692c9969f.rlib -C target-cpu=native`
Finished test [unoptimized + debuginfo] target(s) in 1.12s
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/child-b1c958d1677c12d4 --nocapture`
running 1 test
unit test child: /Users/swatinem/Coding/cargo-test-cwd/child
test unit_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/integration-f9944916cab4691d --nocapture`
running 1 test
integration test child: /Users/swatinem/Coding/cargo-test-cwd/child
test integration_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/root-9644a0ca393294d3 --nocapture`
running 1 test
unit test root: /Users/swatinem/Coding/cargo-test-cwd
test unit_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Running `/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/integration-3efdbdc44398e0ef --nocapture`
running 1 test
integration test root: /Users/swatinem/Coding/cargo-test-cwd
test integration_cwd ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.00s
Doc-tests root
Running `rustdoc --edition=2018 --crate-type lib --crate-name root --test src/lib.rs -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --test-args --nocapture --extern root=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libroot-763164469cdcead1.rlib -C embed-bitcode=no`
running 1 test
test src/lib.rs - (line 1) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.25s
Doc-tests child
Running `rustdoc --edition=2018 --crate-type lib --crate-name child --test child/src/lib.rs -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps -L dependency=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps --test-args --nocapture --extern child=/Users/swatinem/Coding/cargo-test-cwd/target/debug/deps/libchild-3da7cb1692c9969f.rlib -C embed-bitcode=no`
running 1 test
test child/src/lib.rs - (line 1) ... ok
test result: ok. 1 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.24s