@@ -3,7 +3,7 @@ use sudo_test::{Command, Env};
3
3
use crate :: { helpers, SUDOERS_ALL_ALL_NOPASSWD } ;
4
4
5
5
#[ test]
6
- fn var_is_preserved ( ) {
6
+ fn env_var_is_preserved ( ) {
7
7
let name = "SHOULD_BE_PRESERVED" ;
8
8
let value = "42" ;
9
9
let env = Env ( [ SUDOERS_ALL_ALL_NOPASSWD , "Defaults setenv" ] ) . build ( ) ;
@@ -18,6 +18,30 @@ fn var_is_preserved() {
18
18
assert_eq ! ( Some ( value) , sudo_env. get( name) . copied( ) ) ;
19
19
}
20
20
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
+ }
21
45
#[ test]
22
46
fn env_var_overrides_preserve ( ) {
23
47
let name = "SHOULD_BE_PRESERVED" ;
0 commit comments