Files
rust/tests/run-make
bors c2d2bb38c9 Auto merge of #126834 - bjorn3:interface_refactor, r=michaelwoerister
Various refactorings to rustc_interface

This should make it easier to move the driver interface away from queries in the future. Many custom drivers call queries like `queries.global_ctxt()` before they are supposed to be called, breaking some things like certain `--print` and `-Zunpretty` options, `-Zparse-only` and emitting the dep info at the wrong point in time. They are also not actually necessary at all. Passing around the query output manually would avoid recomputation too and would be just as easy. Removing driver queries would also reduce the amount of global mutable state of the compiler. I'm not removing driver queries in this PR to avoid breaking the aforementioned custom drivers.
2024-06-25 09:35:53 +00:00
..
2024-05-08 21:44:57 -04:00
2024-06-07 11:12:04 +02:00
2024-05-08 21:44:57 -04:00
2024-05-08 21:44:57 -04:00
2024-05-09 13:29:46 -04:00
2024-05-08 21:44:57 -04:00
2024-06-17 11:15:59 +02:00
2024-05-31 21:30:08 +10:00
2023-03-30 07:58:50 -05:00
2023-09-10 15:50:48 +00:00
2023-11-24 19:15:52 +01:00
2023-03-30 07:58:50 -05:00
2023-03-30 07:58:50 -05:00
2023-03-30 07:58:50 -05:00
2024-05-20 11:13:10 -04:00
2024-05-28 11:41:53 -04:00
2023-05-11 14:47:56 +00:00
2023-11-24 19:15:52 +01:00
2023-03-30 07:58:50 -05:00
2023-11-24 19:15:52 +01:00
2024-06-17 00:23:28 +02:00
2023-01-11 09:32:08 +00:00

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:

  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 Makefiles) 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:

  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.

  3. Finally, we run the recipe binary and set rmake_out/ as the working directory.