Ignore broken-pipe-no-ice on apple (specifically macOS) for now This test fails for me locally (initially reported by Zalathar) because apparently on macOS it doesn't say "internal compiler error" but it does report the std I/O panic, and it doesn't exit with a code of 101 but instead terminates with a wait signal of SIGPIPE. Ignore this test on apple for now, until we try to actually address the underlying issue. See https://github.com/rust-lang/rust/pull/131155 and https://github.com/rust-lang/rust/issues/131436 for more context.
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
There are two kinds of run-make tests:
- The new
rmake.rs
version: this allows run-make tests to be written in Rust (withrmake.rs
as the main test file). - The legacy
Makefile
version: this is what run-make tests were written with before support forrmake.rs
was introduced.
The implementation for collecting and building the rmake.rs
recipes (or
Makefile
s) are in
src/tools/compiletest/src/runtest.rs
,
in run_rmake_v2_test
and run_rmake_legacy_test
.
Rust-based run-make
tests: rmake.rs
The setup for the rmake.rs
version is 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.
Formatting
Note that files under tests/
are not formatted by ./x fmt
,
use rustfmt tests/path/to/file.rs
to format a specific file if desired.