Merge pull request #517 from matthiasbeyer/libimaginteraction/fix-nl-bug
Fix bug when newline is in the input
This commit is contained in:
commit
cbf636960e
1 changed files with 38 additions and 2 deletions
|
@ -21,8 +21,8 @@ pub fn ask_bool(s: &str, default: Option<bool>) -> bool {
|
||||||
|
|
||||||
fn ask_bool_<R: BufRead>(s: &str, default: Option<bool>, input: &mut R) -> bool {
|
fn ask_bool_<R: BufRead>(s: &str, default: Option<bool>, input: &mut R) -> bool {
|
||||||
lazy_static! {
|
lazy_static! {
|
||||||
static ref R_YES: Regex = Regex::new(r"^[Yy]$").unwrap();
|
static ref R_YES: Regex = Regex::new(r"^[Yy](\n?)$").unwrap();
|
||||||
static ref R_NO: Regex = Regex::new(r"^[Nn]$").unwrap();
|
static ref R_NO: Regex = Regex::new(r"^[Nn](\n?)$").unwrap();
|
||||||
}
|
}
|
||||||
|
|
||||||
loop {
|
loop {
|
||||||
|
@ -175,6 +175,15 @@ mod test {
|
||||||
assert!(ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
assert!(ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ask_bool_nodefault_yes_nl() {
|
||||||
|
let question = "Is this true";
|
||||||
|
let default = None;
|
||||||
|
let answers = "\n\n\n\n\ny\n";
|
||||||
|
|
||||||
|
assert!(ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ask_bool_nodefault_no() {
|
fn test_ask_bool_nodefault_no() {
|
||||||
let question = "Is this true";
|
let question = "Is this true";
|
||||||
|
@ -184,6 +193,15 @@ mod test {
|
||||||
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ask_bool_nodefault_no_nl() {
|
||||||
|
let question = "Is this true";
|
||||||
|
let default = None;
|
||||||
|
let answers = "n\n";
|
||||||
|
|
||||||
|
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ask_bool_default_no() {
|
fn test_ask_bool_default_no() {
|
||||||
let question = "Is this true";
|
let question = "Is this true";
|
||||||
|
@ -193,6 +211,15 @@ mod test {
|
||||||
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ask_bool_default_no_nl() {
|
||||||
|
let question = "Is this true";
|
||||||
|
let default = Some(false);
|
||||||
|
let answers = "n\n";
|
||||||
|
|
||||||
|
assert!(false == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ask_bool_default_yes() {
|
fn test_ask_bool_default_yes() {
|
||||||
let question = "Is this true";
|
let question = "Is this true";
|
||||||
|
@ -202,6 +229,15 @@ mod test {
|
||||||
assert!(true == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
assert!(true == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[test]
|
||||||
|
fn test_ask_bool_default_yes_nl() {
|
||||||
|
let question = "Is this true";
|
||||||
|
let default = Some(true);
|
||||||
|
let answers = "y\n";
|
||||||
|
|
||||||
|
assert!(true == ask_bool_(question, default, &mut BufReader::new(answers.as_bytes())));
|
||||||
|
}
|
||||||
|
|
||||||
#[test]
|
#[test]
|
||||||
fn test_ask_bool_default_yes_answer_no() {
|
fn test_ask_bool_default_yes_answer_no() {
|
||||||
let question = "Is this true";
|
let question = "Is this true";
|
||||||
|
|
Loading…
Reference in a new issue