mirror of
https://github.com/denoland/deno.git
synced 2024-12-22 15:24:46 -05:00
refactor(cli/flags): use an optional non zero usize for fail-fast
(#11804)
Changes the type of the `fail_fast` flag from `Option<usize>` to `Option<NonZeroUsize>` as an optional value of zero isn't sound.
This commit is contained in:
parent
198699faba
commit
f3b2f23a1d
3 changed files with 13 additions and 16 deletions
22
cli/flags.rs
22
cli/flags.rs
|
@ -101,7 +101,7 @@ pub enum DenoSubcommand {
|
|||
Test {
|
||||
doc: bool,
|
||||
no_run: bool,
|
||||
fail_fast: Option<usize>,
|
||||
fail_fast: Option<NonZeroUsize>,
|
||||
quiet: bool,
|
||||
allow_none: bool,
|
||||
include: Option<Vec<String>>,
|
||||
|
@ -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::<usize>() {
|
||||
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::<NonZeroUsize>() {
|
||||
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]
|
||||
|
|
|
@ -77,6 +77,7 @@ use std::env;
|
|||
use std::io::Read;
|
||||
use std::io::Write;
|
||||
use std::iter::once;
|
||||
use std::num::NonZeroUsize;
|
||||
use std::path::PathBuf;
|
||||
use std::pin::Pin;
|
||||
use std::rc::Rc;
|
||||
|
@ -1004,7 +1005,7 @@ async fn test_command(
|
|||
include: Option<Vec<String>>,
|
||||
no_run: bool,
|
||||
doc: bool,
|
||||
fail_fast: Option<usize>,
|
||||
fail_fast: Option<NonZeroUsize>,
|
||||
quiet: bool,
|
||||
allow_none: bool,
|
||||
filter: Option<String>,
|
||||
|
|
|
@ -469,7 +469,7 @@ pub async fn run_tests(
|
|||
doc_modules: Vec<ModuleSpecifier>,
|
||||
test_modules: Vec<ModuleSpecifier>,
|
||||
no_run: bool,
|
||||
fail_fast: Option<usize>,
|
||||
fail_fast: Option<NonZeroUsize>,
|
||||
quiet: bool,
|
||||
allow_none: bool,
|
||||
filter: Option<String>,
|
||||
|
@ -621,7 +621,7 @@ pub async fn run_tests(
|
|||
}
|
||||
|
||||
if let Some(x) = fail_fast {
|
||||
if summary.failed >= x {
|
||||
if summary.failed >= x.get() {
|
||||
break;
|
||||
}
|
||||
}
|
||||
|
|
Loading…
Reference in a new issue