Add extra special error for --level

This commit is contained in:
Ben S 2015-02-24 16:19:56 +00:00
parent 17657100b4
commit 93b17a6308

View File

@ -190,6 +190,10 @@ pub enum Misfire {
/// isn't present. /// isn't present.
Useless(&'static str, bool, &'static str), Useless(&'static str, bool, &'static str),
/// An option was given that does nothing when either of two other options
/// are not present.
Useless2(&'static str, &'static str, &'static str),
/// A numeric option was given that failed to be parsed as a number. /// A numeric option was given that failed to be parsed as a number.
FailedParse(ParseIntError), FailedParse(ParseIntError),
} }
@ -210,6 +214,7 @@ impl fmt::Display for Misfire {
Conflict(a, b) => write!(f, "Option --{} conflicts with option {}.", a, b), Conflict(a, b) => write!(f, "Option --{} conflicts with option {}.", a, b),
Useless(a, false, b) => write!(f, "Option --{} is useless without option --{}.", a, b), Useless(a, false, b) => write!(f, "Option --{} is useless without option --{}.", a, b),
Useless(a, true, b) => write!(f, "Option --{} is useless given option --{}.", a, b), Useless(a, true, b) => write!(f, "Option --{} is useless given option --{}.", a, b),
Useless2(a, b1, b2) => write!(f, "Option --{} is useless without options --{} or --{}.", a, b1, b2),
FailedParse(ref e) => write!(f, "Failed to parse number: {}", e), FailedParse(ref e) => write!(f, "Failed to parse number: {}", e),
} }
} }
@ -260,6 +265,9 @@ impl View {
else if matches.opt_present("tree") { else if matches.opt_present("tree") {
Err(Misfire::Useless("tree", false, "long")) Err(Misfire::Useless("tree", false, "long"))
} }
else if matches.opt_present("level") && !matches.opt_present("recurse") {
Err(Misfire::Useless2("level", "recurse", "tree"))
}
else if xattr::feature_implemented() && matches.opt_present("extended") { else if xattr::feature_implemented() && matches.opt_present("extended") {
Err(Misfire::Useless("extended", false, "long")) Err(Misfire::Useless("extended", false, "long"))
} }
@ -630,4 +638,11 @@ mod test {
assert_eq!(opts.unwrap_err(), Misfire::Useless("extended", false, "long")) assert_eq!(opts.unwrap_err(), Misfire::Useless("extended", false, "long"))
} }
} }
#[test]
fn level_without_recurse_or_tree() {
let opts = Options::getopts(&[ "--level".to_string(), "69105".to_string() ]);
assert_eq!(opts.unwrap_err(), Misfire::Useless2("level", "recurse", "tree"))
}
} }