#[cfg(feature = "tokio")]
use qubit_retry::{
AttemptFailure,
AttemptFailureDecision,
Retry,
RetryContext,
};
#[cfg(feature = "tokio")]
#[tokio::test]
async fn test_async_attempt_failure_is_observable_through_failure_listener() {
let retry = Retry::<&'static str>::builder()
.max_attempts(1)
.no_delay()
.on_failure(
|failure: &AttemptFailure<&'static str>, context: &RetryContext| {
assert_eq!(1, context.attempt());
assert_eq!(Some(&"boom"), failure.as_error());
AttemptFailureDecision::Abort
},
)
.build()
.unwrap();
assert!(
retry
.async_run(|| async { Err::<(), _>("boom") })
.await
.is_err()
);
}