From dd77ffa6ddd6d4e9a8fe5e2c29627760e75b3c59 Mon Sep 17 00:00:00 2001 From: Mingwei Samuel Date: Wed, 15 Nov 2023 11:00:19 -0800 Subject: [PATCH] Allow multiple error message output from `match_v5_get[_timeline]` test helpers --- riven/tests/testutils.rs | 21 +++++++++++++++++---- 1 file changed, 17 insertions(+), 4 deletions(-) diff --git a/riven/tests/testutils.rs b/riven/tests/testutils.rs index d1e9dd9..ae0cb31 100644 --- a/riven/tests/testutils.rs +++ b/riven/tests/testutils.rs @@ -1,5 +1,7 @@ #![allow(dead_code)] +use std::future::Future; + use lazy_static::lazy_static; use riven::consts::{PlatformRoute, QueueType, RegionalRoute}; @@ -157,8 +159,7 @@ pub async fn match_v5_get( } Ok(()) }); - futures::future::try_join_all(futures).await?; - Ok(()) + join_all_future_errs(futures).await } pub async fn match_v5_get_timeline( @@ -191,6 +192,18 @@ pub async fn match_v5_get_timeline( } Ok(()) }); - futures::future::try_join_all(futures).await?; - Ok(()) + join_all_future_errs(futures).await +} + +/// Joins all futures and keeps ALL error messages, separated by newlines. +async fn join_all_future_errs( + result_tasks: impl Iterator>>, +) -> Result<(), String> { + futures::future::join_all(result_tasks) + .await + .into_iter() + .filter_map(Result::err) + .reduce(|a, b| a + "\n" + &b) + .map(Err) + .unwrap_or(Ok(())) }