Commit graph

434 commits

Author SHA1 Message Date
Ralf Jung
c199a39884 bootstrap: add support for running Miri on a file 2022-11-06 09:52:31 +01:00
Jakob Degen
0bd4f76944 Ban dashes in miropt test file names 2022-11-02 15:54:46 -07:00
Yuki Okushi
669e3cde1c
Rollup merge of #103805 - Mark-Simulacrum:forward-port, r=jyn514
Enable RUSTC_BOOTSTRAP for a few steps

This forward-ports this commit so we don't need to keep applying it when branching beta (as done in 1.64, 1.65, and 1.66 beta bumps).
2022-11-01 12:03:44 +09:00
bors
024207ab43 Auto merge of #102950 - oli-obk:check_miri, r=RalfJung
Enable `x.py check` for miri

Now that the miri subtree is working properly, let's add it to x.py check.

cc `@rust-lang/miri`
2022-10-31 23:03:39 +00:00
Mark Rousskov
b123a660dd Enable RUSTC_BOOTSTRAP for a few steps 2022-10-31 11:06:49 -04:00
Michael Howell
f404246ce2
Rollup merge of #102101 - BelovDV:new-check-lld-version, r=petrochenkov
check lld version to choose correct option to disable multi-threading in tests

Testing compiler with 'use-lld = true' may be incorrect with old lld.
Flag, disabling multi-threading, should consider lld version.

r? ``@petrochenkov``
2022-10-30 19:31:38 -07:00
Guillaume Gomez
73e7c3a429
Rollup merge of #102634 - andrewpollack:refactor-test-rustcflags, r=Mark-Simulacrum
compiletest: Refactor test rustcflags

Refactoring `host-rustcflags` and `target-rustcflags` from `Option<String>` to `Vec<String>`

Ref: #102438

r? `@Mark-Simulacrum`
2022-10-29 14:18:01 +02:00
Daniil Belov
0c4a01af39 check lld version to choose correct flag for tests 2022-10-26 11:18:14 +03:00
Ralf Jung
84e6732d1e also smoke-test 'cargo miri test' 2022-10-24 11:49:40 +02:00
Ralf Jung
a61737ed6e add support for testing Miri on other targets, and do some cross-testing on CI 2022-10-24 11:49:36 +02:00
Andrew Pollack
47703d3f3d compiletest: refactor rustcflags to Vec 2022-10-19 18:33:47 +00:00
Oli Scherer
0227d8d555 Enable x.py check for miri 2022-10-12 08:43:14 +00:00
bors
1e926f0652 Auto merge of #102755 - pcc:data-local-tmp, r=Mark-Simulacrum
tools/remote-test-{server,client}: Use /data/local/tmp on Android

The /data/tmp directory does not exist, at least not on recent versions of Android, which currently leads to test failures on that platform. I checked a virtual device running AOSP master and a Nexus 5 running Android Marshmallow and on both devices the /data/tmp directory does not exist and /data/local/tmp does, so let's switch to /data/local/tmp.
2022-10-11 08:09:41 +00:00
Peter Collingbourne
9a1c1c7941 tools/remote-test-{server,client}: Use /data/local/tmp on Android
The /data/tmp directory does not exist, at least not on recent versions
of Android, which currently leads to test failures on that platform. I
checked a virtual device running AOSP master and a Nexus 5 running
Android Marshmallow and on both devices the /data/tmp directory does
not exist and /data/local/tmp does, so let's switch to /data/local/tmp.
2022-10-06 13:42:32 -07:00
bors
27579a214d Auto merge of #102573 - RalfJung:mirisync, r=oli-obk
Miri sync

This is a Miri sync created with my experimental fork of josh. We should probably not merge this yet, but we can use this to check if the sync looks the way it should.

r? `@oli-obk`
2022-10-06 00:00:29 +00:00
Ralf Jung
9cc11e262f test Miri changes in PR CI; we no longer need xargo 2022-10-04 17:31:49 +02:00
Ralf Jung
5f77ce0296 bootstrap/miri: switch to non-deprecated env var for setting the sysroot folder 2022-09-24 08:53:40 +02:00
Oli Scherer
6cfa7ef2ba Remove miri from the submodule list and require it for CI to pass 2022-09-21 15:35:53 +00:00
Nixon Enraght-Moony
2506aa0394 jsondoclint: New Tool 2022-09-14 12:30:23 +01:00
bors
fb888117da Auto merge of #100606 - cuviper:upgrade-linux-ci, r=Mark-Simulacrum
ci: Upgrade non-dist Linux testers from ubuntu:16.04 to 22.04

The main goal of updating to 22.04 is to get away from `llvm.allow-old-toolchain`.
A side benefit is that they can also use the system `cmake` instead of building one.
2022-09-01 13:21:03 +00:00
Eric Huss
4a7e2fbb7b Sunset RLS 2022-08-27 21:36:08 -07:00
est31
d32ff14b86 Add replace-version-placeholder tool
This tool is to be ran at specific points in the release process to replace
the version place holder made by stabilizations with the version number.
2022-08-27 17:39:11 +02:00
Josh Stone
d3f2d0cae0 rustbuild: fix version parsing for browser-ui-test 2022-08-23 13:00:18 -07:00
czzrr
8998024aa3 Correct test-args to compiletest on Windows 2022-08-21 19:13:03 +02:00
Guillaume Gomez
a72f0c2e07 Add instructions on how to update the browser-ui-test version 2022-08-11 13:02:19 +02:00
Dylan DPC
7efe24c3ed
Rollup merge of #100181 - RalfJung:alloc-ref-mutability, r=jackh726
add method to get the mutability of an AllocId

Miri needs this for https://github.com/rust-lang/miri/issues/2463.
2022-08-09 17:34:52 +05:30
bors
24cf45a591 Auto merge of #100004 - jyn514:exclude-single-test, r=Mark-Simulacrum
Move `x test --skip` to be part of `--exclude`

`--skip` is inconsistent with the rest of the interface and redundant with `--exclude`.
Fix --exclude to work properly for files and directories rather than having a separate flag.

Fixes https://github.com/rust-lang/rust/issues/96342. cc https://github.com/rust-lang/rust/pull/96493#issuecomment-1200521720

r? `@Mark-Simulacrum`
2022-08-07 02:56:48 +00:00
Ralf Jung
54b122e913 propagate --bless to Miri 2022-08-05 17:59:47 -04:00
Eric Huss
c627d402b4 Remove CARGO_TEST_DISABLE_GIT_CLI
This was a leftover from the Appveyor days.
2022-08-02 16:59:35 -07:00
Joshua Nelson
f8ed52f6fd Move x test --skip to be part of --exclude
`--skip` is inconsistent with the rest of the interface and redundant with `--exclude`.
Fix --exclude to work properly for files and directories rather than having a separate flag.

If someone needs to use --skip for something other than compiletest,
they can use `--test-args --skip` instead.
2022-07-31 18:59:30 -05:00
Tomasz Miąsko
01f4534b42 Build rust demangler before running run-make tests 2022-07-28 14:33:29 +02:00
Amos Wenger
fa0037a5d5 Only run proc-macro-srv tests for now (after discussion with @Veykril, @jyn514, and @lnicola) 2022-07-24 21:04:56 +02:00
Amos Wenger
107e2653a6 Don't run slow tests in Rust CI, only RA CI 2022-07-24 10:38:19 +02:00
Amos Wenger
44f50c5fd2 Add comment about CARGO_WORKSPACE_DIR 2022-07-24 10:38:12 +02:00
Amos Wenger
4ea2f8e48f Add test step for rust-analyzer, run it by default 2022-07-24 10:37:47 +02:00
Ralf Jung
ae22ae1358 miri: make --stage 0 testing work 2022-07-22 08:33:35 -04:00
Matthias Krüger
6742dc4d65
Rollup merge of #98994 - kons-9:dont_use_process_exit, r=jyn514
replace process exit with more detailed exit in src/bootstrap/*.rs

Fixes [#98830](https://github.com/rust-lang/rust/issues/98830)

I implemeted "detail_exit.rs" in lib.rs, and replace all of std::process::exit.
So, error code should panic in test code.
```
// lib.rs
pub fn detail_exit(code: i32) -> ! {
    // Successful exit
    if code == 0 {
        std::process::exit(0);
    }
    if cfg!(test) {
        panic!("status code: {}", code);
    } else {
        std::panic::resume_unwind(Box::new(code));
    }
}
```

<details>
<summary>% rg "exit\(" src/bootstrap/*.rs</summary>

```
builder.rs
351:            crate::detail_exit(1);
1000:            crate::detail_exit(1);
1429:                    crate::detail_exit(1);

compile.rs
1331:        crate::detail_exit(1);

config.rs
818:                    crate::detail_exit(2);
1488:        crate::detail_exit(1);

flags.rs
263:                crate::detail_exit(exit_code);
349:            crate::detail_exit(exit_code);
381:            crate::detail_exit(1);
602:                        crate::detail_exit(1);
616:                crate::detail_exit(1);
807:            crate::detail_exit(1);

format.rs
35:            crate::detail_exit(1);
117:        crate::detail_exit(1);

lib.rs
714:            detail_exit(1);
1620:                detail_exit(1);
1651:pub fn detail_exit(code: i32) -> ! {
1654:        std::process::exit(0);

sanity.rs
107:            crate::detail_exit(1);

setup.rs
97:        crate::detail_exit(1);
290:            crate::detail_exit(1);

test.rs
676:            crate::detail_exit(1);
1024:                crate::detail_exit(1);
1254:            crate::detail_exit(1);

tool.rs
207:                crate::detail_exit(1);

toolstate.rs
96:    crate::detail_exit(3);
111:            crate::detail_exit(1);
182:            crate::detail_exit(1);
228:            crate::detail_exit(1);

util.rs
339:        crate::detail_exit(1);
378:        crate::detail_exit(1);
468:    crate::detail_exit(1);
```
</details>
2022-07-07 20:33:28 +02:00
toshiki goto
d6de276bd9 squash the commits
implement detail_exit but I'm not sure it is right.

not create new file and write detail exit in lib.rs

replace std::process::exit to detail_exit

that is not related to code runnning.

remove pub
2022-07-07 13:41:56 +09:00
Guillaume Gomez
0a7f2c3a02
Rollup merge of #95503 - jyn514:build-single-crate, r=Mark-Simulacrum
bootstrap: Allow building individual crates

This aims to be as unintrusive as possible, but did still require adding a new `tail_args` field to all `Rustc` and `Std` steps.

New library and compiler crates are added to the sysroot as they are built, since it's useful to have e.g. just alloc and not std.

Fixes https://github.com/rust-lang/rust/issues/44293.
2022-07-05 23:43:28 +02:00
Joshua Nelson
d0011b0c05 Allow building single crates for the compiler and standard library
- Add `Interned<Vec<String>>` and use it for tail args
- Refactor `cache.rs` not to need a separate impl for each internable type
2022-07-02 19:29:39 -05:00
The 8472
f719239424 move optimize-tests flag handling from bootstrap to compiletest 2022-07-02 22:48:48 +02:00
The 8472
125f33aa4c Only obey optimize-tests flag on UI tests that are run-pass
```
optimize-tests = false, master
25.98s

optimize-tests = true, master
34.69s

optimize-tests = true, patched
28.79s
```

Effects:

- faster UI tests
- llvm asserts get exercised less on build-pass tests
- the difference between opt and nopt builds shrinks a bit
- aux libs don't get optimized since they don't have a pass mode and almost never have explicit compile flags
2022-07-02 20:58:16 +02:00
Joshua Nelson
0da0a2196d Pass all paths to Step::run at once when using ShouldRun::krate
This was surprisingly complicated. The main changes are:
1. Invert the order of iteration in `StepDescription::run`.

    Previously, it did something like:
    ```python
    for path in paths:
    for (step, should_run) in should_runs:
        if let Some(set) = should_run.pathset_for_path(path):
        step.run(builder, set)
    ```

    That worked ok for individual paths, but didn't allow passing more than one path at a time to `Step::run`
    (since `pathset_for_paths` only had one path available to it).
    Change it to instead look at the intersection of `paths` and `should_run.paths`:

    ```python
    for (step, should_run) in should_runs:
    if let Some(set) = should_run.pathset_for_paths(paths):
        step.run(builder, set)
    ```

2. Change `pathset_for_path` to take multiple pathsets.

    The goal is to avoid `x test library/alloc` testing *all* library crates, instead of just alloc.
    The changes here are similarly subtle, to use the intersection between the paths rather than all
    paths in `should_run.paths`. I added a test for the behavior to try and make it more clear.

    Note that we use pathsets instead of just paths to allow for sets with multiple aliases (*cough* `all_krates` *cough*).
    See the documentation added in the next commit for more detail.

3. Change `StepDescription::run` to explicitly handle 0 paths.

   Before this was implicitly handled by the `for` loop, which just didn't excute when there were no paths.
   Now it needs a check, to avoid trying to run all steps (this is a problem for steps that use `default_condition`).

4. Change `RunDescription` to have a list of pathsets, rather than a single path.

5. Remove paths as they're matched

   This allows checking at the end that no invalid paths are left over.
   Note that if two steps matched the same path, this will no longer run both;
   but that's a bug anyway.

6. Handle suite paths separately from regular sets.

   Running multiple suite paths at once instead of in separate `make_run` invocations is both tricky and not particularly useful.
   The respective test Steps already handle this by introspecting the original paths.

   Avoid having to deal with it by moving suite handling into a seperate loop than `PathSet::Set` checks.
2022-06-18 09:54:35 -05:00
Joshua Nelson
81f511cc2b Move beta rustfmt downloads to rustbuild 2022-06-07 10:16:55 -05:00
Jack Huey
410dcc9674 Fully stabilize NLL 2022-06-03 17:16:41 -04:00
Ralf Jung
962d54e5e8 be less redundant redundant 2022-05-30 12:35:01 +02:00
Oli Scherer
3c66939671
Let miri decide the flags to use for the test suite 2022-05-30 12:10:28 +02:00
Joshua Nelson
53bf24c82b Move download-rustc from bootstrap.py to rustbuild
- Remove download-rustc handling from bootstrap.py
- Allow a custom `pattern` in `builder.unpack()`
- Only download rustc once another part of bootstrap depends on it.

  This is somewhat necessary since the download functions rely on having a full
  `Builder`, which isn't available until after config parsing finishes.
2022-05-25 17:32:31 -05:00
bors
8fbd92d0b9 Auto merge of #96689 - gimbles:campfire, r=Mark-Simulacrum
Move check-bootstrap from a makefile rule to test::Bootstrap

Fixes #96688
2022-05-08 11:14:47 +00:00
gimbles
72d2d6a4ba Move check-bootstrap from a makefile rule to test::Bootstrap 2022-05-07 09:07:07 +05:30