diff --git a/src/SUMMARY.md b/src/SUMMARY.md index 49910b54a..570256412 100644 --- a/src/SUMMARY.md +++ b/src/SUMMARY.md @@ -32,6 +32,7 @@ - [Rust for Linux](./tests/rust-for-linux.md) - [Performance testing](./tests/perf.md) - [Suggest tests tool](./tests/suggest-tests.md) + - [Misc info](./tests/misc.md) - [Debugging the compiler](./compiler-debugging.md) - [Using the tracing/logging instrumentation](./tracing.md) - [Profiling the compiler](./profiling.md) diff --git a/src/tests/intro.md b/src/tests/intro.md index 132accad6..ba44a969b 100644 --- a/src/tests/intro.md +++ b/src/tests/intro.md @@ -155,6 +155,10 @@ chapter](ecosystem.md) for more details. A separate infrastructure is used for testing and tracking performance of the 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 The following blog posts may also be of interest: diff --git a/src/tests/misc.md b/src/tests/misc.md new file mode 100644 index 000000000..c0288b3dd --- /dev/null +++ b/src/tests/misc.md @@ -0,0 +1,40 @@ +# Miscellaneous testing-related info + +## `RUSTC_BOOTSTRAP` and stability + + + +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(); +} +```