
cleanup: use run_in_tmpdir in run-make/rustdoc-scrape-examples-paths We had an issue on our LLVM-head Rust builder where it got stuck with this test failing because it was reusing the tmpdir between runs and something broke the incremental compile. Everything seems to work fine with run_in_tmpdir in this test. tests/run-make/uefi-qemu also uses the same tmpdir across runs, but I don't have the right environment to test that so I didn't try fixing it. That is the only use of std::env::temp_dir left in run-make tests after this fix.
The run-make
test suite
The run-make
test suite contains tests which are the most flexible out of all the rust-lang/rust test suites. run-make
tests can basically contain arbitrary code, and are supported by the run_make_support
library.
Infrastructure
A run-make
test is a test recipe source file rmake.rs
accompanied by its parent directory (e.g. tests/run-make/foo/rmake.rs
is the foo
run-make
test).
The implementation for collecting and building the rmake.rs
recipes are in src/tools/compiletest/src/runtest.rs
, in run_rmake_test
.
The setup for the rmake.rs
can be summarized as a 3-stage process:
-
First, we build the
run_make_support
library in bootstrap as a tool lib. -
Then, we compile the
rmake.rs
"recipe" linking the support library and its dependencies in, and provide a bunch of env vars. We setup a directory structure withinbuild/<target>/test/run-make/
<test-name>/ rmake.exe # recipe binary rmake_out/ # sources from test sources copied over
and copy non-
rmake.rs
input support files over tormake_out/
. The support library is made available as an extern prelude. -
Finally, we run the recipe binary and set
rmake_out/
as the working directory.