refactor(stub): always use std Mutex (#1091)

This commit is contained in:
Paolo Barbolini
2025-05-24 16:34:09 +02:00
committed by GitHub
parent 629967ac98
commit bfed19e6ad

View File

@@ -43,13 +43,11 @@
use std::{ use std::{
error::Error as StdError, error::Error as StdError,
fmt, fmt,
sync::{Arc, Mutex as StdMutex}, sync::{Arc, Mutex},
}; };
#[cfg(any(feature = "tokio1", feature = "async-std1"))] #[cfg(any(feature = "tokio1", feature = "async-std1"))]
use async_trait::async_trait; use async_trait::async_trait;
#[cfg(any(feature = "tokio1", feature = "async-std1"))]
use futures_util::lock::Mutex as FuturesMutex;
#[cfg(any(feature = "tokio1", feature = "async-std1"))] #[cfg(any(feature = "tokio1", feature = "async-std1"))]
use crate::AsyncTransport; use crate::AsyncTransport;
@@ -72,7 +70,7 @@ impl StdError for Error {}
#[derive(Debug, Clone)] #[derive(Debug, Clone)]
pub struct StubTransport { pub struct StubTransport {
response: Result<(), Error>, response: Result<(), Error>,
message_log: Arc<StdMutex<Vec<(Envelope, String)>>>, message_log: Arc<Mutex<Vec<(Envelope, String)>>>,
} }
/// This transport logs messages and always returns the given response /// This transport logs messages and always returns the given response
@@ -81,7 +79,7 @@ pub struct StubTransport {
#[cfg_attr(docsrs, doc(cfg(any(feature = "tokio1", feature = "async-std1"))))] #[cfg_attr(docsrs, doc(cfg(any(feature = "tokio1", feature = "async-std1"))))]
pub struct AsyncStubTransport { pub struct AsyncStubTransport {
response: Result<(), Error>, response: Result<(), Error>,
message_log: Arc<FuturesMutex<Vec<(Envelope, String)>>>, message_log: Arc<Mutex<Vec<(Envelope, String)>>>,
} }
impl StubTransport { impl StubTransport {
@@ -89,7 +87,7 @@ impl StubTransport {
pub fn new(response: Result<(), Error>) -> Self { pub fn new(response: Result<(), Error>) -> Self {
Self { Self {
response, response,
message_log: Arc::new(StdMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
@@ -97,7 +95,7 @@ impl StubTransport {
pub fn new_ok() -> Self { pub fn new_ok() -> Self {
Self { Self {
response: Ok(()), response: Ok(()),
message_log: Arc::new(StdMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
@@ -105,7 +103,7 @@ impl StubTransport {
pub fn new_error() -> Self { pub fn new_error() -> Self {
Self { Self {
response: Err(Error), response: Err(Error),
message_log: Arc::new(StdMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
@@ -124,7 +122,7 @@ impl AsyncStubTransport {
pub fn new(response: Result<(), Error>) -> Self { pub fn new(response: Result<(), Error>) -> Self {
Self { Self {
response, response,
message_log: Arc::new(FuturesMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
@@ -132,7 +130,7 @@ impl AsyncStubTransport {
pub fn new_ok() -> Self { pub fn new_ok() -> Self {
Self { Self {
response: Ok(()), response: Ok(()),
message_log: Arc::new(FuturesMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
@@ -140,14 +138,14 @@ impl AsyncStubTransport {
pub fn new_error() -> Self { pub fn new_error() -> Self {
Self { Self {
response: Err(Error), response: Err(Error),
message_log: Arc::new(FuturesMutex::new(vec![])), message_log: Arc::new(Mutex::new(vec![])),
} }
} }
/// Return all logged messages sent using [`AsyncTransport::send_raw`] /// Return all logged messages sent using [`AsyncTransport::send_raw`]
#[cfg(any(feature = "tokio1", feature = "async-std1"))] #[cfg(any(feature = "tokio1", feature = "async-std1"))]
pub async fn messages(&self) -> Vec<(Envelope, String)> { pub async fn messages(&self) -> Vec<(Envelope, String)> {
self.message_log.lock().await.clone() self.message_log.lock().unwrap().clone()
} }
} }
@@ -173,7 +171,7 @@ impl AsyncTransport for AsyncStubTransport {
async fn send_raw(&self, envelope: &Envelope, email: &[u8]) -> Result<Self::Ok, Self::Error> { async fn send_raw(&self, envelope: &Envelope, email: &[u8]) -> Result<Self::Ok, Self::Error> {
self.message_log self.message_log
.lock() .lock()
.await .unwrap()
.push((envelope.clone(), String::from_utf8_lossy(email).into())); .push((envelope.clone(), String::from_utf8_lossy(email).into()));
self.response self.response
} }