Skip to content

Commit b20da66

Browse files
committed
add extra compliance test
1 parent 7a13c7a commit b20da66

File tree

1 file changed

+25
-1
lines changed

1 file changed

+25
-1
lines changed

test-framework/sudo-compliance-tests/src/sudo/flag_preserve_environment.rs

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use sudo_test::{Command, Env};
33
use crate::{helpers, SUDOERS_ALL_ALL_NOPASSWD};
44

55
#[test]
6-
fn var_is_preserved() {
6+
fn env_var_is_preserved() {
77
let name = "SHOULD_BE_PRESERVED";
88
let value = "42";
99
let env = Env([SUDOERS_ALL_ALL_NOPASSWD, "Defaults setenv"]).build();
@@ -18,6 +18,30 @@ fn var_is_preserved() {
1818
assert_eq!(Some(value), sudo_env.get(name).copied());
1919
}
2020

21+
#[test]
22+
fn preserve_and_env_var_can_coexist() {
23+
let name = "SHOULD_BE_PRESERVED";
24+
let value = "42";
25+
let other_name = "ALSO_PRESERVED";
26+
let other_value = "37";
27+
let env = Env([SUDOERS_ALL_ALL_NOPASSWD, "Defaults setenv"]).build();
28+
29+
let stdout = Command::new("env")
30+
.arg(format!("{name}={value}"))
31+
.arg(format!("{other_name}={other_value}"))
32+
.args([
33+
"sudo",
34+
&format!("{name}={value}"),
35+
&format!("--preserve-env={other_name}"),
36+
"env",
37+
])
38+
.output(&env)
39+
.stdout();
40+
let sudo_env = helpers::parse_env_output(&stdout);
41+
42+
assert_eq!(Some(value), sudo_env.get(name).copied());
43+
assert_eq!(Some(other_value), sudo_env.get(other_name).copied());
44+
}
2145
#[test]
2246
fn env_var_overrides_preserve() {
2347
let name = "SHOULD_BE_PRESERVED";

0 commit comments

Comments
 (0)