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)); }