Auto merge of #118368 - GuillaumeGomez:env-flag, r=Nilstrieb
Implement `--env` compiler flag (without `tracked_env` support) Part of https://github.com/rust-lang/rust/issues/80792. Implementation of https://github.com/rust-lang/compiler-team/issues/653. Not an implementation of https://github.com/rust-lang/rfcs/pull/2794. It adds the `--env` compiler flag option which allows to set environment values used by `env!` and `option_env!`. Important to note: When trying to retrieve an environment variable value, it will first look into the ones defined with `--env`, and if there isn't one, then only it will look into the environment variables. So if you use `--env PATH=a`, then `env!("PATH")` will return `"a"` and not the actual `PATH` value. As mentioned in the title, `tracked_env` support is not added here. I'll do it in a follow-up PR. r? rust-lang/compiler
This commit is contained in:
commit
d86d65bbc1
9 changed files with 107 additions and 3 deletions
9
tests/ui/extenv/extenv-env-overload.rs
Normal file
9
tests/ui/extenv/extenv-env-overload.rs
Normal file
|
|
@ -0,0 +1,9 @@
|
|||
// run-pass
|
||||
// rustc-env:MY_VAR=tadam
|
||||
// compile-flags: --env MY_VAR=123abc -Zunstable-options
|
||||
|
||||
// This test ensures that variables provided with `--env` take precedence over
|
||||
// variables from environment.
|
||||
fn main() {
|
||||
assert_eq!(env!("MY_VAR"), "123abc");
|
||||
}
|
||||
5
tests/ui/extenv/extenv-env.rs
Normal file
5
tests/ui/extenv/extenv-env.rs
Normal file
|
|
@ -0,0 +1,5 @@
|
|||
// compile-flags: --env FOO=123abc -Zunstable-options
|
||||
// run-pass
|
||||
fn main() {
|
||||
assert_eq!(env!("FOO"), "123abc");
|
||||
}
|
||||
7
tests/ui/extenv/extenv-not-env.rs
Normal file
7
tests/ui/extenv/extenv-not-env.rs
Normal file
|
|
@ -0,0 +1,7 @@
|
|||
// run-pass
|
||||
// rustc-env:MY_ENV=/
|
||||
// Ensures that variables not defined through `--env` are still available.
|
||||
|
||||
fn main() {
|
||||
assert!(!env!("MY_ENV").is_empty());
|
||||
}
|
||||
3
tests/ui/feature-gates/env-flag.rs
Normal file
3
tests/ui/feature-gates/env-flag.rs
Normal file
|
|
@ -0,0 +1,3 @@
|
|||
// compile-flags: --env A=B
|
||||
|
||||
fn main() {}
|
||||
2
tests/ui/feature-gates/env-flag.stderr
Normal file
2
tests/ui/feature-gates/env-flag.stderr
Normal file
|
|
@ -0,0 +1,2 @@
|
|||
error: the `-Z unstable-options` flag must also be passed to enable the flag `env`
|
||||
|
||||
Loading…
Add table
Add a link
Reference in a new issue