mirror of
https://github.com/cargo-bins/cargo-binstall.git
synced 2025-06-16 23:56:37 +00:00
Fix test failure: Retry on rate limit
Signed-off-by: Jiahao XU <Jiahao_XU@outlook.com>
This commit is contained in:
parent
6b3e38453f
commit
c9fb2f4e64
1 changed files with 33 additions and 14 deletions
|
@ -311,10 +311,13 @@ impl GhApiClient {
|
||||||
mod test {
|
mod test {
|
||||||
use super::*;
|
use super::*;
|
||||||
use compact_str::{CompactString, ToCompactString};
|
use compact_str::{CompactString, ToCompactString};
|
||||||
use std::{env, num::NonZeroU16};
|
use std::{env, num::NonZeroU16, time::Duration};
|
||||||
|
use tokio::time::sleep;
|
||||||
use tracing::subscriber::set_global_default;
|
use tracing::subscriber::set_global_default;
|
||||||
use tracing_subscriber::{filter::LevelFilter, fmt::fmt};
|
use tracing_subscriber::{filter::LevelFilter, fmt::fmt};
|
||||||
|
|
||||||
|
static DEFAULT_RETRY_AFTER: Duration = Duration::from_secs(1);
|
||||||
|
|
||||||
mod cargo_binstall_v0_20_1 {
|
mod cargo_binstall_v0_20_1 {
|
||||||
use super::{CompactString, GhRelease, GhRepo};
|
use super::{CompactString, GhRelease, GhRepo};
|
||||||
|
|
||||||
|
@ -553,7 +556,16 @@ mod test {
|
||||||
|
|
||||||
tests.push((
|
tests.push((
|
||||||
Some(RepoInfo::new(repo.clone(), true)),
|
Some(RepoInfo::new(repo.clone(), true)),
|
||||||
tokio::spawn(async move { client.get_repo_info(&repo).await }),
|
tokio::spawn(async move {
|
||||||
|
loop {
|
||||||
|
match client.get_repo_info(&repo).await {
|
||||||
|
Err(GhApiError::RateLimit { retry_after }) => {
|
||||||
|
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
|
||||||
|
}
|
||||||
|
res => break res,
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}),
|
||||||
));
|
));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
@ -618,20 +630,27 @@ mod test {
|
||||||
)
|
)
|
||||||
});
|
});
|
||||||
|
|
||||||
let artifact_url = client
|
let artifact_url = loop {
|
||||||
.has_release_artifact(artifact)
|
match client.has_release_artifact(artifact.clone()).await {
|
||||||
.await
|
Err(GhApiError::RateLimit { retry_after }) => {
|
||||||
.unwrap()
|
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
|
||||||
.unwrap();
|
}
|
||||||
|
res => break res.unwrap().unwrap(),
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
if let Some(browser_download_task) = browser_download_task {
|
if let Some(browser_download_task) = browser_download_task {
|
||||||
let artifact_download_data = client
|
let artifact_download_data = loop {
|
||||||
.download_artifact(artifact_url)
|
match client.download_artifact(artifact_url.clone()).await {
|
||||||
.await
|
Err(GhApiError::RateLimit { retry_after }) => {
|
||||||
.unwrap()
|
sleep(retry_after.unwrap_or(DEFAULT_RETRY_AFTER)).await
|
||||||
.into_bytes()
|
}
|
||||||
.await
|
res => break res.unwrap(),
|
||||||
.unwrap();
|
}
|
||||||
|
}
|
||||||
|
.into_bytes()
|
||||||
|
.await
|
||||||
|
.unwrap();
|
||||||
|
|
||||||
let browser_download_data =
|
let browser_download_data =
|
||||||
browser_download_task.await.unwrap().unwrap();
|
browser_download_task.await.unwrap().unwrap();
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue