diff --git a/chains/ethereum/server/src/lib.rs b/chains/ethereum/server/src/lib.rs index 2c267b22..f9c5b7ef 100644 --- a/chains/ethereum/server/src/lib.rs +++ b/chains/ethereum/server/src/lib.rs @@ -209,6 +209,8 @@ impl BlockchainClient for MaybeWsEthereumClient { mod tests { use super::*; use alloy_sol_types::{sol, SolCall}; + use anyhow::{Ok, Result}; + use ethabi::ethereum_types::H256; use ethers_solc::{artifacts::Source, CompilerInput, EvmVersion, Solc}; use rosetta_config_ethereum::{AtBlock, CallResult}; use rosetta_docker::{run_test, Env}; @@ -313,6 +315,7 @@ mod tests { let topic = receipt.logs[0].topics[0]; let expected = H256(sha3::Keccak256::digest("AnEvent()").into()); assert_eq!(topic, expected); + Ok(()) }) .await; Ok(()) @@ -360,6 +363,7 @@ mod tests { .to_vec() ) ); + Ok(()) }) .await; Ok(()) diff --git a/rosetta-docker/src/lib.rs b/rosetta-docker/src/lib.rs index 46070c59..10f3b2e7 100644 --- a/rosetta-docker/src/lib.rs +++ b/rosetta-docker/src/lib.rs @@ -310,11 +310,12 @@ async fn wait_for_http + Send>(url: S, container: &Container) -> R }) } +#[allow(clippy::future_not_send)] pub async fn run_test(env: Env, cb: F) where T: Sync + Send + 'static + rosetta_core::BlockchainClient, - Fut: Future + Send + 'static, - F: FnOnce(&'static mut Env) -> Fut, + Fut: Future> + Send + 'static, + F: FnOnce(&'static mut Env) -> Fut + Sync + Send, { // Convert the context into a raw pointer let ptr = Box::into_raw(Box::new(env)); @@ -340,7 +341,7 @@ where #[cfg(feature = "tests")] pub mod tests { use super::Env; - use anyhow::Result; + use anyhow::{Ok, Result}; use nanoid::nanoid; use rosetta_core::{types::PartialBlockIdentifier, BlockchainClient, BlockchainConfig}; use std::future::Future; @@ -352,7 +353,7 @@ pub mod tests { ) } - #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc)] + #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc, clippy::future_not_send)] pub async fn network_status( start_connector: F, config: BlockchainConfig, @@ -373,39 +374,37 @@ pub mod tests { let expected_genesis = client.genesis_block().clone(); let actual_genesis = client .block(&PartialBlockIdentifier { index: Some(0), hash: None }) - .await - .unwrap() + .await? .block_identifier; assert_eq!(expected_genesis, actual_genesis); // Check if the current block is consistent - let expected_current = client.current_block().await.unwrap(); + let expected_current = client.current_block().await?; let actual_current = client .block(&PartialBlockIdentifier { index: None, hash: Some(expected_current.hash.clone()), }) - .await - .unwrap() + .await? .block_identifier; assert_eq!(expected_current, actual_current); // Check if the finalized block is consistent - let expected_finalized = client.finalized_block().await.unwrap(); + let expected_finalized = client.finalized_block().await?; let actual_finalized = client .block(&PartialBlockIdentifier { index: None, hash: Some(expected_finalized.hash.clone()), }) - .await - .unwrap() + .await? .block_identifier; assert_eq!(expected_finalized, actual_finalized); + Ok(()) }) .await; Ok(()) } - #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc)] + #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc, clippy::future_not_send)] pub async fn account(start_connector: F, config: BlockchainConfig) -> Result<()> where T: BlockchainClient, @@ -416,18 +415,19 @@ pub mod tests { let env = Env::new(&format!("{env_id}-account"), config.clone(), start_connector).await?; crate::run_test(env, |env| async move { let value = 100 * u128::pow(10, config.currency_decimals); - let wallet = env.ephemeral_wallet().await.unwrap(); - wallet.faucet(value).await.unwrap(); - let amount = wallet.balance().await.unwrap(); + let wallet = env.ephemeral_wallet().await?; + wallet.faucet(value).await?; + let amount = wallet.balance().await?; assert_eq!(amount.value, value.to_string()); assert_eq!(amount.currency, config.currency()); assert!(amount.metadata.is_none()); + Ok(()) }) .await; Ok(()) } - #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc)] + #[allow(clippy::missing_panics_doc, clippy::missing_errors_doc, clippy::future_not_send)] pub async fn construction(start_connector: F, config: BlockchainConfig) -> Result<()> where T: BlockchainClient, @@ -441,25 +441,26 @@ pub mod tests { crate::run_test(env, |env| async move { let faucet = 100 * u128::pow(10, config.currency_decimals); let value = u128::pow(10, config.currency_decimals); - let alice = env.ephemeral_wallet().await.unwrap(); - let bob = env.ephemeral_wallet().await.unwrap(); + let alice = env.ephemeral_wallet().await?; + let bob = env.ephemeral_wallet().await?; assert_ne!(alice.public_key(), bob.public_key()); // Alice and bob have no balance - let balance = alice.balance().await.unwrap(); + let balance = alice.balance().await?; assert_eq!(balance.value, "0"); - let balance = bob.balance().await.unwrap(); + let balance = bob.balance().await?; assert_eq!(balance.value, "0"); // Transfer faucets to alice - alice.faucet(faucet).await.unwrap(); - let balance = alice.balance().await.unwrap(); + alice.faucet(faucet).await?; + let balance = alice.balance().await?; assert_eq!(balance.value, faucet.to_string()); // Alice transfers to bob - alice.transfer(bob.account(), value).await.unwrap(); - let amount = bob.balance().await.unwrap(); + alice.transfer(bob.account(), value).await?; + let amount = bob.balance().await?; assert_eq!(amount.value, value.to_string()); + Ok(()) }) .await; Ok(())