Skip to content

Commit 7297ef5

Browse files
committed
Review changes
1 parent a480f06 commit 7297ef5

File tree

3 files changed

+23
-64
lines changed

3 files changed

+23
-64
lines changed

crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/entry_point.rs

Lines changed: 5 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -77,7 +77,7 @@ pub fn execute_call_entry_point(
7777
// We skip recursion depth validation here.
7878
cheatnet_state
7979
.trace_data
80-
.enter_nested_call(entry_point.clone(), cheated_data);
80+
.enter_nested_call(entry_point.clone(), cheated_data.clone());
8181

8282
if let Some(cheat_status) = get_mocked_function_cheat_status(entry_point, cheatnet_state)
8383
&& let CheatStatus::Cheated(ret_data, _) = (*cheat_status).clone()
@@ -95,6 +95,7 @@ pub fn execute_call_entry_point(
9595
&[],
9696
None,
9797
vec![],
98+
vec![],
9899
);
99100
let tracked_resource = *context
100101
.tracked_resource_stack
@@ -179,14 +180,6 @@ pub fn execute_call_entry_point(
179180
.pop()
180181
.expect("Unexpected empty tracked resource.");
181182

182-
let entrypoint_address = entry_point.code_address.unwrap_or_default();
183-
let signature = cheatnet_state
184-
.get_cheated_execution_info_for_contract(entrypoint_address)
185-
.tx_info
186-
.signature
187-
.as_value()
188-
.unwrap_or_default();
189-
190183
// region: Modified blockifier code
191184
match evaluate_execution_result(
192185
result,
@@ -208,7 +201,7 @@ pub fn execute_call_entry_point(
208201
context,
209202
cheatnet_state,
210203
vm_trace,
211-
signature,
204+
cheated_data.tx_info.signature.unwrap_or_default(),
212205
);
213206
Ok(call_info)
214207
}
@@ -353,6 +346,7 @@ fn remove_syscall_resources_and_exit_non_error_call(
353346
&call_info.execution.l2_to_l1_messages,
354347
vm_trace,
355348
signature,
349+
call_info.execution.events.clone(),
356350
);
357351
}
358352

@@ -375,6 +369,7 @@ fn exit_error_call(
375369
&[],
376370
vm_trace,
377371
vec![],
372+
vec![],
378373
);
379374
}
380375

crates/cheatnet/src/state.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -568,6 +568,7 @@ impl TraceData {
568568
l2_to_l1_messages: &[OrderedL2ToL1Message],
569569
vm_trace: Option<Vec<RelocatedTraceEntry>>,
570570
signature: Vec<Felt>,
571+
events: Vec<OrderedEvent>,
571572
) {
572573
let CallStackElement {
573574
call_trace: last_call,
@@ -588,6 +589,7 @@ impl TraceData {
588589
last_call.result = result;
589590
last_call.vm_trace = vm_trace;
590591
last_call.signature = signature;
592+
last_call.events = events;
591593
}
592594

593595
pub fn add_deploy_without_constructor_node(&mut self) {

crates/forge-runner/src/running.rs

Lines changed: 16 additions & 54 deletions
Original file line numberDiff line numberDiff line change
@@ -4,9 +4,9 @@ use crate::gas::calculate_used_gas;
44
use crate::package_tests::with_config_resolved::{ResolvedForkConfig, TestCaseWithResolvedConfig};
55
use crate::test_case_summary::{Single, TestCaseSummary};
66
use anyhow::{Result, bail};
7-
use blockifier::execution::call_info::{CallInfo, OrderedEvent};
7+
use blockifier::execution::call_info::CallInfo;
88
use blockifier::execution::contract_class::TrackedResource;
9-
use blockifier::execution::entry_point::{CallEntryPoint, EntryPointExecutionContext};
9+
use blockifier::execution::entry_point::EntryPointExecutionContext;
1010
use blockifier::execution::entry_point_execution::{prepare_call_arguments, run_entry_point};
1111
use blockifier::execution::errors::EntryPointExecutionError;
1212
use blockifier::state::cached_state::CachedState;
@@ -25,8 +25,7 @@ use cheatnet::runtime_extensions::forge_runtime_extension::{
2525
update_top_call_l1_resources, update_top_call_resources, update_top_call_vm_trace,
2626
};
2727
use cheatnet::state::{
28-
BlockInfoReader, CallTrace, CallTraceNode, CheatnetState, EncounteredErrors,
29-
ExtendedStateReader,
28+
BlockInfoReader, CallTrace, CheatnetState, EncounteredErrors, ExtendedStateReader,
3029
};
3130
use execution::finalize_execution;
3231
use foundry_ui::UI;
@@ -37,7 +36,6 @@ use runtime::{ExtendedRuntime, StarknetRuntime};
3736
use scarb_oracle_hint_service::OracleHintService;
3837
use starknet_api::execution_resources::GasVector;
3938
use std::cell::RefCell;
40-
use std::collections::HashMap;
4139
use std::default::Default;
4240
use std::marker::PhantomData;
4341
use std::rc::Rc;
@@ -365,22 +363,19 @@ pub fn run_test_case(
365363
.unwrap_or_default();
366364

367365
Ok(match result {
368-
Ok(result) => {
369-
collect_and_assign_events(&result, &call_trace_ref);
370-
RunResult::Completed(Box::new(RunCompleted {
371-
status: if result.execution.failed {
372-
RunStatus::Panic(result.execution.retdata.0)
373-
} else {
374-
RunStatus::Success(result.execution.retdata.0)
375-
},
376-
call_trace: call_trace_ref,
377-
gas_used,
378-
used_resources,
379-
encountered_errors,
380-
fuzzer_args,
381-
fork_data,
382-
}))
383-
}
366+
Ok(result) => RunResult::Completed(Box::new(RunCompleted {
367+
status: if result.execution.failed {
368+
RunStatus::Panic(result.execution.retdata.0)
369+
} else {
370+
RunStatus::Success(result.execution.retdata.0)
371+
},
372+
call_trace: call_trace_ref,
373+
gas_used,
374+
used_resources,
375+
encountered_errors,
376+
fuzzer_args,
377+
fork_data,
378+
})),
384379
Err(error) => RunResult::Error(RunError {
385380
error: Box::new(error),
386381
call_trace: call_trace_ref,
@@ -485,36 +480,3 @@ fn get_call_trace_ref(runtime: &mut ForgeRuntime) -> Rc<RefCell<CallTrace>> {
485480
.current_call_stack
486481
.top()
487482
}
488-
489-
fn entry_point_key(ep: &CallEntryPoint) -> String {
490-
format!("{ep:?}")
491-
}
492-
493-
fn collect_events(call_info: &CallInfo, map: &mut HashMap<String, Vec<OrderedEvent>>) {
494-
map.insert(
495-
entry_point_key(&call_info.call),
496-
call_info.execution.events.clone(),
497-
);
498-
for inner_info in &call_info.inner_calls {
499-
collect_events(inner_info, map);
500-
}
501-
}
502-
503-
fn assign_events(trace_rc: &Rc<RefCell<CallTrace>>, map: &HashMap<String, Vec<OrderedEvent>>) {
504-
let mut trace = trace_rc.borrow_mut();
505-
if let Some(events) = map.get(&entry_point_key(&trace.entry_point)) {
506-
trace.events.clone_from(events);
507-
}
508-
509-
for nested_node in &trace.nested_calls {
510-
if let CallTraceNode::EntryPointCall(nested_trace) = nested_node {
511-
assign_events(nested_trace, map);
512-
}
513-
}
514-
}
515-
516-
fn collect_and_assign_events(call_info: &CallInfo, trace_rc: &Rc<RefCell<CallTrace>>) {
517-
let mut events_lookup = HashMap::new();
518-
collect_events(call_info, &mut events_lookup);
519-
assign_events(trace_rc, &events_lookup);
520-
}

0 commit comments

Comments
 (0)