Commit graph

1201 commits

Author SHA1 Message Date
Zalathar
baec3076db Allow tests to specify a //@ filecheck-flags: header
Any flags specified here will be passed to LLVM's `filecheck` tool, in tests
that use that tool.
2024-02-23 11:28:06 +11:00
Zalathar
1e432dd9f4 Simplify existing code for setting filecheck flags
This removes a version check for LLVM >=13, and specifies prefixes as a series
of independent `--check-prefix` flags instead of a single `--check-prefixes`.
2024-02-23 11:27:39 +11:00
许杰友 Jieyou Xu (Joe)
90a189c19b
Update compiletest to only accept //@ directives 2024-02-22 16:04:03 +00:00
许杰友 Jieyou Xu (Joe)
0840502351
Update list of known directive names for diagnostics 2024-02-22 16:04:03 +00:00
Matthias Krüger
084e2322f3
Rollup merge of #121373 - Zalathar:test-revision, r=oli-obk
Consistently refer to a test's `revision` instead of `cfg`

Compiletest allows a test file to specify multiple “revisions” (`//@ revisions: foo bar`), with each revision running as a separate test, and having the ability to define revision-specific headers (`//`@[foo]` ignore-blah`) and revision-specific code (`#[cfg(foo)]`).

The code that implements this feature sometimes uses the term “cfg” instead of “revision”. This results in two confusingly-different names for the same concept, one of which is ambiguous with other kinds of configuration (such as compiletest's own config).

This PR replaces those occurrences of `cfg` with `revision`, so that one name is used consistently.
2024-02-21 22:48:58 +01:00
León Orell Valerian Liehr
2d98f05cf1
Rollup merge of #121347 - davidtwco:compiletest-aux-aux, r=oli-obk
compiletest: support auxiliaries with auxiliaries

To test behaviour that depends on the extern options of intermediate crates, compiletest auxiliaries must have their own auxiliaries.

Auxiliary compilation previously did not trigger compilation of any auxiliaries in the auxiliary's headers. In addition, those auxiliaries would need to be in an `auxiliary/auxiliary` directory, which is unnecessary and makes some crate graphs harder to write tests for, such as when A depends on B and C, and B depends on C.

For a test `tests/ui/$path/root.rs`, with the following crate graph:

```
root
|-- grandparent
`-- parent
    `-- grandparent
```

then the intermediate outputs from compiletest will be:

```
build/$target/test/ui/$path/
|-- auxiliary
|   |-- libgrandparent.dylib
|   |-- libparent.dylib
|   |-- grandparent
|   |   |-- grandparent.err
|   |   `-- grandparent.out
|   `-- parent
|       |-- parent.err
|       `-- parent.out
|-- libroot.rmeta
|-- root.err
`-- root.out
```
2024-02-21 16:32:58 +01:00
David Wood
a2aa9672f6
compiletest: support auxiliaries with auxiliaries
To test behaviour that depends on the extern options of intermediate
crates, compiletest auxiliaries must have their own auxiliaries.

Auxiliary compilation previously did not trigger compilation of any
auxiliaries in the auxiliary's headers. In addition, those auxiliaries
would need to be in an `auxiliary/auxiliary` directory, which is
unnecessary and makes some crate graphs harder to write tests for,
such as when A depends on B and C, and B depends on C.

For a test `tests/ui/$path/root.rs`, with the following crate graph:

```
root
|-- grandparent
`-- parent
    `-- grandparent
```

then the intermediate outputs from compiletest will be:

```
build/$target/test/ui/$path/
|-- auxiliary
|   |-- libgrandparent.dylib
|   |-- libparent.dylib
|   |-- grandparent
|   |   |-- grandparent.err
|   |   `-- grandparent.out
|   `-- parent
|       |-- parent.err
|       `-- parent.out
|-- libroot.rmeta
|-- root.err
`-- root.out
```

Signed-off-by: David Wood <david@davidtw.co>
2024-02-21 14:37:13 +00:00
Zalathar
544d09132b Flatten the parse logic in line_directive 2024-02-21 21:10:47 +11:00
Zalathar
99fb653d1d Consistently refer to a test's revision instead of cfg
Compiletest code sometimes refers to a test's revision as its `cfg`. This
results in two different names for the same thing, one of which is ambiguous
with other kinds of configuration (such as compiletest's own config).

This patch replaces those occurrences of `cfg` with `revision`.
2024-02-21 21:09:40 +11:00
Zalathar
e13410225b Improve internal docs for the HeaderLine callback struct 2024-02-21 20:58:37 +11:00
许杰友 Jieyou Xu (Joe)
ad14a226c0
Update panic message for missing //@ run-rustfix ui test suite when a .fixed file exists 2024-02-20 11:41:44 +00:00
Nilstrieb
4131f6e730
Rollup merge of #121233 - Zalathar:extra-directives, r=oli-obk
Move the extra directives for `Mode::CoverageRun` into `iter_header`

When these extra directives were ported over as part of #112300, it made sense to introduce `iter_header_extra` and pass them in as an extra argument.

But now that #120881 has added a `mode` parameter to `iter_header` for its own purposes, it's slightly simpler to move the coverage special-case code directly into `iter_header` as well. This lets us get rid of `iter_header_extra`.
2024-02-20 07:35:46 +01:00
bors
c9c83cca51 Auto merge of #121265 - klensy:bump-18-02-24, r=Mark-Simulacrum
bump some deps

First commit dedupes darling* crates and remove one more syn 1.* dep
Second one bumps windows crate to 0.52
2024-02-18 16:54:15 +00:00
klensy
35fe26757a windows bump to 0.52 2024-02-18 16:02:16 +03:00
Zalathar
c521d7fa2e Move the extra directives for Mode::CoverageRun into iter_header
When these extra directives were ported over as part of #112300, it made sense
to introduce `iter_header_extra` and pass them in as an extra argument.

But now that #120881 has added a `mode` parameter to `iter_header` for its own
purposes, it's slightly simpler to move the coverage special-case code directly
into `iter_header` as well. This lets us get rid of `iter_header_extra`.
2024-02-18 10:51:56 +11:00
Zalathar
488ffaa726 Wrap iter_header callback arguments in a documentable struct 2024-02-18 10:51:53 +11:00
klensy
f6fa03bfae compiletest: fix regex rebuilds 2024-02-17 12:40:26 +03:00
许杰友 Jieyou Xu (Joe)
e53d6dd35b
Implement infra support for migrating from // to //@ ui test directives 2024-02-16 19:40:23 +00:00
Matthias Krüger
82fda11cc7
Rollup merge of #120273 - klensy:ct-run, r=onur-ozkan
compiletest: few naive improvements

Tested on `python x.py --stage=1 t tests/ui/borrowck/ --force-rerun`, see individual commits.

Wall time didn't improved :-) .
2024-02-12 23:18:53 +01:00
Ben Kimock
2116ed723d Tweak a few mir-opt tests instead of using -Clink-dead-code 2024-02-06 23:36:05 -05:00
Ben Kimock
4451bf4d67 Use a better set of targets for blessing mir-opt tests 2024-02-06 23:36:05 -05:00
klensy
bcfdf3307b add fixme about walking tests tree 2024-01-24 14:58:59 +03:00
klensy
0710ebb999 don't collect found paths into BTreeSet:
keeping order of inserted Paths having high cost on hot path, collect into HashSet instead and sort afterward.

from 1,858,963,938 to 1,448,975,825 I refs.
2024-01-23 19:39:11 +03:00
Nikita Popov
f4f589a028 Remove support for no-system-llvm
Also add tests for min-system-llvm-version.
2024-01-23 11:19:51 +01:00
klensy
e78d6859f7 reduce bufreader size from default(8kb) to 1kb
Headers WAY less than 1kb anyway, so this can be improved more?

before

==18725== Total:     429,769,246 bytes in 957,259 blocks
==18725== At t-gmax: 8,058,316 bytes in 3,502 blocks
==18725== At t-end:  3,045,261 bytes in 1,097 blocks
==18725== Reads:     431,872,599 bytes
==18725== Writes:    214,738,653 bytes

after

==49344== Total:     201,418,575 bytes in 957,174 blocks
==49344== At t-gmax: 7,937,250 bytes in 3,310 blocks
==49344== At t-end:  3,035,637 bytes in 1,076 blocks
==49344== Reads:     431,607,448 bytes
==49344== Writes:    210,731,540 bytes
2024-01-23 11:46:19 +03:00
klensy
ad6432c8ef compiletest: reduce useless regex rebuilds
before:

==8812== Total:     2,374,977,159 bytes in 6,840,026 blocks
==8812== At t-gmax: 8,090,486 bytes in 3,389 blocks
==8812== At t-end:  3,185,454 bytes in 757 blocks
==8812== Reads:     1,873,472,286 bytes
==8812== Writes:    1,249,411,589 bytes

==11212== I   refs:      6,370,244,180

after:

==18725== Total:     429,769,246 bytes in 957,259 blocks
==18725== At t-gmax: 8,058,316 bytes in 3,502 blocks
==18725== At t-end:  3,045,261 bytes in 1,097 blocks
==18725== Reads:     431,872,599 bytes
==18725== Writes:    214,738,653 bytes

==20839== I   refs:      1,873,010,089
2024-01-23 11:12:24 +03:00
Zalathar
0373ce6876 Warn when no profiler runtime means coverage tests won't be run/blessed 2024-01-18 14:42:49 +11:00
Matthias Krüger
985b2ce70d
Rollup merge of #119619 - onur-ozkan:panic-abort-mir-opt, r=oli-obk
mir-opt and custom target fixes

From https://github.com/rust-lang/rust/issues/115642#issuecomment-1879589022

> > Could you please test the last two commits from https://github.com/onur-ozkan/rust/commits/panic-abort-mir-opt when you have the time? The first commit should resolve the error of using the nightly flag with a stable compiler, and the second one should resolve the custom target issue.

> I tested with the two commits and the errors of using nightly flag and custom target specs were not seen.
Testing was completed for the test suites like ui, run-pass-valgrind, coverage, mir-opt, codegen, assembly, incremental.

Fixes #115642
2024-01-09 05:33:22 +01:00
onur-ozkan
26c71cbcf1 detect user-specified custom targets in compiletest
Signed-off-by: onur-ozkan <work@onurozkan.dev>
2024-01-08 16:07:41 +03:00
Zalathar
957a46fa69 coverage: Anonymize line numbers in branch views
The code for anonymizing line numbers in coverage reports now supports the
slightly different line number syntax used by branch regions.
2024-01-07 21:14:55 +11:00
Zalathar
731ba80a6b Allow coverage tests to enable llvm-cov --use-color 2024-01-05 13:42:54 +11:00
Zalathar
9ab8c632ee Extract a split_flags helper in header directive parsing 2024-01-05 13:42:54 +11:00
Zalathar
aa4bf0bbf0 Allow tests to ignore individual test modes
Normally, each test in `tests/coverage` is automatically run in both
`coverage-map` mode and `coverage-run` mode.

This new family of directives allows an individual test to specify that it
should not be run in a particular mode.
2024-01-05 13:42:54 +11:00
Zalathar
f9df1ad4f2 Check for profiler support via a flag, instead of an environment var 2024-01-05 13:42:54 +11:00
Matthias Krüger
9fa0c8e1c7
Rollup merge of #119184 - Rajveer100:branch-for-issue-118752, r=davidtwco
Switch from using `//~ERROR` annotations with `--error-format` to `error-pattern`

Fixes #118752

As noticed by ```@jyn514``` while working on a patch, tests failed due to `//~ERROR` annotations used in combination with the older `--error-format` which is now `error-pattern`.
2024-01-04 15:33:57 +01:00
Rajveer
af44e719fa Switch from using //~ERROR annotations with --error-format to error-pattern
Resolves Issue #118752
2023-12-21 16:45:29 +05:30
Tomasz Miąsko
ba430a36c0 Enable -Zlint-mir by default for mir-opt tests 2023-12-21 00:00:00 +00:00
lcnr
11d16c4082 update use of feature flags 2023-12-14 15:22:37 +01:00
Ralf Jung
29c95e98e3 also print 'immutable' flag 2023-12-07 17:46:36 +01:00
bors
07921b50ba Auto merge of #118036 - DianQK:thinlto-tests, r=tmiasko
Add thinlto support to codegen, assembly and coverage tests

Using `--emit=llvm-ir` with thinlto usually result in multiple IR files.
Resolve test case failure issue reported in #113923.
2023-11-30 13:33:32 +00:00
DianQK
c41bf96039
Add thinlto support to codegen, assembly and coverage tests 2023-11-30 18:48:03 +08:00
bors
b10cfcd65f Auto merge of #118132 - onur-ozkan:stdlib-assertion-status-to-compiletest, r=wesleywiser
utilize stdlib debug assertion status in compiletest

Implemented a new flag `--with-debug-assertions` on compiletest to pass the stdlib debug assertion status from bootstrap.

Resolves #115171
2023-11-29 17:41:27 +00:00
David Tolnay
8cc7073d64
Replace option.map(cond) == Some(true) with option.is_some_and(cond) 2023-11-24 09:14:09 -08:00
onur-ozkan
0b2fd391dc utilize stdlib debug assertion status in compiletest
Implemented a new flag, `--with-debug-assertions` on compiletest to pass the stdlib debug
assertion status from bootstrap.

Signed-off-by: onur-ozkan <work@onurozkan.dev>
2023-11-21 15:46:41 +03:00
Matthias Krüger
ca3a02836e
Rollup merge of #117338 - workingjubilee:asmjs-meets-thanatos, r=b-naber
Remove asmjs

Fulfills [MCP 668](https://github.com/rust-lang/compiler-team/issues/668).

`asmjs-unknown-emscripten` does not work as-specified, and lacks essential upstream support for generating asm.js, so it should not exist at all.
2023-11-17 23:04:21 +01:00
Mark Rousskov
917f6540ed Re-format code with new rustfmt 2023-11-15 21:45:48 -05:00
bors
2c1b65ee14 Auto merge of #115694 - clarfonthey:std-hash-private, r=dtolnay
Add `std:#️⃣:{DefaultHasher, RandomState}` exports (needs FCP)

This implements rust-lang/libs-team#267 to move the libstd hasher types to `std::hash` where they belong, instead of `std::collections::hash_map`.

<details><summary>The below no longer applies, but is kept for clarity.</summary>
This is a small refactor for #27242, which moves the definitions of `RandomState` and `DefaultHasher` into `std::hash`, but in a way that won't be noticed in the public API.

I've opened rust-lang/libs-team#267 as a formal ACP to move these directly into the root of `std::hash`, but for now, they're at least separated out from the collections code in a way that will make moving that around easier.

I decided to simply copy the rustdoc for `std::hash` from `core::hash` since I think it would be ideal for the two to diverge longer-term, especially if the ACP is accepted. However, I would be willing to factor them out into a common markdown document if that's preferred.
</details>
2023-11-11 21:12:20 +00:00
bors
4c8862b263 Auto merge of #117122 - ferrocene:pa-configure-git-diff, r=albertlarsan68
Allow configuring the parent GitHub repository

The git integration in build_helper hardcoded `rust-lang/rust` as the parent GitHub repository, and `master` as the branch name. This works great for `rust-lang/rust`, but causes problems in downstream forks like Ferrocene whenever those functions are invoked (like `./x fmt`).

In `src/stage0.json` there was already a configuration key for the name of the nightly branch, but it wasn't used by build_helper. This PR adds the `github_repository` key to the file, and requires both values to be passed to build_helper whenever a git function is called. This will allow downstream forks to tweak the values.
2023-11-09 16:49:28 +00:00
Pietro Albini
488dd9bc73
fmt 2023-11-09 14:44:54 +01:00
Zalathar
a573880373 coverage: Rename the run-coverage test mode to coverage-run
This makes it more consistent with the `coverage-map` mode and the shared
`tests/coverage` test directory.
2023-11-08 16:41:24 +11:00