diff options
| author | 许杰友 Jieyou Xu (Joe) <jieyouxu@outlook.com> | 2024-06-06 17:14:51 +0000 |
|---|---|---|
| committer | 许杰友 Jieyou Xu (Joe) <jieyouxu@outlook.com> | 2024-06-08 18:16:49 +0000 |
| commit | e7409d2130b3065169ab3933fb7fb515ef0303a6 (patch) | |
| tree | c499e2c363ab94b2bbdf8ee827ec5195e7406dfa | |
| parent | cfdb6175c2286acdd0c7d71a2ac9eefb777eec09 (diff) | |
| download | rust-e7409d2130b3065169ab3933fb7fb515ef0303a6.tar.gz rust-e7409d2130b3065169ab3933fb7fb515ef0303a6.zip | |
run-make: add some basic docs about the test suite's setup
| -rw-r--r-- | tests/run-make/README.md | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/tests/run-make/README.md b/tests/run-make/README.md new file mode 100644 index 00000000000..a6c1b4b7db7 --- /dev/null +++ b/tests/run-make/README.md @@ -0,0 +1,43 @@ +# The `run-make` test suite + +The `run-make` test suite contains tests which are the most flexible out of all +the [rust-lang/rust](https://github.com/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: + +1. The new `rmake.rs` version: this allows run-make tests to be written in Rust + (with `rmake.rs` as the main test file). +2. The legacy `Makefile` version: this is what run-make tests were written with + before support for `rmake.rs` was introduced. + +The implementation for collecting and building the `rmake.rs` recipes (or +`Makefile`s) are in +[`src/tools/compiletest/src/runtest.rs`](../../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: + +1. First, we build the [`run_make_support`] library in bootstrap as a tool lib. +2. 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 within `build/<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 to `rmake_out/`. The + support library is made available as an [*extern prelude*][extern_prelude]. +3. Finally, we run the recipe binary and set `rmake_out/` as the working + directory. + +[`run_make_support`]: ../../src/tools/run-make-support +[extern_prelude]: https://doc.rust-lang.org/reference/names/preludes.html#extern-prelude |
