Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion crates/debugging/src/trace/collect.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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> {
Expand Down
18 changes: 7 additions & 11 deletions crates/debugging/src/trace/context.rs
Original file line number Diff line number Diff line change
@@ -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,
Expand All @@ -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`].
Expand Down
8 changes: 3 additions & 5 deletions crates/forge-runner/src/debugging/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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<debugging::Trace> {
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))
}
4 changes: 2 additions & 2 deletions crates/forge-runner/src/running.rs
Original file line number Diff line number Diff line change
Expand Up @@ -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;
Expand Down Expand Up @@ -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,
),
}
}
Expand Down
9 changes: 3 additions & 6 deletions crates/forge-runner/src/test_case_summary.rs
Original file line number Diff line number Diff line change
Expand Up @@ -294,20 +294,17 @@ impl TestCaseSummary<Single> {
) -> 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
};
Expand Down
Loading