diff --git a/Cargo.lock b/Cargo.lock index 6338e444..3509b24e 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -354,6 +354,7 @@ version = "0.0.0" dependencies = [ "binstalk-downloader", "compact_str", + "once_cell", "percent-encoding", "serde", "serde-tuple-vec-map", diff --git a/crates/binstalk-git-repo-api/Cargo.toml b/crates/binstalk-git-repo-api/Cargo.toml index 49dd38e7..cc088b81 100644 --- a/crates/binstalk-git-repo-api/Cargo.toml +++ b/crates/binstalk-git-repo-api/Cargo.toml @@ -26,3 +26,4 @@ url = "2.3.1" [dev-dependencies] binstalk-downloader = { version = "0.11.1", path = "../binstalk-downloader" } tracing-subscriber = "0.3" +once_cell = "1" diff --git a/crates/binstalk-git-repo-api/src/gh_api_client.rs b/crates/binstalk-git-repo-api/src/gh_api_client.rs index bc480f67..bcf2940b 100644 --- a/crates/binstalk-git-repo-api/src/gh_api_client.rs +++ b/crates/binstalk-git-repo-api/src/gh_api_client.rs @@ -313,6 +313,7 @@ impl GhApiClient { mod test { use super::*; use compact_str::{CompactString, ToCompactString}; + use once_cell::sync::OnceCell; use std::{env, num::NonZeroU16, time::Duration}; use tokio::time::sleep; use tracing::subscriber::set_global_default; @@ -490,14 +491,20 @@ mod test { } fn create_remote_client() -> remote::Client { - remote::Client::new( - concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION")), - None, - NonZeroU16::new(200).unwrap(), - 1.try_into().unwrap(), - [], - ) - .unwrap() + static CLIENT: OnceCell = OnceCell::new(); + + CLIENT + .get_or_init(|| { + remote::Client::new( + concat!(env!("CARGO_PKG_NAME"), "/", env!("CARGO_PKG_VERSION")), + None, + NonZeroU16::new(200).unwrap(), + 1.try_into().unwrap(), + [], + ) + .unwrap() + }) + .clone() } /// Mark this as an async fn so that you won't accidentally use it in