mirror of
https://github.com/RGBCube/uutils-coreutils
synced 2025-07-28 11:37:44 +00:00
Weird env variable names should trigger an error.
For example `env a=b=c printenv a=b` should fail Tested by tests/misc/printenv.sh
This commit is contained in:
parent
9ce788632b
commit
9a5d18b8f6
2 changed files with 17 additions and 3 deletions
|
@ -40,16 +40,21 @@ pub fn uumain(args: impl uucore::Args) -> UResult<()> {
|
||||||
return Ok(());
|
return Ok(());
|
||||||
}
|
}
|
||||||
|
|
||||||
let mut not_found = false;
|
let mut error_found = false;
|
||||||
for env_var in variables {
|
for env_var in variables {
|
||||||
|
// we silently ignore a=b as variable but we trigger an error
|
||||||
|
if env_var.contains('=') {
|
||||||
|
error_found = true;
|
||||||
|
continue;
|
||||||
|
}
|
||||||
if let Ok(var) = env::var(env_var) {
|
if let Ok(var) = env::var(env_var) {
|
||||||
print!("{}{}", var, separator);
|
print!("{}{}", var, separator);
|
||||||
} else {
|
} else {
|
||||||
not_found = true;
|
error_found = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
if not_found {
|
if error_found {
|
||||||
Err(1.into())
|
Err(1.into())
|
||||||
} else {
|
} else {
|
||||||
Ok(())
|
Ok(())
|
||||||
|
|
|
@ -28,3 +28,12 @@ fn test_get_var() {
|
||||||
assert!(!result.stdout_str().is_empty());
|
assert!(!result.stdout_str().is_empty());
|
||||||
assert_eq!(result.stdout_str().trim(), "VALUE");
|
assert_eq!(result.stdout_str().trim(), "VALUE");
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ignore_equal_var() {
|
||||||
|
let scene = TestScenario::new(util_name!());
|
||||||
|
// tested by gnu/tests/misc/printenv.sh
|
||||||
|
let result = scene.ucmd().env("a=b", "c").arg("a=b").fails();
|
||||||
|
|
||||||
|
assert!(result.stdout_str().is_empty());
|
||||||
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue