Mention `RUSTC_BOOTSTRAP` for misc testing (#2136)

This commit is contained in:
许杰友 Jieyou Xu (Joe) 2024-11-18 16:18:15 +08:00 committed by GitHub
parent 1f42c533c9
commit 65e7344ebb
3 changed files with 45 additions and 0 deletions

View File

@ -32,6 +32,7 @@
- [Rust for Linux](./tests/rust-for-linux.md) - [Rust for Linux](./tests/rust-for-linux.md)
- [Performance testing](./tests/perf.md) - [Performance testing](./tests/perf.md)
- [Suggest tests tool](./tests/suggest-tests.md) - [Suggest tests tool](./tests/suggest-tests.md)
- [Misc info](./tests/misc.md)
- [Debugging the compiler](./compiler-debugging.md) - [Debugging the compiler](./compiler-debugging.md)
- [Using the tracing/logging instrumentation](./tracing.md) - [Using the tracing/logging instrumentation](./tracing.md)
- [Profiling the compiler](./profiling.md) - [Profiling the compiler](./profiling.md)

View File

@ -155,6 +155,10 @@ chapter](ecosystem.md) for more details.
A separate infrastructure is used for testing and tracking performance of the A separate infrastructure is used for testing and tracking performance of the
compiler. See the [Performance testing chapter](perf.md) for more details. compiler. See the [Performance testing chapter](perf.md) for more details.
## Miscellaneous information
There are some other useful testing-related info at [Misc info](misc.md).
## Further reading ## Further reading
The following blog posts may also be of interest: The following blog posts may also be of interest:

40
src/tests/misc.md Normal file
View File

@ -0,0 +1,40 @@
# Miscellaneous testing-related info
## `RUSTC_BOOTSTRAP` and stability
<!-- date-check: Nov 2024 -->
This is a bootstrap/compiler implementation detail, but it can also be useful
for testing:
- `RUSTC_BOOTSTRAP=1` will "cheat" and bypass usual stability checking, allowing
you to use unstable features and cli flags on a stable `rustc`.
- `RUSTC_BOOTSTRAP=-1` will force a given `rustc` to pretend that is a stable
compiler, even if it's actually a nightly `rustc`. This is useful because some
behaviors of the compiler (e.g. diagnostics) can differ depending on whether
the compiler is nightly or not.
In `ui` tests and other test suites that support `//@ rustc-env`, you can specify
```rust,ignore
// Force unstable features to be usable on stable rustc
//@ rustc-env:RUSTC_BOOTSTRAP=1
// Or force nightly rustc to pretend it is a stable rustc
//@ rustc-env:RUSTC_BOOTSTRAP=-1
```
For `run-make` tests, `//@ rustc-env` is not supported. You can do something
like the following for individual `rustc` invocations.
```rust,ignore
use run_make_support::rustc;
fn main() {
rustc()
// Pretend that I am very stable
.env("RUSTC_BOOTSTRAP", "-1")
//...
.run();
}
```