From a155a1f7a8b0733e46483969394c9a2408c28adf Mon Sep 17 00:00:00 2001 From: Adrian Heine Date: Mon, 19 Oct 2020 23:45:11 +0200 Subject: [PATCH] Wait for other executions on failure --- src/async_utils.rs | 1 + src/setup/core.rs | 15 ++++++++++----- 2 files changed, 11 insertions(+), 5 deletions(-) diff --git a/src/async_utils.rs b/src/async_utils.rs index c656c53..56a0076 100644 --- a/src/async_utils.rs +++ b/src/async_utils.rs @@ -16,6 +16,7 @@ pub fn run(future: F) -> F::Output { .unwrap() .block_on(future) } +pub use tokio::join; pub use tokio::try_join; #[derive(Debug)] diff --git a/src/setup/core.rs b/src/setup/core.rs index 1e4df8f..3140e4c 100644 --- a/src/setup/core.rs +++ b/src/setup/core.rs @@ -2,7 +2,7 @@ use super::runnable::Runnable; use super::setup::Setup; use super::util::{AddableResource, InternalAddResult}; use super::SymbolRunner; -use crate::async_utils::try_join; +use crate::async_utils::join; use crate::loggers::{Logger, StoringLogger}; use crate::resources::{FromArtifact, FromResource}; use crate::symbols::Symbol; @@ -36,11 +36,16 @@ macro_rules! add_generic { #[allow(unused)] async fn add_generic(&self, ($($name,)*): ($($name,)*)) -> Result<(StoringLogger, ($($name::Artifact,)*), bool), (StoringLogger, Box)> { - let x: Result<_, _> = try_join!($(self.add($name, false),)*); - let ($($name,)*) = x?; + let ($($name,)*) = join!($(self.add($name, false),)*); let logger = StoringLogger::default(); - $(logger.put($name.0.release());)* - Ok((logger, ($($name.1,)*), false $(|| $name.2)*)) + let mut did_run_any = false; + $( + let (log, artifact, did_run) = $name?; + logger.put(log.release()); + did_run_any = did_run_any || did_run; + let $name = artifact; + )* + Ok((logger, ($($name,)*), did_run_any)) } } );