diff --git a/crates/debugging/src/trace/collect.rs b/crates/debugging/src/trace/collect.rs index ceb81083a6..d1771027a0 100644 --- a/crates/debugging/src/trace/collect.rs +++ b/crates/debugging/src/trace/collect.rs @@ -15,7 +15,7 @@ use starknet_api::execution_utils::format_panic_data; pub struct Collector<'a> { call_trace: &'a CallTrace, - context: &'a Context, + context: &'a Context<'a>, } impl<'a> Collector<'a> { diff --git a/crates/debugging/src/trace/context.rs b/crates/debugging/src/trace/context.rs index 2c190ccb30..fcceaa8c8d 100644 --- a/crates/debugging/src/trace/context.rs +++ b/crates/debugging/src/trace/context.rs @@ -1,23 +1,19 @@ use crate::Components; use crate::contracts_data_store::ContractsDataStore; -use cheatnet::forking::data::ForkData; -use cheatnet::runtime_extensions::forge_runtime_extension::contracts_data::ContractsData; /// Context is a structure that holds the necessary data for creating a [`Trace`](crate::Trace). -pub struct Context { - contracts_data_store: ContractsDataStore, +pub struct Context<'a> { + contracts_data_store: &'a ContractsDataStore, components: Components, } -impl Context { - /// Creates a new instance of [`Context`] from a given `cheatnet` [`ContractsData`], [`ForkData`] and [`Components`]. +impl<'a> Context<'a> { + /// Creates a new instance of [`Context`] from a given [`ContractsDataStore`] and [`Components`]. #[must_use] pub fn new( - contracts_data: &ContractsData, - fork_data: &ForkData, + contracts_data_store: &'a ContractsDataStore, components: Components, - ) -> Self { - let contracts_data_store = ContractsDataStore::new(contracts_data, fork_data); + ) -> Context<'a> { Self { contracts_data_store, components, @@ -27,7 +23,7 @@ impl Context { /// Returns a reference to the [`ContractsDataStore`]. #[must_use] pub fn contracts_data_store(&self) -> &ContractsDataStore { - &self.contracts_data_store + self.contracts_data_store } /// Returns a reference to the [`Components`]. diff --git a/crates/forge-runner/src/debugging/mod.rs b/crates/forge-runner/src/debugging/mod.rs index c3c76f8c19..b028952b2e 100644 --- a/crates/forge-runner/src/debugging/mod.rs +++ b/crates/forge-runner/src/debugging/mod.rs @@ -2,22 +2,20 @@ mod args; mod component; mod trace_verbosity; -use cheatnet::forking::data::ForkData; -use cheatnet::runtime_extensions::forge_runtime_extension::contracts_data::ContractsData; use cheatnet::trace_data::CallTrace; pub use args::TraceArgs; +use debugging::ContractsDataStore; pub use trace_verbosity::TraceVerbosity; #[must_use] pub fn build_debugging_trace( call_trace: &CallTrace, - contracts_data: &ContractsData, + contracts_data_store: &ContractsDataStore, trace_args: &TraceArgs, test_name: String, - fork_data: &ForkData, ) -> Option { let components = trace_args.to_components()?; - let context = debugging::Context::new(contracts_data, fork_data, components); + let context = debugging::Context::new(contracts_data_store, components); Some(debugging::Trace::new(call_trace, &context, test_name)) } diff --git a/crates/forge-runner/src/running.rs b/crates/forge-runner/src/running.rs index a2925d466a..ede702ba1b 100644 --- a/crates/forge-runner/src/running.rs +++ b/crates/forge-runner/src/running.rs @@ -30,6 +30,7 @@ use cheatnet::runtime_extensions::forge_runtime_extension::{ }; use cheatnet::state::{BlockInfoReader, CheatnetState, EncounteredErrors, ExtendedStateReader}; use cheatnet::trace_data::CallTrace; +use debugging::ContractsDataStore; use execution::finalize_execution; use hints::hints_by_representation; use rand::prelude::StdRng; @@ -435,10 +436,9 @@ fn extract_test_case_summary( test_statistics: (), debugging_trace: build_debugging_trace( &run_error.call_trace.borrow(), - contracts_data, + &ContractsDataStore::new(contracts_data, &run_error.fork_data), trace_args, case.name.clone(), - &run_error.fork_data, ), } } diff --git a/crates/forge-runner/src/test_case_summary.rs b/crates/forge-runner/src/test_case_summary.rs index 44097e3c8f..20ff5304ec 100644 --- a/crates/forge-runner/src/test_case_summary.rs +++ b/crates/forge-runner/src/test_case_summary.rs @@ -294,20 +294,17 @@ impl TestCaseSummary { ) -> Self { let name = test_case.name.clone(); + let contracts_data_store = ContractsDataStore::new(contracts_data, &fork_data); let debugging_trace = build_debugging_trace( &call_trace.borrow(), - contracts_data, + &contracts_data_store, trace_args, name.clone(), - &fork_data, ); let gas_info = SingleTestGasInfo::new(gas_used); let gas_info = if gas_report_enabled { - gas_info.get_with_report_data( - &call_trace.borrow(), - &ContractsDataStore::new(contracts_data, &fork_data), - ) + gas_info.get_with_report_data(&call_trace.borrow(), &contracts_data_store) } else { gas_info };