From f3b2f23a1d95769082c97fc966d6eeddaea9668a Mon Sep 17 00:00:00 2001 From: Casper Beyer Date: Mon, 23 Aug 2021 18:37:02 +0800 Subject: refactor(cli/flags): use an optional non zero usize for `fail-fast` (#11804) Changes the type of the `fail_fast` flag from `Option` to `Option` as an optional value of zero isn't sound. --- cli/flags.rs | 22 +++++++++------------- 1 file changed, 9 insertions(+), 13 deletions(-) (limited to 'cli/flags.rs') diff --git a/cli/flags.rs b/cli/flags.rs index 86a5405b2..8236d63db 100644 --- a/cli/flags.rs +++ b/cli/flags.rs @@ -101,7 +101,7 @@ pub enum DenoSubcommand { Test { doc: bool, no_run: bool, - fail_fast: Option, + fail_fast: Option, quiet: bool, allow_none: bool, include: Option>, @@ -1047,16 +1047,9 @@ fn test_subcommand<'a, 'b>() -> App<'a, 'b> { .takes_value(true) .require_equals(true) .value_name("N") - .validator(|val: String| match val.parse::() { - Ok(val) => { - if val == 0 { - return Err( - "fail-fast should be an number greater than 0".to_string(), - ); - } - Ok(()) - } - Err(_) => Err("fail-fast should be a number".to_string()), + .validator(|val: String| match val.parse::() { + Ok(_) => Ok(()), + Err(_) => Err("fail-fast should be a non zero integer".to_string()), }), ) .arg( @@ -1786,7 +1779,7 @@ fn test_parse(flags: &mut Flags, matches: &clap::ArgMatches) { if let Some(value) = matches.value_of("fail-fast") { Some(value.parse().unwrap()) } else { - Some(1) + Some(NonZeroUsize::new(1).unwrap()) } } else { None @@ -3663,7 +3656,7 @@ mod tests { subcommand: DenoSubcommand::Test { no_run: false, doc: false, - fail_fast: Some(3), + fail_fast: Some(NonZeroUsize::new(3).unwrap()), filter: None, allow_none: false, quiet: false, @@ -3674,6 +3667,9 @@ mod tests { ..Flags::default() } ); + + let r = flags_from_vec(svec!["deno", "test", "--fail-fast=0"]); + assert!(r.is_err()); } #[test] -- cgit v1.2.3