diff options
author | Blaž Hrastnik | 2022-06-21 16:59:02 +0000 |
---|---|---|
committer | GitHub | 2022-06-21 16:59:02 +0000 |
commit | 19dccade7c44619bfa414a711fe72a612e4ca358 (patch) | |
tree | d0a502bc095c1619cfb94236782f42d595af0197 /helix-term/src/job.rs | |
parent | a17626a822b36d4de3146c2d410f976e19dd189c (diff) | |
parent | 458b89e21dcf76bbf9ca6ba237bd334f4922722d (diff) |
Merge pull request #2359 from dead10ck/test-harness
Integration testing harness
Diffstat (limited to 'helix-term/src/job.rs')
-rw-r--r-- | helix-term/src/job.rs | 21 |
1 files changed, 17 insertions, 4 deletions
diff --git a/helix-term/src/job.rs b/helix-term/src/job.rs index a6a77021..e5147992 100644 --- a/helix-term/src/job.rs +++ b/helix-term/src/job.rs @@ -2,7 +2,7 @@ use helix_view::Editor; use crate::compositor::Compositor; -use futures_util::future::{self, BoxFuture, Future, FutureExt}; +use futures_util::future::{BoxFuture, Future, FutureExt}; use futures_util::stream::{FuturesUnordered, StreamExt}; pub type Callback = Box<dyn FnOnce(&mut Editor, &mut Compositor) + Send>; @@ -93,8 +93,21 @@ impl Jobs { } /// Blocks until all the jobs that need to be waited on are done. - pub async fn finish(&mut self) { - let wait_futures = std::mem::take(&mut self.wait_futures); - wait_futures.for_each(|_| future::ready(())).await + pub async fn finish(&mut self) -> anyhow::Result<()> { + log::debug!("waiting on jobs..."); + let mut wait_futures = std::mem::take(&mut self.wait_futures); + while let (Some(job), tail) = wait_futures.into_future().await { + match job { + Ok(_) => { + wait_futures = tail; + } + Err(e) => { + self.wait_futures = tail; + return Err(e); + } + } + } + + Ok(()) } } |