Skip to content

Commit

Permalink
fix(flagset): correctly parse shorthand flags with values (#7)
Browse files Browse the repository at this point in the history
  • Loading branch information
Zaba505 committed Sep 11, 2020
1 parent fdbfa92 commit 63dd2dd
Showing 1 changed file with 32 additions and 4 deletions.
36 changes: 32 additions & 4 deletions src/lib.rs
Expand Up @@ -195,7 +195,7 @@ impl FlagSet {
}

/// args returns the non-flag arguments.
pub fn args(self) -> Vec<String> {
pub fn args(&self) -> Vec<String> {
self.args.clone()
}

Expand Down Expand Up @@ -419,14 +419,14 @@ impl FlagSet {
let c = arg.unwrap();
if *c == '=' {
args.next();
self.set(name, scan_arg(args))?;
return self.set(name, scan_arg(args));
} else if no_opt_def_value != "" {
self.set(name, no_opt_def_value)?;
} else if *c != ' ' {
self.set(name, scan_arg(args))?;
return self.set(name, scan_arg(args));
} else {
args.next();
self.set(name, scan_arg(args))?;
return self.set(name, scan_arg(args));
}
}
}
Expand Down Expand Up @@ -839,4 +839,32 @@ mod tests {
let bools = flags.value_of::<Slice<bool>>("bools").unwrap();
assert_eq!(bools.len(), 1);
}

#[test]
fn parse_arg_after_shorthand() {
let mut flags = FlagSet::new("test");
flags.int8_p("int", 'i', 0, "test");

if let Err(err) = flags.parse(vec!["-i=1", "test"]) {
panic!(err);
}

let int = flags.value_of::<i8>("int").unwrap();
assert_eq!(int, 1);
assert_eq!(flags.args().len(), 1);
}

#[test]
fn parse_arg_after_shorthand_with_space() {
let mut flags = FlagSet::new("test");
flags.int8_p("int", 'i', 0, "test");

if let Err(err) = flags.parse(vec!["-i", "1", "test"]) {
panic!(err);
}

let int = flags.value_of::<i8>("int").unwrap();
assert_eq!(int, 1);
assert_eq!(flags.args().len(), 1);
}
}

0 comments on commit 63dd2dd

Please sign in to comment.