Commit Graph

317 Commits

Author SHA1 Message Date
Chris Denton 6a7bff3d89
Rollup merge of #139618 - petrochenkov:virsugg, r=jieyouxu
compiletest: Make `SUGGESTION` annotations viral

If one of them is expected in a test file, then others should be annotated as well, in the same way as with `HELP`s and `NOTE`s.
This doesn't require much of an additional annotation burden, but simplifies the rules.

r? ```@jieyouxu```
2025-04-13 11:48:17 +00:00
bors 9f227ffb56 Auto merge of #139578 - ferrocene:pa-compiletest-edition, r=jieyouxu
Fix breakage when running compiletest with `--test-args=--edition=2015`

Compiletest has an `--edition` flag to change the default edition tests are run with. Unfortunately no test suite successfully executes when that flag is passed. If the edition is set to something greater than 2015 the breakage is expected, since the test suite currently supports only edition 2015 (Ferrous Systems will open an MCP about fixing that soonish). Surprisingly, the test suite is also broken if `--edition=2015` is passed to compiletest. This PR focuses on fixing the latter.

This PR fixes the two categories of failures happening when `--edition=2015` is passed:

* Some edition-specific tests set their edition through `//@ compile-flags` instead of `//@ edition`. Compiletest doesn't parse the compile flags, so it would see no `//@ edition` and add another `--edition` flag, leading to a rustc error.
* Compiletest would add the edition after `//@ compile-flags`, while some tests depend on flags passed to `//@ compile-flags` being the last flags in the rustc invocation.

Note that for the first category, I opted to manually go and replace all `//@ compile-flags` setting an edition with an explicit `//@ edition`. We could've changed compiletest to instead check whether an edition was set in `//@ compile-flags`, but I thought it was better to enforce a consistent way to set the edition in tests.

I also added the edition to the stamp, so that changing `--edition` results in tests being re-executed.

r? `@jieyouxu`
2025-04-11 10:53:45 +00:00
Vadim Petrochenkov 0423c7b2df dev-guide: Document `dont-require-annotations`
and its use cases in more detail
2025-04-10 23:48:57 +03:00
Pietro Albini d7631d20aa
mention --edition restrictions in rustc-dev-guide 2025-04-10 12:34:57 +02:00
Jieyou Xu 5fb6b8e48f
rustc-dev-guide: document `needs-crate-type` 2025-04-10 12:52:08 +08:00
Tshepang Mbambo e76ab78d1d
improve flow 2025-04-07 06:42:37 +02:00
The rustc-dev-guide Cronjob Bot 216eb512fb Merge from rustc 2025-04-07 04:12:22 +00:00
bors 20d0bf9f27 Auto merge of #139301 - matthiaskrgr:rollup-sa6ali8, r=matthiaskrgr
Rollup of 7 pull requests

Successful merges:

 - #139080 (Experimental feature gate for `super let`)
 - #139145 (slice: Remove some uses of unsafe in first/last chunk methods)
 - #139149 (unstable book: document import_trait_associated_functions)
 - #139273 (Apply requested API changes to `cell_update`)
 - #139282 (rustdoc: make settings checkboxes always square)
 - #139283 (Rustc dev guide subtree update)
 - #139294 (Fix the `f16`/`f128` feature gates on integer literals)

r? `@ghost`
`@rustbot` modify labels: rollup
2025-04-03 15:31:20 +00:00
Vadim Petrochenkov 8f4357e7a2 compiletest: Require `//~` annotations even if `error-pattern` is specified 2025-04-03 11:08:55 +03:00
Tshepang Mbambo a90cb7416c
test directive can appear anywhere in the file 2025-04-03 02:04:49 +02:00
Jieyou Xu 64527fa438
Merge from rustc 2025-04-02 23:26:35 +08:00
许杰友 Jieyou Xu (Joe) fdca2d3605
Merge pull request #2288 from rust-lang/tshepang-known-bug-takes-args
mention that known-bug test directive takes arguments
2025-03-30 02:31:33 +08:00
Tshepang Mbambo 6c1077e05d mention that know-bug test directive takes arguments 2025-03-29 20:02:01 +02:00
Vadim Petrochenkov 628eb7064d compiletest: Support matching diagnostics on lines below 2025-03-29 13:30:20 +03:00
Santiago Pastorino a480687c6c
Fix code generation link 2025-03-28 12:38:32 -03:00
Vadim Petrochenkov 2e81955d9c compiletest: Support matching on diagnostics without a span 2025-03-25 17:33:09 +03:00
Jieyou Xu b7fc809e0b
Stub out codegen backend test pages 2025-03-21 16:48:58 +08:00
Jieyou Xu 8c3302aa5f
Move Fuchsia and RfL under `ecosystem-test-jobs/` folder
Includes redirects to avoid breaking existing links.
2025-03-21 16:48:57 +08:00
Matthias Krüger 7d4c53d816
Rollup merge of #138655 - Kobzol:rdg-sync, r=jieyouxu
rustc-dev-guide sync

r? `@jieyouxu`
2025-03-19 08:17:15 +01:00
Jakub Beránek 1bcd02da96
Add Fuchsia ping group page 2025-03-18 16:22:57 +01:00
Jakub Beránek ba77a8030b
Reorder RfL tests page to move the "what if it breaks" section to the top 2025-03-18 16:17:59 +01:00
Jakub Beránek db56758b57
Add Fuchsia ping group notice 2025-03-18 16:16:28 +01:00
Jieyou Xu af667b8696
Merge from rustc 2025-03-18 12:08:38 +08:00
Matthias Krüger 7ceeee7ca4
Rollup merge of #138533 - Kobzol:try-job-auto-tests, r=marcoieni
Only use `DIST_TRY_BUILD` for try jobs that were not selected explicitly

Some CI jobs (x64 Linux, ARM64 Linux and x64 MSVC) use the `opt-dist` tool to build an optimized toolchain using PGO and BOLT. When performing a default try build for x64 Linux, in most cases we want to run perf. on that artifact. To reduce the latency of this common use-case, `opt-dist` skips building several components not needed for perf., and it also skips running post-optimization tests, when it detects that the job is executed as a try job (not a merge/auto job).

This is useful, but it also means that if you *want* to run the tests, you had to go to `jobs.yml` and manually comment this environment variable, create a WIP commit, do a try build, and then remove the WIP commit, which is annoying (in the similar way that modifying what gets run in try builds was annoying before we had the `try-job` annotations).

I thought that we could introduce some additional PR description marker like `try-job-run-tests`, but it's hard to discover that such things exist.

Instead, I think that there's a much simpler heuristic for determining whether `DIST_TRY_BUILD` should be used (that I implemented in this PR):
- If you do just ``@bors` try`, without any custom try jobs selected, `DIST_TRY_BUILD` will be activated, to finish the build as fast as possible.
- If you specify any custom try jobs, you are most likely doing experiments and you want to see if tests pass and everything builds as it should. The `DIST_TRY_BUILD` variable will thus *not* be set in this case.

In this way, if you want to run dist tests, you can just add the `try-job: dist-x86_64-linux` line to the PR description, and you don't need to create any WIP commits.

r? `@marcoieni`
2025-03-17 22:49:06 +01:00
bit-aloo e4ddc21c8a
replace config.toml to bootstrap.toml in src:doc:rustc-dev-guide 2025-03-17 12:56:44 +05:30
Jakub Beránek f6940a6e7c Add a note to rustc-dev-guide 2025-03-16 20:42:37 +01:00
Tshepang Mbambo b04865b8d2 add some copy-paste goodness 2025-03-15 11:35:41 +02:00
Tshepang Mbambo 7d157cb36e make 'mdbook test --chapter "Running tests"' pass 2025-03-15 11:35:15 +02:00
Tshepang Mbambo e068c546a3 those should not get shell highlighting 2025-03-15 11:32:16 +02:00
许杰友 Jieyou Xu (Joe) 9975f62f2b
Merge pull request #2283 from jieyouxu/sync
Rustc pull
2025-03-14 16:08:03 +08:00
Josh Stone 46d4f952c7
Remove the doc for `no-system-llvm`
This compiletest directive was removed in rust-lang/rust#120265.
2025-03-13 12:15:29 -07:00
许杰友 Jieyou Xu (Joe) 3ca2a42b52 Merge from rustc 2025-03-13 15:20:11 +08:00
Jakub Beránek dd0359476d Handle backticks in try job patterns 2025-03-10 14:07:46 +01:00
Jakub Beránek 074e4787bd Modify try-job documentation 2025-03-10 14:07:45 +01:00
许杰友 Jieyou Xu (Joe) 6ae1d4d997
Merge pull request #2273 from rust-lang/tshepang-patch-1
use new terminology
2025-03-10 17:59:15 +08:00
Tshepang Mbambo 53f8a2f1d6
add missing punctuation 2025-03-10 11:15:32 +02:00
Tshepang Mbambo 12b836b37c
clean --bless text 2025-03-10 11:12:44 +02:00
Tshepang Mbambo 916cd09d33
add a pause, for readability 2025-03-10 10:38:30 +02:00
Tshepang Mbambo 20b3dc1ee0
already mentioned before showing code snippet 2025-03-10 10:35:40 +02:00
Tshepang Mbambo 1d3b59fa4a
use new terminology 2025-03-10 10:29:30 +02:00
许杰友 Jieyou Xu (Joe) c37760a674
Merge pull request #2271 from rust-lang/tshepang-patch-1
fix text
2025-03-09 08:04:28 +08:00
Tshepang Mbambo efa11d0d5c
ignore-stage0 and only-stage0 do not exist 2025-03-08 23:51:17 +02:00
Tshepang Mbambo 28b1ec7130
fix text
- There is more than just target and stage
- There is only 3 stages, so don't mention them specially
2025-03-08 22:58:09 +02:00
许杰友 Jieyou Xu (Joe) 93eca2b494 Document that `rmake.rs`/`run-make-support` may not use unstable features 2025-03-07 19:09:41 +08:00
许杰友 Jieyou Xu (Joe) a1c5c4971c
Rollup merge of #136581 - jieyouxu:makefile-be-gone, r=Kobzol
Retire the legacy `Makefile`-based `run-make` test infra

The final piece of [porting run-make tests to use Rust #121876](https://github.com/rust-lang/rust/issues/121876).
Closes #121876.
Closes #40713.
Closes #81791 (no longer using `wc`).
Closes #56475 (no longer a problem in current form of that test; we don't ignore the test on `aarch64-unknown-linux-gnu`).

### Summary

This PR removes the legacy `Makefile`-based `run-make` test infra which has served us well over the years. The legacy infra is no longer needed since we ported all of `Makefile`-based `run-make` tests to the new `rmake.rs` infra.

Additionally, this PR:

- Removes `tests/run-make/tools.mk` since no more `Makefile`-based tests remain.
- Updates `tests/run-make/README.md` and rustc-dev-guide docs to remove mention about `Makefile`-based `run-make` tests
- Update test suite requirements in rustc-dev-guide on Windows to no longer need MSYS2 (they should also now run successfully on native Windows MSVC).
- Update `triagebot.toml` to stop backlinking to #121876.

**Thanks to everyone who helped in this effort to modernize the `run-make` test infra and test suite!**

r? bootstrap
2025-03-05 21:46:32 +08:00
bors cd733e506e Auto merge of #135695 - Noratrieb:elf-raw-dylib, r=bjorn3
Support raw-dylib link kind on ELF

raw-dylib is a link kind that allows rustc to link against a library without having any library files present.
This currently only exists on Windows. rustc will take all the symbols from raw-dylib link blocks and put them in an import library, where they can then be resolved by the linker.

While import libraries don't exist on ELF, it would still be convenient to have this same functionality. Not having the libraries present at build-time can be convenient for several reasons, especially cross-compilation. With raw-dylib, code linking against a library can be cross-compiled without needing to have these libraries available on the build machine. If the libc crate makes use of this, it would allow cross-compilation without having any libc available on the build machine. This is not yet possible with this implementation, at least against libc's like glibc that use symbol versioning. The raw-dylib kind could be extended with support for symbol versioning in the future.

This implementation is very experimental and I have not tested it very well. I have tested it for a toy example and the lz4-sys crate, where it was able to successfully link a binary despite not having a corresponding library at build-time.

I was inspired by Björn's comments in https://internals.rust-lang.org/t/bundle-zig-cc-in-rustup-by-default/22096/27
Tracking issue: #135694

r? bjorn3

try-job: aarch64-apple
try-job: x86_64-msvc-1
try-job: x86_64-msvc-2
try-job: test-various
2025-03-04 15:39:44 +00:00
许杰友 Jieyou Xu (Joe) 6a61f6f721 rustc-dev-guide: remove mentions of legacy `Makefile` run-make infra
And remove outdated requirements to run `run-make` tests on Windows.
2025-03-02 05:56:56 +08:00
Noratrieb 8044303cbf Support raw-dylib link kind on ELF
raw-dylib is a link kind that allows rustc to link against a library
without having any library files present.
This currently only exists on Windows. rustc will take all the symbols
from raw-dylib link blocks and put them in an import library, where they
can then be resolved by the linker.

While import libraries don't exist on ELF, it would still be convenient
to have this same functionality. Not having the libraries present at
build-time can be convenient for several reasons, especially
cross-compilation. With raw-dylib, code linking against a library can be
cross-compiled without needing to have these libraries available on the
build machine. If the libc crate makes use of this, it would allow
cross-compilation without having any libc available on the build
machine. This is not yet possible with this implementation, at least
against libc's like glibc that use symbol versioning.
The raw-dylib kind could be extended with support for symbol versioning
in the future.

This implementation is very experimental and I have not tested it very
well. I have tested it for a toy example and the lz4-sys crate, where it
was able to successfully link a binary despite not having a
corresponding library at build-time.
2025-02-26 19:09:51 +01:00
Jakub Beránek 912575e174
Update documentation 2025-02-17 12:27:44 +01:00
许杰友 Jieyou Xu (Joe) f32fc55183 rustc-dev-guide: document `{ignore,only}-rustc_abi-x86-sse2` 2025-02-15 23:17:07 +08:00