mirror of
https://github.com/pezkuwichain/revive-differential-tests.git
synced 2026-04-27 03:17:58 +00:00
Handle exceptions (#54)
* Add support for wrapper types * Move `FilesWithExtensionIterator` to `core::common` * Remove unneeded use of two `HashMap`s * Make metadata structs more typed * Impl new_from for wrapper types * Implement the new input handling logic * Fix edge-case in input handling * Ignore macro doc comment tests * Correct comment * Fix edge-case in deployment order * Handle calldata better * Allow for the use of function signatures * Add support for exceptions * Cached nonce allocator * Fix tests * Add support for address replacement * Cleanup implementation * Cleanup mutability * Wire up address replacement with rest of code * Implement caller replacement * Switch to callframe trace for exceptions * Add a way to skip tests if they don't match the target * Handle values from the metadata files * Remove address replacement * Correct the arguments * Remove empty impl * Remove address replacement * Correct the arguments * Remove empty impl * Fix size_requirement underflow * Add support for wildcards in exceptions * Fix calldata construction of single calldata * Better handling for length in equivalency checks * Make initial balance a constant * Fix size_requirement underflow * Add support for wildcards in exceptions * Fix calldata construction of single calldata * Better handling for length in equivalency checks * Fix tests
This commit is contained in:
@@ -9,6 +9,7 @@ use tokio::{
|
||||
runtime::Builder,
|
||||
sync::{mpsc::UnboundedSender, oneshot},
|
||||
};
|
||||
use tracing::Instrument;
|
||||
|
||||
/// A blocking async executor.
|
||||
///
|
||||
@@ -63,6 +64,11 @@ impl BlockingExecutor {
|
||||
let (tx, mut rx) = tokio::sync::mpsc::unbounded_channel::<TaskMessage>();
|
||||
|
||||
thread::spawn(move || {
|
||||
tracing::info!(
|
||||
thread_id = ?std::thread::current().id(),
|
||||
"Starting async runtime thread"
|
||||
);
|
||||
|
||||
let runtime = Builder::new_current_thread()
|
||||
.enable_all()
|
||||
.build()
|
||||
@@ -107,7 +113,9 @@ impl BlockingExecutor {
|
||||
// in the task message. In doing this conversion, we lose some of the type information since
|
||||
// we're converting R => dyn Any. However, we will perform down-casting on the result to
|
||||
// convert it back into R.
|
||||
let future = Box::pin(async move { Box::new(future.await) as Box<dyn Any + Send> });
|
||||
let future = Box::pin(
|
||||
async move { Box::new(future.await) as Box<dyn Any + Send> }.in_current_span(),
|
||||
);
|
||||
|
||||
let task = TaskMessage::new(future, response_tx);
|
||||
if let Err(error) = STATE.tx.send(task) {
|
||||
|
||||
@@ -2,7 +2,7 @@
|
||||
|
||||
use alloy::eips::BlockNumberOrTag;
|
||||
use alloy::primitives::{Address, BlockHash, BlockNumber, BlockTimestamp, ChainId, U256};
|
||||
use alloy::rpc::types::trace::geth::{DiffMode, GethTrace};
|
||||
use alloy::rpc::types::trace::geth::{DiffMode, GethDebugTracingOptions, GethTrace};
|
||||
use alloy::rpc::types::{TransactionReceipt, TransactionRequest};
|
||||
use anyhow::Result;
|
||||
|
||||
@@ -15,13 +15,14 @@ pub trait EthereumNode {
|
||||
fn execute_transaction(&self, transaction: TransactionRequest) -> Result<TransactionReceipt>;
|
||||
|
||||
/// Trace the transaction in the [TransactionReceipt] and return a [GethTrace].
|
||||
fn trace_transaction(&self, transaction: TransactionReceipt) -> Result<GethTrace>;
|
||||
fn trace_transaction(
|
||||
&self,
|
||||
receipt: &TransactionReceipt,
|
||||
trace_options: GethDebugTracingOptions,
|
||||
) -> Result<GethTrace>;
|
||||
|
||||
/// Returns the state diff of the transaction hash in the [TransactionReceipt].
|
||||
fn state_diff(&self, transaction: TransactionReceipt) -> Result<DiffMode>;
|
||||
|
||||
/// Returns the next available nonce for the given [Address].
|
||||
fn fetch_add_nonce(&self, address: Address) -> Result<u64>;
|
||||
fn state_diff(&self, receipt: &TransactionReceipt) -> Result<DiffMode>;
|
||||
|
||||
/// Returns the ID of the chain that the node is on.
|
||||
fn chain_id(&self) -> Result<ChainId>;
|
||||
|
||||
Reference in New Issue
Block a user