From 9e8be3093fa430e1a48d740574a89d1fcf319e50 Mon Sep 17 00:00:00 2001 From: Jeong YunWon Date: Fri, 11 Jun 2021 18:44:28 +0900 Subject: [PATCH] chown: clean up parse_spec --- src/uu/chown/src/chown.rs | 63 +++++++++++++++++++-------------------- 1 file changed, 30 insertions(+), 33 deletions(-) diff --git a/src/uu/chown/src/chown.rs b/src/uu/chown/src/chown.rs index 166ad72b8..ab9f10dba 100644 --- a/src/uu/chown/src/chown.rs +++ b/src/uu/chown/src/chown.rs @@ -278,42 +278,25 @@ fn parse_spec(spec: &str) -> Result<(Option, Option), String> { let usr_only = args.len() == 1 && !args[0].is_empty(); let grp_only = args.len() == 2 && args[0].is_empty(); let usr_grp = args.len() == 2 && !args[0].is_empty() && !args[1].is_empty(); - - let r = if usr_only { - ( - Some( - Passwd::locate(args[0]) - .map_err(|_| format!("invalid user: ‘{}’", spec))? - .uid(), - ), - None, - ) - } else if grp_only { - ( - None, - Some( - Group::locate(args[1]) - .map_err(|_| format!("invalid group: ‘{}’", spec))? - .gid(), - ), - ) - } else if usr_grp { - ( - Some( - Passwd::locate(args[0]) - .map_err(|_| format!("invalid user: ‘{}’", spec))? - .uid(), - ), - Some( - Group::locate(args[1]) - .map_err(|_| format!("invalid group: ‘{}’", spec))? - .gid(), - ), + let uid = if usr_only || usr_grp { + Some( + Passwd::locate(args[0]) + .map_err(|_| format!("invalid user: ‘{}’", spec))? + .uid(), ) } else { - (None, None) + None }; - Ok(r) + let gid = if grp_only || usr_grp { + Some( + Group::locate(args[1]) + .map_err(|_| format!("invalid group: ‘{}’", spec))? + .gid(), + ) + } else { + None + }; + Ok((uid, gid)) } enum IfFrom { @@ -502,3 +485,17 @@ impl Chowner { } } } + +#[cfg(test)] +mod test { + use super::*; + + #[test] + fn test_parse_spec() { + assert_eq!(parse_spec(":"), Ok((None, None))); + assert!(parse_spec("::") + .err() + .unwrap() + .starts_with("invalid group: ")); + } +}