From 8d9ece5b3d65c8b8e1b98ca5e02b9896a2363677 Mon Sep 17 00:00:00 2001 From: Matthias Schiffer Date: Sat, 6 Apr 2024 23:59:59 +0200 Subject: driver: add --keep-going flag --- crates/driver/src/driver.rs | 4 ++-- crates/driver/src/main.rs | 5 ++++- 2 files changed, 6 insertions(+), 3 deletions(-) diff --git a/crates/driver/src/driver.rs b/crates/driver/src/driver.rs index c401f27..cc4bfbf 100644 --- a/crates/driver/src/driver.rs +++ b/crates/driver/src/driver.rs @@ -402,7 +402,7 @@ impl<'ctx> Driver<'ctx> { && self.tasks_running.is_empty() } - pub fn run(&mut self, runner: &Runner) -> Result { + pub fn run(&mut self, runner: &Runner, keep_going: bool) -> Result { let mut success = true; self.run_tasks(runner)?; @@ -411,7 +411,7 @@ impl<'ctx> Driver<'ctx> { if !self.wait_for_task()? { success = false; } - if success { + if success || keep_going { self.run_tasks(runner)?; } } diff --git a/crates/driver/src/main.rs b/crates/driver/src/main.rs index 44e5e1d..bd08f18 100644 --- a/crates/driver/src/main.rs +++ b/crates/driver/src/main.rs @@ -22,6 +22,9 @@ struct Opts { /// Defaults to the number of available CPUs #[clap(short, long)] jobs: Option, + /// Keep going after some tasks have failed + #[clap(short, long)] + keep_going: bool, /// The tasks to run #[clap(name = "task", required = true)] tasks: Vec, @@ -62,7 +65,7 @@ fn main() { } let taskset = rsv.into_taskset(); let mut driver = driver::Driver::new(&ctx, taskset, force_run).unwrap(); - match driver.run(&runner) { + match driver.run(&runner, opts.keep_going) { Ok(success) => { if !success { std::process::exit(1); -- cgit v1.2.3