Commit graph

89 commits

Author SHA1 Message Date
bors
862156d6f2 Auto merge of #140233 - Zalathar:revert-new-executor, r=jieyouxu
Revert compiletest new-executor, to re-land without download-rustc

Revert <https://github.com/rust-lang/rust/pull/139998> because the original merge triggered download-rustc, which messes with test metrics and prevents us from properly comparing them before/after the change.

The plan is to re-land this PR as-is, combined with a trivial compiler change to avoid download-rustc and get proper test metrics for comparison.

This reverts commit be181dd75c, reversing changes made to 645d0ad2a4.

r? ghost
2025-04-25 06:00:11 +00:00
Matthias Krüger
a01655298a
Rollup merge of #140191 - Kobzol:remove-git-repository-from-git-config, r=jieyouxu
Remove git repository from git config

It is no longer needed after https://github.com/rust-lang/rust/pull/138591. We could even remove the `nightly_branch` field, but it still has one usage.

r? ``@jieyouxu``
2025-04-24 17:19:47 +02:00
Zalathar
d0a458040c Revert compiletest new-executor, to re-land without download-rustc
Revert <https://github.com/rust-lang/rust/pull/139998> because the original
merge triggered download-rustc, which messes with test metrics and prevents us
from properly comparing them before/after the change.

The plan is to re-land this PR as-is, combined with a trivial compiler change
to avoid download-rustc and get proper test metrics for comparison.

This reverts commit be181dd75c, reversing
changes made to 645d0ad2a4.
2025-04-24 11:26:57 +10:00
bors
be181dd75c Auto merge of #139998 - Zalathar:new-executor, r=onur-ozkan
compiletest: Use the new non-libtest executor by default

The new executor was implemented in #139660, but required a manual opt-in. This PR activates the new executor by default, but leaves the old libtest-based executor in place (temporarily) to make reverting easier if something unexpectedly goes horribly wrong.

Currently the new executor can be explicitly disabled by passing the `-N` flag to compiletest (e.g. `./x test ui -- -N`), but eventually that flag will be removed, alongside the removal of the libtest dependency. The flag is mostly there to make manual comparative testing easier if something does go wrong.

As before, there *should* be no user-visible difference between the old executor and the new executor.

---

I didn't get much of a response to my [call for testing thread on Zulip](https://rust-lang.zulipchat.com/#narrow/channel/122651-general/topic/Call.20for.20testing.3A.20New.20test.20executor.20for.20compiletest/with/512452105), and the reports I did get (along with my own usage) indicate that there aren't any problems. So I think it's reasonable to move forward with making this the default, in the hopes of being able to remove the libtest dependency relatively soon.

When the libtest dependency is removed, it should be reasonable to build compiletest against pre-built stage0 std by default, even after the stage0 redesign. (Though we should probably have at least one CI job using in-tree stage1 std instead, to guard against the possibility of the `#![feature(internal_output_capture)]` API actually changing.)
2025-04-23 12:12:31 +00:00
Jakub Beránek
a4b9a1b4da Remove git_repository field from GitConfig
It is no longer needed after a recent refactoring.
2025-04-23 10:41:20 +02:00
Zalathar
bf4b2a94f7 compiletest: Use the new non-libtest executor by default
Currently the new executor can be explicitly disabled by passing the `-N` flag
to compiletest (e.g. `./x test ui -- -N`), but eventually that flag will be
removed, alongside the removal of the libtest dependency.
2025-04-23 12:48:05 +10:00
Jakub Beránek
fbca453d7d Fix compiletest and doc comment 2025-04-20 13:14:08 +02:00
Jakub Beránek
64795ecb87 Remove setup-upstream-remote.sh and upstream handling.
It shouldn't be needed anymore.
2025-04-20 09:13:56 +02:00
Zalathar
e3d6813920 compiletest: Add an experimental new executor to replace libtest
The new executor can be enabled by passing `--new-executor` or `-n` to
compiletest.

For example: `./x test ui -- -n`
2025-04-15 13:00:36 +10:00
Zalathar
6fda3e52c9 compiletest: Extract libtest-specific executor code to a submodule 2025-04-15 12:36:45 +10:00
Jieyou Xu
e24b0c8e0a
compiletest: consistently use {Utf8Path,Utf8PathBuf}
Since compiletest already assumes UTF-8 paths and does not try to be
robust against non-UTF-8 paths.
2025-04-13 19:59:35 +08:00
Stuart Cook
ea1a31b150
Rollup merge of #139469 - jieyouxu:compiletest-supports-crate-type, r=onur-ozkan
Introduce a `//@ needs-crate-type` compiletest directive

The `//@ needs-crate-type: $crate_types...` directive takes a comma-separated list of crate types that the target platform must support in order for the test to be run. This allows the test writer to semantically convey that the ignore condition is based on target crate type needs, instead of using a general purpose `//@ ignore-$target` directive (often without comment).

Fixes #132309.

### Example

```rs
//@ needs-crate-type: dylib (ignored on e.g. wasm32-unknown-unknown)
//@ compile-flags: --crate-type=dylib

fn foo() {}
```

### Review advice

- Best reviewed commit-by-commit.
- The impl is not very clean, I briefly attempted to clean up the directive handling but found that more invasive changes are needed, so I'd like to not block on the cleanup for now.

try-job: test-various
try-job: armhf-gnu
2025-04-11 13:31:47 +10:00
Jieyou Xu
59a1f3314c
compiletest: update to Edition 2024 2025-04-10 15:01:48 +08:00
Jieyou Xu
57135c4273
compiletest: add needs-crate-type directive
The `//@ needs-crate-type: $crate_types...` directive takes a
comma-separated list of crate types that the target platform must
support in order for the test to be run.
2025-04-10 12:52:08 +08:00
Zalathar
63fcd2419d compiletest: Remove the --logfile flag
This flag is deprecated in libtest, and there's no evidence in-tree of this
flag actually being passed to compiletest.

(For detailed information about test results, bootstrap parses JSON output from
compiletest instead.)
2025-04-08 22:17:58 +10:00
Zalathar
ecf9e204c9 compiletest: Encapsulate all of the code that touches libtest 2025-04-03 23:15:09 +11:00
Zalathar
3e762b1897 compiletest: Allow --fail-fast as a command-line option 2025-04-03 22:06:29 +11:00
Jieyou Xu
3d58aec0da
Report compiletest pass mode if forced
This is very non-obvious if it fails in PR CI.
2025-03-27 02:48:53 +08:00
Jakub Beránek
599dc823c9
Simplify get_git_modified_files
It only ever returned `Some`, so `Option` was useless in its return type.
2025-03-19 14:55:37 +01:00
许杰友 Jieyou Xu (Joe)
65da1ffe41
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
许杰友 Jieyou Xu (Joe)
3998690a68 compiletest: remove legacy Makefile-based run-make support 2025-03-02 05:16:38 +08:00
Jakub Beránek
0034d6c928 Compile run-make recipes using the stage0 compiler 2025-03-01 22:11:02 +01:00
许杰友 Jieyou Xu (Joe)
5d6a6e70e3 compiletest: disambiguate between root build dir vs test suite specific build dir
- Introduce and use `--build-{root,test-suite-root}` over
  `--build-base`.
- A few minor cleanups.
2025-02-23 21:47:15 +08:00
许杰友 Jieyou Xu (Joe)
ef3c339f9c compiletest: introduce and use --src-root and --src-test-suite-root
Instead of only having `--src-base` and `src_base` which *actually*
refers to the directory containing the test suite and not the sources
root. More importantly, kill off `find_rust_src_root` when we can simply
pass that info from bootstrap.
2025-02-22 01:44:28 +08:00
许杰友 Jieyou Xu (Joe)
8a0dc27d57 compiletest: use --stage number directly instead of deriving from --stage-id
Notably, this avoids having to do hacky string splitting based on
`--stage-id`.
2025-02-03 16:13:29 +08:00
binarycat
16286cefcf rename 'js-doc-test' to 'rustdoc-js' in compiletest 2025-01-11 20:37:20 -06:00
clubby789
bccc11e230 compiletest: Replace --nocapture with --no-capture 2024-12-27 12:10:55 +00:00
clubby789
4f4d62067a compiletest: Allow using a specific debugger when running debuginfo tests 2024-12-21 20:47:58 +00:00
Integral
7eb0d84424
refactor: replace &PathBuf with &Path to enhance generality 2024-12-18 00:28:34 +08:00
许杰友 Jieyou Xu (Joe)
3c3512cf8c Revert "Rollup merge of #134040 - clubby789:bootstrap-eprintln, r=jieyouxu"
This reverts commit b282774aaf, reversing
changes made to e0f3db0056.
2024-12-12 19:24:01 +08:00
clubby789
a6c462863d compiletest: print{,ln}! -> eprint{,ln}!
Co-authored-by: Jieyou Xu <jieyouxu@outlook.com>
2024-12-09 20:06:53 +08:00
Rémy Rakic
62c71ccc7f improve --compare-mode error handling
- show the erroneous value
- show the valid values
2024-12-08 20:21:46 +00:00
Jieyou Xu
5b75493d99 Revert "Rollup merge of #133817 - clubby789:bootstrap-eprintln, r=jieyouxu"
This reverts commit 0585134e70, reversing
changes made to 5530869e0f.

The PR unfortunately only converted the `ln!` instances, meaning that
test output was messed up because stdout/stderr output interleaved when
some `println!` instances were converted to `eprintln!` instances, while
some `println!` instances remain unchanged.
2024-12-05 05:59:28 +00:00
clubby789
23725619c4 compiletest: println! -> eprintln! 2024-12-03 23:43:10 +00:00
Jubilee
93e9ec05a9
Rollup merge of #131913 - jieyouxu:only_debug_assertions, r=onur-ozkan
Add `{ignore,needs}-{rustc,std}-debug-assertions` directive support

Add `{ignore,needs}-{rustc,std}-debug-assertions` compiletest directives and retire the old `{ignore,only}-debug` directives. The old `{ignore,only}-debug` directives were ambiguous because you could have std built with debug assertions but rustc not built with debug assertions or vice versa. If we want to support the use case of controlling test run based on if rustc was built with debug assertions, then having `{ignore,only}-debug` will be very confusing.

cc ````@matthiaskrgr````

Closes #123987.

r? bootstrap (or compiler tbh)
2024-11-07 18:48:21 -08:00
许杰友 Jieyou Xu (Joe)
59cb59d74d compiletest: stamp minicore.rs to rerun tests on changes 2024-10-31 18:20:11 +08:00
许杰友 Jieyou Xu (Joe)
95d01fcee9 compiletest: register --minicore-path flag and //@ add-core-stubs directive 2024-10-31 18:20:11 +08:00
许杰友 Jieyou Xu (Joe)
65b986b94d compiletest: add {ignore,needs}-{rustc,std}-debug-assertions directive support
And retire the old `only-debug` directive which was ambiguous and only
for std debug assertions.
2024-10-31 17:33:42 +08:00
许杰友 Jieyou Xu (Joe)
e419b3d1ec compiletest: improve robustness of LLVM version handling 2024-10-30 12:54:44 +08:00
Stuart Cook
f7f411dd4e
Rollup merge of #131930 - clubby789:revision-cfg-collide, r=jieyouxu
Don't allow test revisions that conflict with built in cfgs

Fixes #128964

Sorry `@heysujal` I started working on this about 1 minute before your comment by complete coincidence 😅
2024-10-24 14:19:56 +11:00
clubby789
2e3091d66c Don't allow test revisions that conflict with built in cfgs 2024-10-23 18:05:27 +00:00
Orion Gonzalez
c8de61b50d s/display-diff-tool/compiletest-diff-tool/ 2024-10-22 19:11:44 +02:00
Orion Gonzalez
37ffb94093 update CONFIG_CHANGE_HISTORY 2024-10-22 19:11:05 +02:00
Orion Gonzalez
ef4325eb85 implemented custom differ 2024-10-22 19:10:35 +02:00
Orion Gonzalez
73238301f4 add an option for a custom differ 2024-10-22 19:08:55 +02:00
许杰友 Jieyou Xu (Joe)
e32a5be3b0 compiletest: disambiguate between tidy and tidy (html version) 2024-10-20 14:30:52 +08:00
Zalathar
554097678a Rename stamp to stamp_file_path 2024-10-18 16:11:15 +11:00
Zalathar
3f8d87beda Rename found_paths to found_path_stems 2024-10-18 16:05:57 +11:00
Zalathar
c4c62a5591 Rename inputs to common_inputs_stamp
The new name makes it clearer that this is a timestamp, and is collected from
input files considered common to all tests.
2024-10-18 16:05:57 +11:00
Zalathar
932e9f01b1 Store test collection context/state in two structs 2024-10-18 16:05:57 +11:00