Commit graph

1372 commits

Author SHA1 Message Date
Oneirical
e175b83fd5 rewrite incr-foreign-head-span to rmake 2024-07-25 11:08:07 -04:00
Matthias Krüger
20e86c9f2d
Rollup merge of #128100 - GuillaumeGomez:run-make-path, r=Kobzol,jieyouxu
Allow to pass a full path for `run-make` tests

It's common (at least for me) to pass a full path to a `run-make` test (including the `rmake.rs` file) and to see that it isn't found, which is a bit frustrating.

With these changes, we can now optionally pass the `rmake.rs` (or even `Makefile`) at the end of the path.

cc ```@jieyouxu```
r? ```@Kobzol```
2024-07-24 05:05:35 +02:00
Guillaume Gomez
0728c155a3 Allow to pass a full path for run-make tests 2024-07-23 20:14:33 +02:00
Matthias Krüger
9d4daf8869
Rollup merge of #125886 - GuillaumeGomez:migrate-run-make-issue-15460, r=jieyouxu
Migrate run make issue 15460

Part of https://github.com/rust-lang/rust/issues/121876.

r? `@jieyouxu`

try-job: x86_64-msvc
try-job: aarch64-apple
try-job: x86_64-gnu-llvm-18
2024-07-23 19:42:34 +02:00
Matthias Krüger
3ab435b705
Rollup merge of #127962 - jieyouxu:cleanup-dll-compiletest, r=fmease
Cleanup compiletest dylib name calculation

Use `std::env::consts::{DLL_PREFIX, DLL_EXTENSION}` for dylib name calculation which is more accurate for the various different platforms, and is more likely to be looked at by target maintainers.

cc ``@bzEq`` (as this impacts how compiletest handles AIX dll extensions)
2024-07-23 13:06:55 +02:00
Guillaume Gomez
7e0c203f2d Add new MSVC_LIB_PATH runtest environment variable to know location of the msvc_lib binary 2024-07-22 23:22:53 +02:00
Matthias Krüger
ae28d5c9e7
Rollup merge of #127958 - jieyouxu:compiletest-rmake-cleanup, r=Kobzol
Cleanup rmake.rs setup in compiletest

While debugging rmake.rs tests I realized that the rmake.rs setup itself in compiletest is very messy and confused. Now that I know some of the bootstrap steps and the rmake.rs tests themselves better, I realized there are cleanups that are possible:

- Rework how `source_root` and `build_root` are calculated. They should now be less fragile then before.
- Shuffle around path calculations to make them more logically grouped and closer to eventual use site(s).
- Cleanup executable extension calculation with `std::env::consts::EXE_EXTENSION`.
- Cleanup various dylib search path handling: renamed variables to better reflect their purpose, minimized mutability scope of said variables.
- Prune useless env vars passed to both `rustc` and recipe binary commands.
- Vastly improve the documentation for the setup of rmake.rs tests, including assumed bootstrap-provided build layouts, rmake.rs test layout, dylib search paths, intended purpose of passed env vars and the `COMPILETEST_FORCE_STAGE0=1 ./x test run-make --stage 0` stage0 sysroot special handling.

This PR is best reviewed commit-by-commit.

Fixes https://github.com/rust-lang/rust/issues/127920.

r? bootstrap (or Kobzol, or Mark, or T-compiler)

try-job: aarch64-apple
try-job: armhf-gnu
try-job: dist-x86_64-linux
try-job: test-various
try-job: x86_64-mingw
try-job: x86_64-msvc
try-job: x86_64-gnu-llvm-18
2024-07-20 19:28:59 +02:00
许杰友 Jieyou Xu (Joe)
a8463bea91 compiletest/rmake: simplify path calculations 2024-07-20 09:21:57 +00:00
许杰友 Jieyou Xu (Joe)
2c867d0b5f compiletest/rmake: avoid double test directory for rmake.rs tests
This is important for other tests that have various things like modes,
revisions and the like. These features are not supported in run-make
tests, so we don't need the double layering.
2024-07-20 09:20:47 +00:00
许杰友 Jieyou Xu (Joe)
c863525374 compiletest/rmake: improve comments 2024-07-20 09:20:47 +00:00
许杰友 Jieyou Xu (Joe)
3e77f7c9a5 compiletest/rmake: prune unused RUST_BUILD_STAGE and explain env vars passed to recipes 2024-07-20 09:20:32 +00:00
León Orell Valerian Liehr
25be41cfb8
Update jsondocck directives to follow ui_test-style 2024-07-19 16:54:16 +02:00
许杰友 Jieyou Xu (Joe)
993d83af71 compiletest/rmake: cleanup stage_std_path and recipe_dylib_search_paths handling 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
aa22102f2f compiletest/rmake: better explain why stage0 sysroot is needed if forced stage0 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
2383e9dd4f compiletest/rmake: prune useless env vars and explain passed rustc options and env vars 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
f5488f0c4b compiletest/rmake: rename cmd to rustc 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
cf5edfe3f9 compiletest/rmake: cleanup rmake exe extension calculation 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
9f2a660f86 compiletest/rmake: cleanup library search paths 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
49ca9ff0ac compiletest/rmake: cleanup dylib search paths related calculations 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
01ed951f8b compiletest/rmake: improve clarity of support_lib_{path,deps,deps_deps} calculations 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
2eb8810d32 compiletest/rmake: move stage_std_path and recipe_bin closer to use site 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
6ca31099e3 compiletest/rmake: improve stage explanation 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
23f32f44dd compiletest/rmake: make {source,build}_root path calculation more robust for rmake.rs setup 2024-07-19 14:04:58 +00:00
许杰友 Jieyou Xu (Joe)
1b4972bc28 compiletest/rmake: adjust docs for rmake.rs setup and add FIXMEs 2024-07-19 13:53:56 +00:00
许杰友 Jieyou Xu (Joe)
3855c54413 compiletest: cleanup dylib name calculation 2024-07-19 13:45:20 +00:00
Kai Luo
ec805d17eb Revert format change 2024-07-19 13:02:51 +08:00
Kai Luo
c72df9ddf9 AIX uses .a as dylib's suffix 2024-07-19 12:40:09 +08:00
Zalathar
08a2992d6b compiletest: Better error message for bad normalize-* headers 2024-07-11 21:51:20 +10:00
Zalathar
b6773591ee Require a colon in //@ normalize-*: headers 2024-07-11 12:23:45 +10:00
Oneirical
4c9eeda36d rewrite used-cdylib-macos to rmake 2024-06-28 16:28:57 -04:00
Michael Goulet
46e43984d1
Rollup merge of #126413 - matthiaskrgr:crshmsg, r=oli-obk
compiletest: make the crash test error message abit more informative

r?  ```@oli-obk```
2024-06-24 15:51:02 -04:00
Matthias Krüger
8ffb5f936a compiletest: make the crash test error message abit more informative 2024-06-24 15:18:50 +02:00
Guillaume Gomez
51fedf65ff Remove commands duplication between compiletest and tests/rustdoc 2024-06-24 11:10:17 +02:00
Guillaume Gomez
d3ec92e16e Move tests/rustdoc testsuite to //@ syntax 2024-06-24 11:08:41 +02:00
Matthias Krüger
e4f102d174
Rollup merge of #126862 - ChrisDenton:needs-symlink, r=jieyouxu
Add needs-symlink directive to compiletest

This is an alternative to #126846 that allows running symlink tests on Windows in CI but will ignore them locally if symlinks aren't available. A future improvement would be to check that the `needs-symlink` directive is used in rmake files that call `create_symlink` but this is just a quick PR to unblock Windows users who want to run tests locally without enabling symlinks.
2024-06-23 22:39:02 +02:00
Chris Denton
b8a0030358
Add need-symlink directive to compiletest 2024-06-23 13:42:52 +00:00
Jubilee Young
c72a6ad8f2 test: ignore force-frame-pointers test on some targets
all of these currently force stronger frame pointers, and
currently the CLI does not override the target
2024-06-23 00:40:43 -07:00
bors
3fc81daffd Auto merge of #122613 - Zalathar:profiler, r=nnethercote
Don't build a broken/untested profiler runtime on mingw targets

Context: https://rust-lang.zulipchat.com/#narrow/stream/131828-t-compiler/topic/Why.20build.20a.20broken.2Funtested.20profiler.20runtime.20on.20mingw.3F

#75872 added `--enable-profiler` to the `x86_64-mingw` job (to cause some additional tests to run), but had to also add `//@ ignore-windows-gnu` to all of the tests that rely on the profiler runtime actually *working*, because it's broken on that target.

We can achieve a similar outcome by going through all the `//@ needs-profiler-support` tests that don't actually need to produce/run a binary, and making them use `-Zno-profiler-runtime` instead, so that they can run even in configurations that don't have the profiler runtime available. Then we can remove `--enable-profiler` from `x86_64-mingw`, and still get the same amount of testing.

This PR also removes `--enable-profiler` from the mingw dist builds, since it is broken/untested on that target. Those builds have had that flag for a very long time.
2024-06-15 00:04:01 +00:00
Zalathar
2646db92fe Remove //@ ignore-windows-gnu from tests that need the profiler
The profiler runtime is no longer built in mingw test jobs, so these tests
should naturally be skipped by `//@ needs-profiler-support`.
2024-06-14 13:31:46 +10:00
onur-ozkan
cc6541385f compiletest: apply considerable clippy suggestions
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-06-13 18:41:33 +03:00
León Orell Valerian Liehr
2b5c672a0b
Rollup merge of #126370 - Zalathar:normalize, r=oli-obk
compiletest: Stricter parsing of `//@ normalize-*` headers

I noticed some problems with the existing parser for these headers:

- It is extremely lax, and basically ignores everything other than the text between two pairs of double-quote characters.
  - Unlike other name-value headers, it doesn't even check for a colon after the header name, so the test suite contains a mixture of with-colon and without-colon normalization rules.
- If parsing fails, the header is silently ignored.

The latter is especially bad for platform-specific normalization rules, because the lack of normalization probably won't be noticed until the test mysteriously fails in one of the full CI jobs.
2024-06-13 13:05:26 +02:00
bors
921645c737 Auto merge of #126197 - jieyouxu:rmake-must-use, r=Kobzol
run-make: annotate library with `#[must_use]` and enforce `unused_must_use` in rmake.rs

This PR adds `#[must_use]` annotations to functions of the `run_make_support` library where it makes sense, and adjusts compiletest to compile rmake.rs with `-Dunused_must_use`.

The rationale is that it's highly likely that unused `#[must_use]` values in rmake.rs test files are bugs. For example, unused fs/io results are often load-bearing to the correctness of the test and often unchecked fs/io results allow the test to silently pass where it would've failed if the result was checked.

This PR is best reviewed commit-by-commit.

try-job: test-various
try-job: x86_64-msvc
2024-06-13 07:26:21 +00:00
Zalathar
e09eedbe93 compiletest: Stricter parsing of //@ normalize-* headers 2024-06-13 11:55:18 +10:00
Zalathar
c9d880bf01 compiletest: Move static_regex! into compiletest::util 2024-06-13 11:21:27 +10:00
Jubilee
3997b62968
Rollup merge of #126256 - ferrocene:lw-target-subst, r=albertlarsan68
Add {{target}} substitution to compiletest

In ferrocene we have ui tests testing the cli interface of the compiler, one of which tests the `--target` flag. To be able to run this on all targets we require a way to specify a valid target in the `compile-flags` directive that is target independent, as otherwise we can only run the test against the one target we choose to supply in the flags. See 383cbc80f4/tests/ui/ferrocene/compiler-arguments/target/target.rs

We figured the project might be able to make use of this substitution as well in the future.

try-job: dist-x86_64-msvc
2024-06-12 03:57:22 -07:00
许杰友 Jieyou Xu (Joe)
cc37e3c182 compiletest: compile rmake.rs with -Dunused_must_use 2024-06-11 21:01:56 +00:00
Zalathar
3923b686c7 Rename needs-matching-clang to needs-force-clang-based-tests
This header is much more restrictive than its old name would suggest. As a
result, most of the tests that use it don't actually run in any CI jobs.
2024-06-11 16:45:51 +10:00
Lukas Wirth
1462f3d4eb Add {{target}} substitution to compiletest 2024-06-11 08:42:20 +02:00
bors
cfdb6175c2 Auto merge of #126097 - Kobzol:runmake-change-cwd, r=jieyouxu
Change how runmake v2 tests are executed

This PR makes execution of v2 runmake tests more sane, by executing each test in a temporary directory by default, rather than running it inside `tests/run-make`. This will have.. a lot of conflicts.

Fixes: https://github.com/rust-lang/rust/issues/126080
Closes https://github.com/rust-lang/rust/issues/125726, because it removes `tmp_dir`, lol.

r? `@jieyouxu`

try-job: x86_64-msvc
2024-06-08 15:25:05 +00:00
bors
d8fde50745 Auto merge of #126111 - Zalathar:fulldeps-hotplug, r=jieyouxu
Port `tests/run-make-fulldeps/hotplug_codegen_backend` to ui-fulldeps

This is the last remaining run-make-fulldeps test, which means I actually had to leave behind a dummy README file to prevent compiletest from complaining about a missing directory.

(Removing the run-make-fulldeps suite entirely is non-trivial, so I intend to do so in a separate PR after this one.)

---

I wasn't sure about adding a new kind of aux build just for this one test, so I also tried to just port this test from Makefile to [rmake](https://github.com/rust-lang/rust/issues/121876) instead.

But I found that I couldn't get rmake to fully work for a run-make-fulldeps test, which convinced me that getting rid of run-make-fulldeps is worthwhile.

r? `@jieyouxu`
2024-06-08 07:23:17 +00:00