24 lines
933 B
Rust
24 lines
933 B
Rust
|
use super::UnstableFeatures;
|
||
|
|
||
|
#[test]
|
||
|
fn rustc_bootstrap_parsing() {
|
||
|
let is_bootstrap = |env, krate| {
|
||
|
std::env::set_var("RUSTC_BOOTSTRAP", env);
|
||
|
matches!(UnstableFeatures::from_environment(krate), UnstableFeatures::Cheat)
|
||
|
};
|
||
|
assert!(is_bootstrap("1", None));
|
||
|
assert!(is_bootstrap("1", Some("x")));
|
||
|
// RUSTC_BOOTSTRAP allows specifying a specific crate
|
||
|
assert!(is_bootstrap("x", Some("x")));
|
||
|
// RUSTC_BOOTSTRAP allows multiple comma-delimited crates
|
||
|
assert!(is_bootstrap("x,y,z", Some("x")));
|
||
|
assert!(is_bootstrap("x,y,z", Some("y")));
|
||
|
// Crate that aren't specified do not get unstable features
|
||
|
assert!(!is_bootstrap("x", Some("a")));
|
||
|
assert!(!is_bootstrap("x,y,z", Some("a")));
|
||
|
assert!(!is_bootstrap("x,y,z", None));
|
||
|
|
||
|
// this is technically a breaking change, but there are no stability guarantees for RUSTC_BOOTSTRAP
|
||
|
assert!(!is_bootstrap("0", None));
|
||
|
}
|