Compare commits

..

9 Commits

Author SHA1 Message Date
Omar Abdulla b6f1f6e6af Ignore the tx mine test 2025-11-01 08:21:39 +03:00
Omar Abdulla 6e8187b135 Update the commit hash of the polkadot sdk 2025-11-01 07:56:59 +03:00
Omar Abdulla 310925de07 Update tests 2025-11-01 07:53:22 +03:00
Omar Abdulla bb98c96c9d fix machete 2025-11-01 07:15:26 +03:00
Omar Abdulla 1d481b314c Update the CI 2025-11-01 06:53:19 +03:00
Omar Abdulla 36ef669341 Add the step path to the failure logs 2025-11-01 06:45:29 +03:00
Omar Abdulla e7ebd0c034 Update references to the substrate node 2025-11-01 05:26:26 +03:00
Omar Abdulla ad20b99e0a Update the ci for the revive-dev-node 2025-11-01 05:22:36 +03:00
Omar Abdulla 234e59bbea Remove references to kitchensink 2025-11-01 04:57:33 +03:00
10 changed files with 19 additions and 58 deletions
-4
View File
@@ -13,7 +13,3 @@ workdir
!/schema.json !/schema.json
!/dev-genesis.json !/dev-genesis.json
# Ignore all shell scripts except for the `run_tests.sh` script
*.sh
!run_tests.sh
+1 -5
View File
@@ -16,7 +16,6 @@ use alloy::{
primitives::{B256, FixedBytes, U256}, primitives::{B256, FixedBytes, U256},
signers::local::PrivateKeySigner, signers::local::PrivateKeySigner,
}; };
use anyhow::Context as _;
use clap::{Parser, ValueEnum, ValueHint}; use clap::{Parser, ValueEnum, ValueHint};
use revive_dt_common::types::{ParsedTestSpecifier, PlatformIdentifier}; use revive_dt_common::types::{ParsedTestSpecifier, PlatformIdentifier};
use semver::Version; use semver::Version;
@@ -1080,10 +1079,7 @@ impl FromStr for WorkingDirectoryConfiguration {
fn from_str(s: &str) -> Result<Self, Self::Err> { fn from_str(s: &str) -> Result<Self, Self::Err> {
match s { match s {
"" => Ok(Default::default()), "" => Ok(Default::default()),
_ => PathBuf::from(s) _ => Ok(Self::Path(PathBuf::from(s))),
.canonicalize()
.context("Failed to canonicalize the working directory path")
.map(Self::Path),
} }
} }
} }
+6 -14
View File
@@ -359,11 +359,7 @@ where
Ok(()) Ok(())
} }
#[instrument( #[instrument(level = "info", skip_all)]
level = "info",
skip_all,
fields(block_number = tracing::field::Empty)
)]
pub async fn execute_function_call( pub async fn execute_function_call(
&mut self, &mut self,
_: &StepPath, _: &StepPath,
@@ -377,7 +373,6 @@ where
.handle_function_call_execution(step, deployment_receipts) .handle_function_call_execution(step, deployment_receipts)
.await .await
.context("Failed to handle the function call execution")?; .context("Failed to handle the function call execution")?;
tracing::Span::current().record("block_number", execution_receipt.block_number);
let tracing_result = self let tracing_result = self
.handle_function_call_call_frame_tracing(execution_receipt.transaction_hash) .handle_function_call_call_frame_tracing(execution_receipt.transaction_hash)
.await .await
@@ -603,10 +598,7 @@ where
let expected = !assertion.exception; let expected = !assertion.exception;
let actual = receipt.status(); let actual = receipt.status();
if actual != expected { if actual != expected {
let revert_reason = tracing_result let revert_reason = tracing_result.revert_reason.as_ref();
.revert_reason
.as_ref()
.or(tracing_result.error.as_ref());
tracing::error!( tracing::error!(
expected, expected,
actual, actual,
@@ -621,8 +613,8 @@ where
} }
// Handling the calldata assertion // Handling the calldata assertion
if let Some(ref expected_output) = assertion.return_data { if let Some(ref expected_calldata) = assertion.return_data {
let expected = expected_output; let expected = expected_calldata;
let actual = &tracing_result.output.as_ref().unwrap_or_default(); let actual = &tracing_result.output.as_ref().unwrap_or_default();
if !expected if !expected
.is_equivalent(actual, resolver.as_ref(), resolution_context) .is_equivalent(actual, resolver.as_ref(), resolution_context)
@@ -633,9 +625,9 @@ where
?receipt, ?receipt,
?expected, ?expected,
%actual, %actual,
"Output assertion failed" "Calldata assertion failed"
); );
anyhow::bail!("Output assertion failed - Expected {expected:?} but got {actual}",); anyhow::bail!("Calldata assertion failed - Expected {expected:?} but got {actual}",);
} }
} }
+5 -14
View File
@@ -1,6 +1,5 @@
use std::{collections::HashMap, fmt::Display, str::FromStr}; use std::{collections::HashMap, fmt::Display, str::FromStr};
use alloy::hex::ToHexExt;
use alloy::primitives::{FixedBytes, utils::parse_units}; use alloy::primitives::{FixedBytes, utils::parse_units};
use alloy::{ use alloy::{
eips::BlockNumberOrTag, eips::BlockNumberOrTag,
@@ -687,8 +686,8 @@ impl Calldata {
Calldata::Compound(items) => { Calldata::Compound(items) => {
stream::iter(items.iter().zip(other.chunks(32))) stream::iter(items.iter().zip(other.chunks(32)))
.map(|(this, other)| async move { .map(|(this, other)| async move {
// The MatterLabs format supports wildcards and therefore we also need to // The matterlabs format supports wildcards and therefore we
// support them. // also need to support them.
if this.as_ref() == "*" { if this.as_ref() == "*" {
return Ok::<_, anyhow::Error>(true); return Ok::<_, anyhow::Error>(true);
} }
@@ -706,7 +705,6 @@ impl Calldata {
.await .await
.context("Failed to resolve calldata item during equivalence check")?; .context("Failed to resolve calldata item during equivalence check")?;
let other = U256::from_be_slice(&other); let other = U256::from_be_slice(&other);
Ok(this == other) Ok(this == other)
}) })
.buffered(0xFF) .buffered(0xFF)
@@ -719,7 +717,7 @@ impl Calldata {
} }
impl CalldataItem { impl CalldataItem {
#[instrument(level = "info", skip_all, err(Debug))] #[instrument(level = "info", skip_all, err)]
async fn resolve( async fn resolve(
&self, &self,
resolver: &(impl ResolverApi + ?Sized), resolver: &(impl ResolverApi + ?Sized),
@@ -770,14 +768,7 @@ impl CalldataItem {
match stack.as_slice() { match stack.as_slice() {
// Empty stack means that we got an empty compound calldata which we resolve to zero. // Empty stack means that we got an empty compound calldata which we resolve to zero.
[] => Ok(U256::ZERO), [] => Ok(U256::ZERO),
[CalldataToken::Item(item)] => { [CalldataToken::Item(item)] => Ok(*item),
tracing::debug!(
original_item = ?self,
resolved_item = item.to_be_bytes::<32>().encode_hex(),
"Resolution Done"
);
Ok(*item)
}
_ => Err(anyhow::anyhow!( _ => Err(anyhow::anyhow!(
"Invalid calldata arithmetic operation - Invalid stack" "Invalid calldata arithmetic operation - Invalid stack"
)), )),
@@ -907,7 +898,7 @@ impl<T: AsRef<str>> CalldataToken<T> {
let block_hash = resolver let block_hash = resolver
.block_hash(desired_block_number.into()) .block_hash(desired_block_number.into())
.await .await
.context(format!("Failed to resolve the block hash of block number {desired_block_number}"))?; .context("Failed to resolve block hash for desired block number")?;
Ok(U256::from_be_bytes(block_hash.0)) Ok(U256::from_be_bytes(block_hash.0))
} else if item == Self::BLOCK_NUMBER_VARIABLE { } else if item == Self::BLOCK_NUMBER_VARIABLE {
@@ -251,10 +251,6 @@ impl SubstrateNode {
.arg(format!("ws://127.0.0.1:{substrate_rpc_port}")) .arg(format!("ws://127.0.0.1:{substrate_rpc_port}"))
.arg("--rpc-max-connections") .arg("--rpc-max-connections")
.arg(u32::MAX.to_string()) .arg(u32::MAX.to_string())
.arg("--index-last-n-blocks")
.arg(1_000u32.to_string())
.arg("--cache-size")
.arg(1_000u32.to_string())
.env("RUST_LOG", Self::PROXY_LOG_ENV) .env("RUST_LOG", Self::PROXY_LOG_ENV)
.stdout(stdout_file) .stdout(stdout_file)
.stderr(stderr_file); .stderr(stderr_file);
@@ -62,10 +62,7 @@ where
) -> TransportResult<Self::Fillable> { ) -> TransportResult<Self::Fillable> {
match self.inner.prepare(provider, tx).await { match self.inner.prepare(provider, tx).await {
Ok(fill) => Ok(Some(fill)), Ok(fill) => Ok(Some(fill)),
Err(err) => { Err(_) => Ok(None),
tracing::debug!(error = ?err, "Gas Provider Estimation Failed, using fallback");
Ok(None)
}
} }
} }
+1 -1
View File
@@ -104,7 +104,7 @@ where
}; };
debug!(%tx_hash, "Submitted Transaction"); debug!(%tx_hash, "Submitted Transaction");
pending_transaction.set_timeout(Some(Duration::from_secs(120))); pending_transaction.set_timeout(Some(Duration::from_secs(240)));
let tx_hash = pending_transaction.watch().await.context(format!( let tx_hash = pending_transaction.watch().await.context(format!(
"Transaction inclusion watching timeout for {tx_hash}" "Transaction inclusion watching timeout for {tx_hash}"
))?; ))?;
+2 -9
View File
@@ -2,13 +2,12 @@
use std::{ use std::{
collections::HashMap, collections::HashMap,
str::FromStr,
sync::{LazyLock, Mutex}, sync::{LazyLock, Mutex},
}; };
use revive_dt_common::types::VersionOrRequirement; use revive_dt_common::types::VersionOrRequirement;
use semver::{Version, VersionReq}; use semver::Version;
use sha2::{Digest, Sha256}; use sha2::{Digest, Sha256};
use crate::list::List; use crate::list::List;
@@ -66,9 +65,6 @@ impl SolcDownloader {
target: &'static str, target: &'static str,
list: &'static str, list: &'static str,
) -> anyhow::Result<Self> { ) -> anyhow::Result<Self> {
static MAXIMUM_COMPILER_VERSION_REQUIREMENT: LazyLock<VersionReq> =
LazyLock::new(|| VersionReq::from_str("<=0.8.30").unwrap());
let version_or_requirement = version.into(); let version_or_requirement = version.into();
match version_or_requirement { match version_or_requirement {
VersionOrRequirement::Version(version) => Ok(Self { VersionOrRequirement::Version(version) => Ok(Self {
@@ -83,10 +79,7 @@ impl SolcDownloader {
.builds .builds
.into_iter() .into_iter()
.map(|build| build.version) .map(|build| build.version)
.filter(|version| { .filter(|version| requirement.matches(version))
MAXIMUM_COMPILER_VERSION_REQUIREMENT.matches(version)
&& requirement.matches(version)
})
.max() .max()
else { else {
anyhow::bail!("Failed to find a version that satisfies {requirement:?}"); anyhow::bail!("Failed to find a version that satisfies {requirement:?}");