Showing preview only (6,002K chars total). Download the full file or copy to clipboard to get everything.
Repository: foundry-rs/starknet-foundry
Branch: master
Commit: 6878292c2125
Files: 1666
Total size: 5.4 MB
Directory structure:
gitextract_dvj2_r5r/
├── .cargo/
│ └── config.toml
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug_report.yml
│ │ ├── 2-feature_request.yml
│ │ ├── 3-work_item.yml
│ │ ├── 4-child_work_item.yml
│ │ └── config.yml
│ ├── actions/
│ │ └── setup-tools/
│ │ └── action.yml
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── _build-binaries-native.yml
│ ├── _build-binaries.yml
│ ├── _build-plugin-binaries.yml
│ ├── _publish-plugin.yml
│ ├── _test-binaries.yml
│ ├── automate-stale.yml
│ ├── ci.yml
│ ├── docs.yml
│ ├── nightly.yml
│ ├── publish-plugin.yml
│ ├── publish-std.yml
│ ├── release.yml
│ └── scheduled.yml
├── .gitignore
├── .tool-versions
├── CAIRO_NATIVE.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.toml
├── Cross.toml
├── LICENSE
├── README.md
├── RELEASING.md
├── ROADMAP.md
├── _typos.toml
├── crates/
│ ├── cheatnet/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── constants.rs
│ │ │ ├── data/
│ │ │ │ ├── eth_erc20_casm.json
│ │ │ │ └── strk_erc20_casm.json
│ │ │ ├── forking/
│ │ │ │ ├── cache.rs
│ │ │ │ ├── data.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── state.rs
│ │ │ ├── lib.rs
│ │ │ ├── predeployment/
│ │ │ │ ├── erc20/
│ │ │ │ │ ├── constructor_data.rs
│ │ │ │ │ ├── eth.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── predeployed_contract.rs
│ │ │ │ │ └── strk.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── predeployed_contract.rs
│ │ │ ├── runtime_extensions/
│ │ │ │ ├── call_to_blockifier_runtime_extension/
│ │ │ │ │ ├── execution/
│ │ │ │ │ │ ├── cairo1_execution.rs
│ │ │ │ │ │ ├── calls.rs
│ │ │ │ │ │ ├── cheated_syscalls.rs
│ │ │ │ │ │ ├── deprecated/
│ │ │ │ │ │ │ ├── cairo0_execution.rs
│ │ │ │ │ │ │ └── mod.rs
│ │ │ │ │ │ ├── entry_point.rs
│ │ │ │ │ │ ├── execution_info.rs
│ │ │ │ │ │ ├── execution_utils.rs
│ │ │ │ │ │ ├── mod.rs
│ │ │ │ │ │ └── syscall_hooks.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── panic_parser.rs
│ │ │ │ │ └── rpc.rs
│ │ │ │ ├── cheatable_starknet_runtime_extension.rs
│ │ │ │ ├── common.rs
│ │ │ │ ├── deprecated_cheatable_starknet_extension/
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── runtime.rs
│ │ │ │ ├── forge_config_extension/
│ │ │ │ │ └── config.rs
│ │ │ │ ├── forge_config_extension.rs
│ │ │ │ ├── forge_runtime_extension/
│ │ │ │ │ ├── cheatcodes/
│ │ │ │ │ │ ├── cheat_account_contract_address.rs
│ │ │ │ │ │ ├── cheat_block_hash.rs
│ │ │ │ │ │ ├── cheat_block_number.rs
│ │ │ │ │ │ ├── cheat_block_timestamp.rs
│ │ │ │ │ │ ├── cheat_caller_address.rs
│ │ │ │ │ │ ├── cheat_execution_info.rs
│ │ │ │ │ │ ├── cheat_sequencer_address.rs
│ │ │ │ │ │ ├── declare.rs
│ │ │ │ │ │ ├── generate_random_felt.rs
│ │ │ │ │ │ ├── get_class_hash.rs
│ │ │ │ │ │ ├── l1_handler_execute.rs
│ │ │ │ │ │ ├── mock_call.rs
│ │ │ │ │ │ ├── mod.rs
│ │ │ │ │ │ ├── precalculate_address.rs
│ │ │ │ │ │ ├── replace_bytecode.rs
│ │ │ │ │ │ ├── spy_events.rs
│ │ │ │ │ │ ├── spy_messages_to_l1.rs
│ │ │ │ │ │ └── storage.rs
│ │ │ │ │ ├── contracts_data.rs
│ │ │ │ │ ├── file_operations.rs
│ │ │ │ │ ├── fuzzer.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── native/
│ │ │ │ ├── call.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── execution.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── native_syscall_handler.rs
│ │ │ ├── state.rs
│ │ │ ├── sync_client.rs
│ │ │ └── trace_data.rs
│ │ └── tests/
│ │ ├── builtins/
│ │ │ ├── mod.rs
│ │ │ ├── panic_call.rs
│ │ │ └── segment_arena.rs
│ │ ├── cheatcodes/
│ │ │ ├── cheat_account_contract_address.rs
│ │ │ ├── cheat_block_hash.rs
│ │ │ ├── cheat_block_number.rs
│ │ │ ├── cheat_block_timestamp.rs
│ │ │ ├── cheat_caller_address.rs
│ │ │ ├── cheat_execution_info.rs
│ │ │ ├── cheat_sequencer_address.rs
│ │ │ ├── declare.rs
│ │ │ ├── generate_random_felt.rs
│ │ │ ├── get_class_hash.rs
│ │ │ ├── library_call.rs
│ │ │ ├── load.rs
│ │ │ ├── meta_tx_v0.rs
│ │ │ ├── mock_call.rs
│ │ │ ├── mod.rs
│ │ │ ├── multiple_writes_same_storage.rs
│ │ │ ├── precalculate_address.rs
│ │ │ ├── replace_bytecode.rs
│ │ │ ├── spy_events.rs
│ │ │ ├── store.rs
│ │ │ └── test_environment.rs
│ │ ├── common/
│ │ │ ├── assertions.rs
│ │ │ ├── cache.rs
│ │ │ ├── mod.rs
│ │ │ └── state.rs
│ │ ├── contracts/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── bytearray_string_panic_call.cairo
│ │ │ ├── cheat_block_hash/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_hash.cairo
│ │ │ ├── cheat_block_number/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_number.cairo
│ │ │ ├── cheat_block_timestamp/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_timestamp.cairo
│ │ │ ├── cheat_caller_address/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_cairo0.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_caller_address.cairo
│ │ │ ├── cheat_sequencer_address/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_sequencer_address.cairo
│ │ │ ├── cheat_tx_info/
│ │ │ │ ├── constructor_tx_hash_checker.cairo
│ │ │ │ ├── tx_hash_checker_proxy.cairo
│ │ │ │ ├── tx_info_checker.cairo
│ │ │ │ ├── tx_info_checker_library_call.cairo
│ │ │ │ └── tx_info_checker_meta_tx_v0.cairo
│ │ │ ├── cheat_tx_info.cairo
│ │ │ ├── common/
│ │ │ │ ├── constructor_simple.cairo
│ │ │ │ ├── constructor_simple2.cairo
│ │ │ │ └── hello_starknet.cairo
│ │ │ ├── common.cairo
│ │ │ ├── events/
│ │ │ │ ├── constructor_spy_events_checker.cairo
│ │ │ │ ├── spy_events_cairo0.cairo
│ │ │ │ ├── spy_events_checker.cairo
│ │ │ │ ├── spy_events_checker_proxy.cairo
│ │ │ │ ├── spy_events_lib_call.cairo
│ │ │ │ └── spy_events_order_checker.cairo
│ │ │ ├── events.cairo
│ │ │ ├── get_class_hash/
│ │ │ │ └── get_class_hash_checker.cairo
│ │ │ ├── get_class_hash.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── library_calls.cairo
│ │ │ ├── meta_tx_v0/
│ │ │ │ └── checker.cairo
│ │ │ ├── meta_tx_v0.cairo
│ │ │ ├── mock/
│ │ │ │ ├── constructor_mock_checker.cairo
│ │ │ │ ├── mock_checker.cairo
│ │ │ │ ├── mock_checker_library_call.cairo
│ │ │ │ └── mock_checker_proxy.cairo
│ │ │ ├── mock.cairo
│ │ │ ├── panic_call.cairo
│ │ │ ├── replace_bytecode/
│ │ │ │ ├── replace_bytecode_a.cairo
│ │ │ │ ├── replace_bytecode_b.cairo
│ │ │ │ └── replace_fork.cairo
│ │ │ ├── replace_bytecode.cairo
│ │ │ ├── revert.cairo
│ │ │ ├── segment_arena_user.cairo
│ │ │ ├── starknet/
│ │ │ │ ├── block_info_checker_library_call.cairo
│ │ │ │ ├── block_info_checker_proxy.cairo
│ │ │ │ ├── blocker.cairo
│ │ │ │ ├── forking_checker.cairo
│ │ │ │ ├── noncer.cairo
│ │ │ │ └── timestamper.cairo
│ │ │ ├── starknet.cairo
│ │ │ ├── store_load/
│ │ │ │ └── map_simple_value_simple_key.cairo
│ │ │ ├── store_load.cairo
│ │ │ └── tracked_resources.cairo
│ │ ├── main.rs
│ │ └── starknet/
│ │ ├── block.rs
│ │ ├── cheat_fork.rs
│ │ ├── execution.rs
│ │ ├── forking.rs
│ │ ├── mod.rs
│ │ ├── nonce.rs
│ │ └── timestamp.rs
│ ├── configuration/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── core.rs
│ │ │ ├── lib.rs
│ │ │ └── test_utils.rs
│ │ └── tests/
│ │ └── data/
│ │ └── stubtool_snfoundry.toml
│ ├── conversions/
│ │ ├── Cargo.toml
│ │ ├── cairo-serde-macros/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ ├── cairo_deserialize.rs
│ │ │ ├── cairo_serialize.rs
│ │ │ └── lib.rs
│ │ ├── src/
│ │ │ ├── byte_array.rs
│ │ │ ├── class_hash.rs
│ │ │ ├── contract_address.rs
│ │ │ ├── entrypoint_selector.rs
│ │ │ ├── eth_address.rs
│ │ │ ├── felt.rs
│ │ │ ├── lib.rs
│ │ │ ├── non_zero_felt.rs
│ │ │ ├── non_zero_u128.rs
│ │ │ ├── non_zero_u64.rs
│ │ │ ├── nonce.rs
│ │ │ ├── padded_felt.rs
│ │ │ ├── primitive.rs
│ │ │ ├── serde/
│ │ │ │ ├── deserialize/
│ │ │ │ │ └── deserialize_impl.rs
│ │ │ │ ├── deserialize.rs
│ │ │ │ ├── serialize/
│ │ │ │ │ └── serialize_impl.rs
│ │ │ │ ├── serialize.rs
│ │ │ │ └── serialized_value.rs
│ │ │ ├── serde.rs
│ │ │ └── string.rs
│ │ └── tests/
│ │ ├── derive_cairo_deserialize.rs
│ │ ├── derive_cairo_serialize.rs
│ │ ├── e2e/
│ │ │ ├── class_hash.rs
│ │ │ ├── contract_address.rs
│ │ │ ├── entrypoint_selector.rs
│ │ │ ├── felt.rs
│ │ │ ├── field_elements.rs
│ │ │ ├── mod.rs
│ │ │ ├── non_zero_felt.rs
│ │ │ ├── non_zero_u128.rs
│ │ │ ├── non_zero_u64.rs
│ │ │ ├── nonce.rs
│ │ │ ├── padded_felt.rs
│ │ │ └── string.rs
│ │ └── main.rs
│ ├── data-transformer/
│ │ ├── ARCHITECTURE.md
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── cairo_types/
│ │ │ │ ├── bytes31.rs
│ │ │ │ ├── helpers.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── u256.rs
│ │ │ │ ├── u384.rs
│ │ │ │ ├── u512.rs
│ │ │ │ └── u96.rs
│ │ │ ├── lib.rs
│ │ │ ├── reverse_transformer/
│ │ │ │ ├── mod.rs
│ │ │ │ ├── transform.rs
│ │ │ │ └── types.rs
│ │ │ ├── shared/
│ │ │ │ ├── extraction.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── parsing.rs
│ │ │ │ └── path.rs
│ │ │ └── transformer/
│ │ │ ├── mod.rs
│ │ │ └── sierra_abi/
│ │ │ ├── binary.rs
│ │ │ ├── complex_types.rs
│ │ │ ├── data_representation.rs
│ │ │ ├── literals.rs
│ │ │ ├── macros.rs
│ │ │ ├── mod.rs
│ │ │ └── parsing.rs
│ │ └── tests/
│ │ ├── data/
│ │ │ └── data_transformer/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── integration/
│ │ │ ├── identity.rs
│ │ │ ├── mod.rs
│ │ │ ├── reverse_transformer.rs
│ │ │ └── transformer.rs
│ │ ├── lib.rs
│ │ └── unit/
│ │ ├── bytes31.rs
│ │ ├── mod.rs
│ │ ├── u384.rs
│ │ └── u96.rs
│ ├── debugging/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── contracts_data_store.rs
│ │ ├── lib.rs
│ │ ├── trace/
│ │ │ ├── collect.rs
│ │ │ ├── components.rs
│ │ │ ├── context.rs
│ │ │ ├── mod.rs
│ │ │ └── types.rs
│ │ └── tree/
│ │ ├── building/
│ │ │ ├── builder.rs
│ │ │ ├── mod.rs
│ │ │ └── node.rs
│ │ ├── mod.rs
│ │ └── ui/
│ │ ├── as_tree_node.rs
│ │ ├── display.rs
│ │ └── mod.rs
│ ├── docs/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── snippet.rs
│ │ ├── utils.rs
│ │ └── validation.rs
│ ├── forge/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── block_number_map.rs
│ │ │ ├── clean.rs
│ │ │ ├── combine_configs.rs
│ │ │ ├── compatibility_check.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── new.rs
│ │ │ ├── optimize_inlining/
│ │ │ │ ├── args.rs
│ │ │ │ ├── contract_size.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── optimizer.rs
│ │ │ │ ├── paths.rs
│ │ │ │ └── runner.rs
│ │ │ ├── profile_validation/
│ │ │ │ ├── backtrace.rs
│ │ │ │ ├── coverage.rs
│ │ │ │ └── mod.rs
│ │ │ ├── run_tests/
│ │ │ │ ├── maat.rs
│ │ │ │ ├── messages/
│ │ │ │ │ ├── collected_tests_count.rs
│ │ │ │ │ ├── latest_blocks_numbers.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── overall_summary.rs
│ │ │ │ │ ├── partition.rs
│ │ │ │ │ ├── tests_failure_summary.rs
│ │ │ │ │ ├── tests_run.rs
│ │ │ │ │ └── tests_summary.rs
│ │ │ │ ├── package.rs
│ │ │ │ ├── resolve_config.rs
│ │ │ │ ├── test_target.rs
│ │ │ │ └── workspace.rs
│ │ │ ├── run_tests.rs
│ │ │ ├── scarb/
│ │ │ │ └── config.rs
│ │ │ ├── scarb.rs
│ │ │ ├── shared_cache.rs
│ │ │ ├── test_filter.rs
│ │ │ └── warn.rs
│ │ └── tests/
│ │ ├── data/
│ │ │ ├── backtrace_panic/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── backtrace_vm_error/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── collection_with_lib/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── fob.cairo
│ │ │ │ ├── src/
│ │ │ │ │ ├── fab/
│ │ │ │ │ │ ├── fab_impl.cairo
│ │ │ │ │ │ └── fibfabfob.cairo
│ │ │ │ │ ├── fab.cairo
│ │ │ │ │ ├── fib.cairo
│ │ │ │ │ ├── fob/
│ │ │ │ │ │ ├── fibfabfob.cairo
│ │ │ │ │ │ └── fob_impl.cairo
│ │ │ │ │ ├── fob.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── fab/
│ │ │ │ │ └── fab_mod.cairo
│ │ │ │ ├── fab.cairo
│ │ │ │ ├── fibfabfob.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── not_found/
│ │ │ │ │ └── not_found.cairo
│ │ │ │ └── not_found.cairo
│ │ │ ├── collection_without_lib/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── fob.cairo
│ │ │ │ ├── src/
│ │ │ │ │ ├── fab/
│ │ │ │ │ │ ├── fab_impl.cairo
│ │ │ │ │ │ └── fibfabfob.cairo
│ │ │ │ │ ├── fab.cairo
│ │ │ │ │ ├── fib.cairo
│ │ │ │ │ ├── fob/
│ │ │ │ │ │ ├── fibfabfob.cairo
│ │ │ │ │ │ └── fob_impl.cairo
│ │ │ │ │ ├── fob.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── fab/
│ │ │ │ │ └── fab_mod.cairo
│ │ │ │ ├── fab.cairo
│ │ │ │ ├── fibfabfob.cairo
│ │ │ │ └── not_found/
│ │ │ │ └── not_found.cairo
│ │ │ ├── component_macros/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── example.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── oz_ac_component.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_contract.cairo
│ │ │ ├── contract_state/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── balance.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── storage_node.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── test_fork.cairo
│ │ │ │ ├── test_state.cairo
│ │ │ │ ├── test_storage_node.cairo
│ │ │ │ └── utils.cairo
│ │ │ ├── contracts/
│ │ │ │ ├── block_hash_checker.cairo
│ │ │ │ ├── block_info_checker.cairo
│ │ │ │ ├── catching_error.cairo
│ │ │ │ ├── cheat_block_hash_checker.cairo
│ │ │ │ ├── cheat_block_number_checker.cairo
│ │ │ │ ├── cheat_block_timestamp_checker.cairo
│ │ │ │ ├── cheat_caller_address_checker.cairo
│ │ │ │ ├── cheat_sequencer_address_checker.cairo
│ │ │ │ ├── cheat_tx_info_checker.cairo
│ │ │ │ ├── deploy_checker.cairo
│ │ │ │ ├── dict_using_contract.cairo
│ │ │ │ ├── erc20.cairo
│ │ │ │ ├── gas_checker.cairo
│ │ │ │ ├── gas_checker_proxy.cairo
│ │ │ │ ├── gas_constructor_checker.cairo
│ │ │ │ ├── hello_starknet.cairo
│ │ │ │ ├── hello_starknet_extended.cairo
│ │ │ │ ├── hello_starknet_for_nested_calls.cairo
│ │ │ │ ├── keccak_usage.cairo
│ │ │ │ ├── l1_handler_execute_checker.cairo
│ │ │ │ ├── message_to_l1_checker.cairo
│ │ │ │ ├── meta_tx_v0_checkers.cairo
│ │ │ │ ├── meta_tx_v0_test.cairo
│ │ │ │ ├── mock_checker.cairo
│ │ │ │ ├── response_with_2_felts.cairo
│ │ │ │ ├── reverts_caller.cairo
│ │ │ │ ├── reverts_contract.cairo
│ │ │ │ ├── reverts_proxy.cairo
│ │ │ │ ├── serding.cairo
│ │ │ │ ├── spy_events_checker.cairo
│ │ │ │ ├── storage_tester.cairo
│ │ │ │ ├── too_many_events.cairo
│ │ │ │ ├── trace_dummy.cairo
│ │ │ │ ├── trace_info_checker.cairo
│ │ │ │ ├── trace_info_proxy.cairo
│ │ │ │ └── two_implementations.cairo
│ │ │ ├── coverage_project/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── lib.cairo
│ │ │ ├── debugging/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── debugging_fork/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── deterministic_output/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── diagnostics/
│ │ │ │ ├── attributes/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── generic/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── inline_macros/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── multiple/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── parameters/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── semantic/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── syntax/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ └── test_case_attr/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── basic.cairo
│ │ │ ├── dispatchers/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── error_handler.cairo
│ │ │ │ │ ├── failable.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── duplicated_test_names/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── tests_a.cairo
│ │ │ │ └── tests_b.cairo
│ │ │ ├── empty/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── env/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── erc20_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── erc20.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_complex.cairo
│ │ │ ├── exit_first/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── ext_function_test.cairo
│ │ │ ├── features/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── file_reading/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── data/
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── invalid.json
│ │ │ │ │ │ ├── nested_valid.json
│ │ │ │ │ │ ├── valid.json
│ │ │ │ │ │ └── with_array.json
│ │ │ │ │ ├── negative_number.txt
│ │ │ │ │ ├── non_ascii.txt
│ │ │ │ │ └── valid.txt
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── tests/
│ │ │ │ │ └── test.cairo
│ │ │ │ └── valid_file.txt
│ │ │ ├── forking/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .snfoundry_cache/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── http___188_34_188_184_7070_rpc_v0_10_54060_v0_59_0.json
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── fuzzing/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── exit_first_fuzz.cairo
│ │ │ │ ├── exit_first_single_fail.cairo
│ │ │ │ ├── generate_arg.cairo
│ │ │ │ ├── generic_struct.cairo
│ │ │ │ ├── incorrect_args.cairo
│ │ │ │ └── multiple_attributes.cairo
│ │ │ ├── hello_workspaces/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── crates/
│ │ │ │ │ ├── addition/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ │ └── nested.cairo
│ │ │ │ │ └── fibonacci/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── abc/
│ │ │ │ │ │ └── efg.cairo
│ │ │ │ │ ├── abc.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── not_collected.cairo
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_failing.cairo
│ │ │ ├── nonexistent_selector/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_contract.cairo
│ │ │ ├── panic_decoding/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_panic_decoding.cairo
│ │ │ ├── partitioning/
│ │ │ │ ├── .tool-versions
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── crates/
│ │ │ │ │ ├── package_a/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ └── tests.cairo
│ │ │ │ │ └── package_b/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── tests.cairo
│ │ │ ├── runtime_errors_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── hello_starknet.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── with_error.cairo
│ │ │ ├── should_panic_test/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── should_panic_test.cairo
│ │ │ ├── simple_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── hello_starknet.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── ext_function_test.cairo
│ │ │ │ ├── test_simple.cairo
│ │ │ │ └── without_prefix.cairo
│ │ │ ├── simple_package_with_cheats/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── contract.cairo
│ │ │ ├── steps/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── targets/
│ │ │ │ ├── custom_target/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── custom_target_custom_names/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── custom_target_only_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_lib_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_unit/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── unit_and_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── unit_and_lib_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ └── with_features/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── tests.cairo
│ │ │ ├── test_case/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── exit_first.cairo
│ │ │ │ ├── multiple_attributes.cairo
│ │ │ │ ├── single_attribute.cairo
│ │ │ │ └── with_deploy.cairo
│ │ │ ├── trace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── trace_resources/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── empty.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ ├── trace_dummy.cairo
│ │ │ │ │ ├── trace_info_checker.cairo
│ │ │ │ │ └── trace_info_proxy.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── test_call.cairo
│ │ │ │ ├── test_deploy.cairo
│ │ │ │ ├── test_failed_call.cairo
│ │ │ │ ├── test_failed_lib_call.cairo
│ │ │ │ ├── test_l1_handler.cairo
│ │ │ │ └── test_lib_call.cairo
│ │ │ ├── virtual_workspace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── dummy_name/
│ │ │ │ │ ├── fibonacci_virtual/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── abc/
│ │ │ │ │ │ │ └── efg.cairo
│ │ │ │ │ │ ├── abc.cairo
│ │ │ │ │ │ ├── lib.cairo
│ │ │ │ │ │ └── not_collected.cairo
│ │ │ │ │ └── subtraction/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── nested/
│ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ └── nested.cairo
│ │ │ │ └── not_collected.cairo
│ │ │ └── wasm_oracles/
│ │ │ ├── Scarb.toml
│ │ │ ├── build-fixtures.sh
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── wasm_oracle/
│ │ │ │ ├── Cargo.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.rs
│ │ │ └── wasm_oracle.wasm
│ │ ├── e2e/
│ │ │ ├── backtrace.rs
│ │ │ ├── build_profile.rs
│ │ │ ├── build_trace_data.rs
│ │ │ ├── clean.rs
│ │ │ ├── code_quality.rs
│ │ │ ├── collection.rs
│ │ │ ├── color.rs
│ │ │ ├── common/
│ │ │ │ ├── mod.rs
│ │ │ │ ├── output.rs
│ │ │ │ └── runner.rs
│ │ │ ├── completions.rs
│ │ │ ├── components.rs
│ │ │ ├── contract_artifacts.rs
│ │ │ ├── coverage.rs
│ │ │ ├── debugger.rs
│ │ │ ├── debugging.rs
│ │ │ ├── docs_snippets_validation.rs
│ │ │ ├── env.rs
│ │ │ ├── features.rs
│ │ │ ├── fork_warning.rs
│ │ │ ├── forking.rs
│ │ │ ├── fuzzing.rs
│ │ │ ├── gas_report.rs
│ │ │ ├── io_operations.rs
│ │ │ ├── mod.rs
│ │ │ ├── new.rs
│ │ │ ├── optimize_inlining.rs
│ │ │ ├── oracles.rs
│ │ │ ├── package_warnings.rs
│ │ │ ├── partitioning.rs
│ │ │ ├── plugin_diagnostics.rs
│ │ │ ├── plugin_versions.rs
│ │ │ ├── profiles.rs
│ │ │ ├── requirements.rs
│ │ │ ├── running.rs
│ │ │ ├── snapshots/
│ │ │ │ ├── backtrace/
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.16.1.snap
│ │ │ │ │ └── main__e2e__backtrace__snap_test_handled_error_not_display@2.17.0.snap
│ │ │ │ ├── gas_report/
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.16.1.snap
│ │ │ │ │ └── main__e2e__gas_report__snap_recursive_calls@2.17.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__optimize_inlining_dry_run.snap
│ │ │ │ ├── main__e2e__optimize_inlining__optimize_inlining_updates_manifest.snap
│ │ │ │ └── optimize_inlining/
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.15.2.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.16.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.16.1.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.17.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.15.2.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.16.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.16.1.snap
│ │ │ │ └── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.17.0.snap
│ │ │ ├── steps.rs
│ │ │ ├── templates.rs
│ │ │ ├── test_case.rs
│ │ │ ├── trace_print.rs
│ │ │ ├── trace_resources.rs
│ │ │ └── workspaces.rs
│ │ ├── integration/
│ │ │ ├── available_gas.rs
│ │ │ ├── builtins.rs
│ │ │ ├── cheat_block_hash.rs
│ │ │ ├── cheat_block_number.rs
│ │ │ ├── cheat_block_timestamp.rs
│ │ │ ├── cheat_caller_address.rs
│ │ │ ├── cheat_execution_info.rs
│ │ │ ├── cheat_fork.rs
│ │ │ ├── cheat_sequencer_address.rs
│ │ │ ├── config.rs
│ │ │ ├── declare.rs
│ │ │ ├── deploy.rs
│ │ │ ├── deploy_at.rs
│ │ │ ├── dict.rs
│ │ │ ├── dispatchers.rs
│ │ │ ├── env.rs
│ │ │ ├── fuzzing.rs
│ │ │ ├── gas.rs
│ │ │ ├── generate_random_felt.rs
│ │ │ ├── get_available_gas.rs
│ │ │ ├── get_class_hash.rs
│ │ │ ├── get_current_vm_step.rs
│ │ │ ├── interact_with_state.rs
│ │ │ ├── l1_handler_executor.rs
│ │ │ ├── message_to_l1.rs
│ │ │ ├── meta_tx_v0.rs
│ │ │ ├── mock_call.rs
│ │ │ ├── mod.rs
│ │ │ ├── precalculate_address.rs
│ │ │ ├── pure_cairo.rs
│ │ │ ├── replace_bytecode.rs
│ │ │ ├── resources.rs
│ │ │ ├── reverts.rs
│ │ │ ├── runtime.rs
│ │ │ ├── set_balance.rs
│ │ │ ├── setup_fork.rs
│ │ │ ├── should_panic.rs
│ │ │ ├── signing.rs
│ │ │ ├── spy_events.rs
│ │ │ ├── store_load.rs
│ │ │ ├── syscalls.rs
│ │ │ ├── test_state.rs
│ │ │ ├── too_many_events.rs
│ │ │ └── trace.rs
│ │ ├── main.rs
│ │ └── utils/
│ │ ├── mod.rs
│ │ ├── runner.rs
│ │ └── running_tests.rs
│ ├── forge-runner/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── backtrace/
│ │ │ ├── data.rs
│ │ │ ├── display.rs
│ │ │ └── mod.rs
│ │ ├── build_trace_data.rs
│ │ ├── coverage_api.rs
│ │ ├── debugging/
│ │ │ ├── args.rs
│ │ │ ├── component.rs
│ │ │ ├── mod.rs
│ │ │ └── trace_verbosity.rs
│ │ ├── expected_result.rs
│ │ ├── filtering.rs
│ │ ├── forge_config.rs
│ │ ├── gas/
│ │ │ ├── report.rs
│ │ │ ├── resources.rs
│ │ │ ├── stats.rs
│ │ │ └── utils.rs
│ │ ├── gas.rs
│ │ ├── lib.rs
│ │ ├── messages.rs
│ │ ├── package_tests/
│ │ │ ├── raw.rs
│ │ │ ├── with_config.rs
│ │ │ └── with_config_resolved.rs
│ │ ├── package_tests.rs
│ │ ├── partition.rs
│ │ ├── printing.rs
│ │ ├── profiler_api.rs
│ │ ├── running/
│ │ │ ├── config_run.rs
│ │ │ ├── execution.rs
│ │ │ ├── hints.rs
│ │ │ ├── setup.rs
│ │ │ ├── syscall_handler.rs
│ │ │ └── target.rs
│ │ ├── running.rs
│ │ ├── scarb.rs
│ │ ├── test_case_summary.rs
│ │ ├── test_target_summary.rs
│ │ └── tests_summary.rs
│ ├── foundry-ui/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── components/
│ │ │ ├── error.rs
│ │ │ ├── labeled.rs
│ │ │ ├── mod.rs
│ │ │ ├── tagged.rs
│ │ │ └── warning.rs
│ │ ├── lib.rs
│ │ ├── message.rs
│ │ ├── output.rs
│ │ └── styling.rs
│ ├── native-api/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ ├── runtime/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── starknet/
│ │ │ ├── constants.rs
│ │ │ ├── context.rs
│ │ │ ├── mod.rs
│ │ │ └── state.rs
│ │ └── vm.rs
│ ├── scarb-api/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── artifacts/
│ │ │ │ ├── deserialized.rs
│ │ │ │ └── representation.rs
│ │ │ ├── artifacts.rs
│ │ │ ├── command.rs
│ │ │ ├── lib.rs
│ │ │ ├── manifest.rs
│ │ │ ├── metadata.rs
│ │ │ └── version.rs
│ │ └── tests/
│ │ └── data/
│ │ ├── basic_package/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ └── empty_lib/
│ │ ├── Scarb.toml
│ │ └── src/
│ │ └── lib.cairo
│ ├── shared/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── auto_completions.rs
│ │ ├── command.rs
│ │ ├── consts.rs
│ │ ├── lib.rs
│ │ ├── rpc.rs
│ │ ├── spinner.rs
│ │ ├── test_utils/
│ │ │ ├── mod.rs
│ │ │ ├── node_url.rs
│ │ │ └── output_assert.rs
│ │ ├── utils.rs
│ │ └── vm.rs
│ ├── sncast/
│ │ ├── .cargo/
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── src/
│ │ │ ├── helpers/
│ │ │ │ ├── account.rs
│ │ │ │ ├── artifacts.rs
│ │ │ │ ├── block_explorer.rs
│ │ │ │ ├── braavos.rs
│ │ │ │ ├── command.rs
│ │ │ │ ├── config.rs
│ │ │ │ ├── configuration.rs
│ │ │ │ ├── constants.rs
│ │ │ │ ├── devnet/
│ │ │ │ │ ├── detection/
│ │ │ │ │ │ ├── direct.rs
│ │ │ │ │ │ ├── docker.rs
│ │ │ │ │ │ └── flag_parsing.rs
│ │ │ │ │ ├── detection.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── provider.rs
│ │ │ │ ├── fee.rs
│ │ │ │ ├── interactive.rs
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── account.rs
│ │ │ │ │ ├── emulator_transport.rs
│ │ │ │ │ ├── hd_path.rs
│ │ │ │ │ ├── key_locator.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── output_format.rs
│ │ │ │ ├── proof.rs
│ │ │ │ ├── rpc.rs
│ │ │ │ ├── scarb_utils.rs
│ │ │ │ ├── signer.rs
│ │ │ │ └── token.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── response/
│ │ │ │ ├── account/
│ │ │ │ │ ├── create.rs
│ │ │ │ │ ├── delete.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── import.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── balance.rs
│ │ │ │ ├── call.rs
│ │ │ │ ├── cast_message.rs
│ │ │ │ ├── class_hash_at.rs
│ │ │ │ ├── completions.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── errors.rs
│ │ │ │ ├── explorer_link.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── ledger.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── nonce.rs
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── show_config.rs
│ │ │ │ ├── transaction.rs
│ │ │ │ ├── transformed_call.rs
│ │ │ │ ├── tx_status.rs
│ │ │ │ ├── ui.rs
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── selector.rs
│ │ │ │ │ └── serialize.rs
│ │ │ │ └── verify.rs
│ │ │ ├── starknet_commands/
│ │ │ │ ├── account/
│ │ │ │ │ ├── create.rs
│ │ │ │ │ ├── delete.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── import.rs
│ │ │ │ │ ├── list.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── call.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── declare_from.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── get/
│ │ │ │ │ ├── balance.rs
│ │ │ │ │ ├── class_hash_at.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── nonce.rs
│ │ │ │ │ ├── transaction.rs
│ │ │ │ │ └── tx_status.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── app_version.rs
│ │ │ │ │ ├── get_public_key.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── sign_hash.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── contract_registry.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── execute.rs
│ │ │ │ │ ├── invoke.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── run/
│ │ │ │ │ │ └── script_runtime.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── show_config.rs
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.rs
│ │ │ │ │ ├── felt_or_id.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── selector.rs
│ │ │ │ │ └── serialize.rs
│ │ │ │ └── verify/
│ │ │ │ ├── explorer.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── voyager.rs
│ │ │ │ └── walnut.rs
│ │ │ └── state/
│ │ │ ├── hashing.rs
│ │ │ ├── mod.rs
│ │ │ └── state_file.rs
│ │ └── tests/
│ │ ├── code_quality.rs
│ │ ├── data/
│ │ │ ├── accounts/
│ │ │ │ ├── accounts.json
│ │ │ │ ├── faulty_accounts.json
│ │ │ │ ├── faulty_accounts_invalid_felt.json
│ │ │ │ └── invalid_format.json
│ │ │ ├── contracts/
│ │ │ │ ├── build_fails/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── constructor_with_params/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── contract_with_constructor_params/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── map/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ ├── test_helpers.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── multiple_packages/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── crates/
│ │ │ │ │ │ ├── package1/
│ │ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ │ └── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── package2/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── no_casm/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── no_sierra/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── virtual_workspace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── crates/
│ │ │ │ ├── cast_addition/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── cast_fibonacci/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── files/
│ │ │ │ ├── correct_snfoundry.toml
│ │ │ │ ├── data_transformer_contract_abi.json
│ │ │ │ ├── data_transformer_contract_abi_missing_function.json
│ │ │ │ ├── data_transformer_contract_abi_missing_type.json
│ │ │ │ ├── invalid_snfoundry.toml
│ │ │ │ ├── pre_0.34.0_state_with_tx.json
│ │ │ │ ├── state_corrupt_missing_field.json
│ │ │ │ ├── state_no_txs.json
│ │ │ │ ├── state_with_tx.json
│ │ │ │ ├── state_with_txs.json
│ │ │ │ └── state_wrong_version.json
│ │ │ ├── keystore/
│ │ │ │ ├── my_account.json
│ │ │ │ ├── my_account_braavos_invalid_multisig.json
│ │ │ │ ├── my_account_braavos_multiple_signers.json
│ │ │ │ ├── my_account_braavos_undeployed_happy_case.json
│ │ │ │ ├── my_account_invalid.json
│ │ │ │ ├── my_account_oz_undeployed_happy_case.json
│ │ │ │ ├── my_account_ready_undeployed_happy_case.json
│ │ │ │ ├── my_account_undeployed.json
│ │ │ │ ├── my_account_undeployed_happy_case_other_args.json
│ │ │ │ ├── my_key.json
│ │ │ │ ├── my_key_invalid.json
│ │ │ │ ├── predeployed_account.json
│ │ │ │ └── predeployed_key.json
│ │ │ ├── ledger-app/
│ │ │ │ └── nanox#strk#0.25.13.elf
│ │ │ ├── multicall_configs/
│ │ │ │ ├── deploy_invalid.toml
│ │ │ │ ├── deploy_invoke.toml
│ │ │ │ ├── deploy_invoke_calldata_ids.toml
│ │ │ │ ├── deploy_invoke_numeric_inputs.toml
│ │ │ │ ├── deploy_invoke_numeric_overflow.toml
│ │ │ │ ├── deploy_succ_invoke_fail.toml
│ │ │ │ ├── invoke_invalid.toml
│ │ │ │ └── invoke_ledger.toml
│ │ │ └── scripts/
│ │ │ ├── call/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── invalid_address.cairo
│ │ │ │ ├── invalid_calldata.cairo
│ │ │ │ ├── invalid_entry_point.cairo
│ │ │ │ └── lib.cairo
│ │ │ ├── declare/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── fee_settings.cairo
│ │ │ │ ├── insufficient_account_balance.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── no_contract.cairo
│ │ │ │ ├── same_contract_twice.cairo
│ │ │ │ ├── time_out.cairo
│ │ │ │ ├── with_invalid_max_fee.cairo
│ │ │ │ └── with_invalid_nonce.cairo
│ │ │ ├── deploy/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── fee_settings.cairo
│ │ │ │ ├── invalid_calldata.cairo
│ │ │ │ ├── invalid_class_hash.cairo
│ │ │ │ ├── invalid_nonce.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── same_class_hash_and_salt.cairo
│ │ │ │ └── with_calldata.cairo
│ │ │ ├── invoke/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── contract_does_not_exist.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── max_fee_too_low.cairo
│ │ │ │ ├── wrong_calldata.cairo
│ │ │ │ └── wrong_function_name.cairo
│ │ │ ├── map_script/
│ │ │ │ ├── contracts/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── display_debug_traits_for_subcommand_responses.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── map_script.cairo
│ │ │ ├── misc/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── call_fail.cairo
│ │ │ │ ├── call_happy.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── using_starknet_syscall.cairo
│ │ │ ├── missing_field/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── missing_field.cairo
│ │ │ ├── old_sncast_std/
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── map_script.cairo
│ │ │ ├── packages/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── crates/
│ │ │ │ └── scripts/
│ │ │ │ ├── script1/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── script2/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── state_file/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── rerun_failed_tx_alpha-sepolia_state.json
│ │ │ │ └── src/
│ │ │ │ ├── all_tx_fail.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── rerun_failed_tx.cairo
│ │ │ ├── state_script/
│ │ │ │ ├── contracts/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── state_script.cairo
│ │ │ └── tx_status/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── incorrect_transaction_hash.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── status_reverted.cairo
│ │ │ └── status_succeeded.cairo
│ │ ├── docs_snippets/
│ │ │ ├── ledger.rs
│ │ │ ├── mod.rs
│ │ │ └── validation.rs
│ │ ├── e2e/
│ │ │ ├── account/
│ │ │ │ ├── create.rs
│ │ │ │ ├── delete.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── helpers.rs
│ │ │ │ ├── import.rs
│ │ │ │ ├── list.rs
│ │ │ │ └── mod.rs
│ │ │ ├── balance.rs
│ │ │ ├── call.rs
│ │ │ ├── class_hash.rs
│ │ │ ├── class_hash_at.rs
│ │ │ ├── completions.rs
│ │ │ ├── declare.rs
│ │ │ ├── declare_from.rs
│ │ │ ├── deploy.rs
│ │ │ ├── devnet_accounts.rs
│ │ │ ├── fee.rs
│ │ │ ├── invoke.rs
│ │ │ ├── ledger/
│ │ │ │ ├── account.rs
│ │ │ │ ├── basic.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── network.rs
│ │ │ ├── main_tests.rs
│ │ │ ├── mod.rs
│ │ │ ├── multicall/
│ │ │ │ ├── execute.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── new.rs
│ │ │ │ └── run.rs
│ │ │ ├── nonce.rs
│ │ │ ├── proof.rs
│ │ │ ├── script/
│ │ │ │ ├── call.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── general.rs
│ │ │ │ ├── init.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── tx_status.rs
│ │ │ ├── selector.rs
│ │ │ ├── serialize.rs
│ │ │ ├── show_config.rs
│ │ │ ├── transaction.rs
│ │ │ ├── tx_status.rs
│ │ │ └── verify/
│ │ │ ├── mod.rs
│ │ │ ├── voyager.rs
│ │ │ └── walnut.rs
│ │ ├── helpers/
│ │ │ ├── constants.rs
│ │ │ ├── devnet.rs
│ │ │ ├── devnet_detection.rs
│ │ │ ├── devnet_provider.rs
│ │ │ ├── env.rs
│ │ │ ├── fixtures.rs
│ │ │ ├── mod.rs
│ │ │ ├── runner.rs
│ │ │ └── shell.rs
│ │ ├── integration/
│ │ │ ├── fee.rs
│ │ │ ├── lib_tests.rs
│ │ │ ├── mod.rs
│ │ │ └── wait_for_tx.rs
│ │ ├── main.rs
│ │ └── shell/
│ │ ├── call.sh
│ │ ├── call_unsigned.sh
│ │ ├── deploy.sh
│ │ ├── invoke.sh
│ │ └── serialize.sh
│ ├── snforge-scarb-plugin/
│ │ ├── Cargo.toml
│ │ ├── Scarb.toml
│ │ ├── clippy.toml
│ │ ├── src/
│ │ │ ├── args/
│ │ │ │ ├── named.rs
│ │ │ │ └── unnamed.rs
│ │ │ ├── args.rs
│ │ │ ├── asserts.rs
│ │ │ ├── attributes/
│ │ │ │ ├── available_gas.rs
│ │ │ │ ├── disable_predeployed_contracts.rs
│ │ │ │ ├── fork/
│ │ │ │ │ └── block_id.rs
│ │ │ │ ├── fork.rs
│ │ │ │ ├── fuzzer/
│ │ │ │ │ └── wrapper.rs
│ │ │ │ ├── fuzzer.rs
│ │ │ │ ├── ignore.rs
│ │ │ │ ├── internal_config_statement.rs
│ │ │ │ ├── should_panic/
│ │ │ │ │ └── expected.rs
│ │ │ │ ├── should_panic.rs
│ │ │ │ ├── test.rs
│ │ │ │ ├── test_case/
│ │ │ │ │ └── name.rs
│ │ │ │ └── test_case.rs
│ │ │ ├── attributes.rs
│ │ │ ├── cairo_expression.rs
│ │ │ ├── common.rs
│ │ │ ├── config_statement.rs
│ │ │ ├── external_inputs.rs
│ │ │ ├── lib.rs
│ │ │ ├── parse.rs
│ │ │ ├── types.rs
│ │ │ └── utils.rs
│ │ └── tests/
│ │ └── integration/
│ │ ├── main.rs
│ │ ├── multiple_attributes.rs
│ │ ├── single_attributes/
│ │ │ ├── available_gas.rs
│ │ │ ├── disable_predeployed_contracts.rs
│ │ │ ├── fork.rs
│ │ │ ├── fuzzer.rs
│ │ │ ├── ignore.rs
│ │ │ ├── internal_config_statement.rs
│ │ │ ├── should_panic.rs
│ │ │ ├── test.rs
│ │ │ └── test_case.rs
│ │ ├── single_attributes.rs
│ │ └── utils.rs
│ ├── testing/
│ │ └── packages_validation/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ └── universal-sierra-compiler-api/
│ ├── Cargo.toml
│ └── src/
│ ├── command.rs
│ ├── compile.rs
│ ├── lib.rs
│ └── representation.rs
├── design_documents/
│ ├── accessing_emitted_events.md
│ ├── cairo_deployment_scripts.md
│ ├── contract_verification.md
│ ├── loading_data_from_files.md
│ ├── parametrizing_tests_with_fixed_values.md
│ ├── prepare_cheatcode.md
│ ├── sncast_interface_overhaul.md
│ ├── stark_curve_signatures.md
│ ├── state_forking/
│ │ ├── multi-forking.md
│ │ └── state_forking.md
│ ├── store_load_cheatcodes.md
│ ├── template.md
│ ├── test_design.md
│ └── transactional_testing/
│ └── transactional_testing.md
├── docs/
│ ├── .gitignore
│ ├── README.md
│ ├── book.toml
│ ├── codeSnippets.js
│ ├── count.js
│ ├── example_workflows/
│ │ ├── basic_workflow.yml
│ │ └── partitioned_workflow.yml
│ ├── listings/
│ │ ├── basic_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── basic_example.cairo
│ │ │ └── lib.cairo
│ │ ├── call/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── cheatcodes_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── l1_handler_example.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── mock_call_example.cairo
│ │ │ └── tests/
│ │ │ ├── test_l1_handler.cairo
│ │ │ └── test_mock_call.cairo
│ │ ├── declare/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── deploy/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── deployment_with_constructor_args/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── test_with_deploy_for_test.cairo
│ │ │ └── test_with_serialization.cairo
│ │ ├── detailed_resources_example/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── direct_storage_access/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── complex_structures.cairo
│ │ │ │ ├── felts_only.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── using_enums.cairo
│ │ │ └── tests/
│ │ │ ├── complex_structures.cairo
│ │ │ ├── felts_only/
│ │ │ │ ├── field.cairo
│ │ │ │ └── map_entry.cairo
│ │ │ ├── felts_only.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── storage_address.cairo
│ │ │ ├── using_enums.cairo
│ │ │ └── using_storage_address_from_base.cairo
│ │ ├── error_handling/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── error_handling.cairo
│ │ │ └── lib.cairo
│ │ ├── failing_example/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── first_test/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── fork_testing/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── explicit/
│ │ │ │ ├── block_hash.cairo
│ │ │ │ ├── block_number.cairo
│ │ │ │ └── block_tag.cairo
│ │ │ ├── explicit.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── name.cairo
│ │ │ └── overridden_name.cairo
│ │ ├── full_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── full_example.cairo
│ │ │ └── lib.cairo
│ │ ├── fuzz_testing/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── basic_example.cairo
│ │ │ ├── lib.cairo
│ │ │ └── with_parameters.cairo
│ │ ├── get_nonce/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── hello_sncast/
│ │ │ ├── Scarb.toml
│ │ │ ├── accounts.json
│ │ │ ├── snfoundry.toml
│ │ │ └── src/
│ │ │ ├── constructor_contract.cairo
│ │ │ ├── data_transformer_contract.cairo
│ │ │ ├── hello_sncast.cairo
│ │ │ └── lib.cairo
│ │ ├── hello_snforge/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── hello_starknet/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── hello_workspaces_docs/
│ │ │ ├── Scarb.toml
│ │ │ ├── crates/
│ │ │ │ ├── addition_docs/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── nested/
│ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ └── nested.cairo
│ │ │ │ └── fibonacci_docs/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── abc/
│ │ │ │ │ └── efg.cairo
│ │ │ │ ├── abc.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── not_collected.cairo
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_failing.cairo
│ │ ├── ignoring_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── invoke/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── map3/
│ │ │ ├── Scarb.toml
│ │ │ ├── snfoundry.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── panicking_test/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── parametrized_testing_advanced/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── parametrized_testing_basic/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── parametrized_testing_fuzzer/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── should_panic_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── snforge_library_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── data/
│ │ │ │ ├── hello_starknet.txt
│ │ │ │ └── user.json
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── test_fs_file_trait.cairo
│ │ │ ├── test_fs_parse_json.cairo
│ │ │ ├── test_fs_read_json.cairo
│ │ │ └── test_fs_read_txt.cairo
│ │ ├── testing_contract_internals/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── spying_for_events.cairo
│ │ │ │ ├── using_interact_with_state.cairo
│ │ │ │ └── using_library_calls.cairo
│ │ │ └── tests/
│ │ │ ├── interact_with_state.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── mocking_the_context_info.cairo
│ │ │ ├── spying_for_events/
│ │ │ │ ├── syscall_tests.cairo
│ │ │ │ └── tests.cairo
│ │ │ ├── spying_for_events.cairo
│ │ │ └── using_library_calls.cairo
│ │ ├── testing_events/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── syscall.cairo
│ │ │ │ └── syscall_dummy.cairo
│ │ │ └── tests/
│ │ │ ├── assert_base.cairo
│ │ │ ├── assert_emitted.cairo
│ │ │ ├── assert_manually.cairo
│ │ │ ├── filter.cairo
│ │ │ └── syscall.cairo
│ │ ├── testing_messages_to_l1/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── detailed.cairo
│ │ │ ├── lib.cairo
│ │ │ └── simple.cairo
│ │ ├── testing_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── tests.cairo
│ │ ├── testing_smart_contracts_handling_errors/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── handle_panic.cairo
│ │ │ └── panic.cairo
│ │ ├── testing_smart_contracts_safe_dispatcher/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── safe_dispatcher.cairo
│ │ ├── testing_smart_contracts_writing_tests/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── simple_contract.cairo
│ │ ├── tests_partitioning/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── tx_status/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes_cancelling_cheat/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes_cheat_address/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ └── using_cheatcodes_others/
│ │ ├── Scarb.toml
│ │ ├── src/
│ │ │ └── lib.cairo
│ │ └── tests/
│ │ ├── caller_address/
│ │ │ ├── proper_use_global.cairo
│ │ │ └── span.cairo
│ │ ├── caller_address.cairo
│ │ ├── cheat_constructor.cairo
│ │ ├── lib.cairo
│ │ ├── set_balance_custom_token.cairo
│ │ └── set_balance_strk.cairo
│ ├── src/
│ │ ├── README.md
│ │ ├── SUMMARY.md
│ │ ├── appendix/
│ │ │ ├── 0-56-0-migration-guide.md
│ │ │ ├── cheatcodes/
│ │ │ │ ├── account_contract_address.md
│ │ │ │ ├── account_deployment_data.md
│ │ │ │ ├── block_hash.md
│ │ │ │ ├── block_number.md
│ │ │ │ ├── block_timestamp.md
│ │ │ │ ├── caller_address.md
│ │ │ │ ├── chain_id.md
│ │ │ │ ├── cheat_span.md
│ │ │ │ ├── fee_data_availability_mode.md
│ │ │ │ ├── generate_arg.md
│ │ │ │ ├── generate_random_felt.md
│ │ │ │ ├── get_class_hash.md
│ │ │ │ ├── global.md
│ │ │ │ ├── interact_with_state.md
│ │ │ │ ├── l1_handler.md
│ │ │ │ ├── load.md
│ │ │ │ ├── max_fee.md
│ │ │ │ ├── mock_call.md
│ │ │ │ ├── nonce.md
│ │ │ │ ├── nonce_data_availability_mode.md
│ │ │ │ ├── paymaster_data.md
│ │ │ │ ├── proof_facts.md
│ │ │ │ ├── replace_bytecode.md
│ │ │ │ ├── resource_bounds.md
│ │ │ │ ├── sequencer_address.md
│ │ │ │ ├── set_balance.md
│ │ │ │ ├── signature.md
│ │ │ │ ├── spy_events.md
│ │ │ │ ├── spy_messages_to_l1.md
│ │ │ │ ├── store.md
│ │ │ │ ├── tip.md
│ │ │ │ ├── token.md
│ │ │ │ ├── transaction_hash.md
│ │ │ │ └── transaction_version.md
│ │ │ ├── cheatcodes.md
│ │ │ ├── inlining-optimizer.md
│ │ │ ├── scarb-toml.md
│ │ │ ├── sncast/
│ │ │ │ ├── account/
│ │ │ │ │ ├── account.md
│ │ │ │ │ ├── create.md
│ │ │ │ │ ├── delete.md
│ │ │ │ │ ├── deploy.md
│ │ │ │ │ ├── import.md
│ │ │ │ │ └── list.md
│ │ │ │ ├── balance.md
│ │ │ │ ├── call.md
│ │ │ │ ├── common.md
│ │ │ │ ├── completions.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── declare_from.md
│ │ │ │ ├── deploy.md
│ │ │ │ ├── get/
│ │ │ │ │ ├── balance.md
│ │ │ │ │ ├── class_hash_at.md
│ │ │ │ │ ├── get.md
│ │ │ │ │ ├── nonce.md
│ │ │ │ │ ├── tx-status.md
│ │ │ │ │ └── tx.md
│ │ │ │ ├── invoke.md
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── app-version.md
│ │ │ │ │ ├── get-public-key.md
│ │ │ │ │ ├── ledger.md
│ │ │ │ │ └── sign-hash.md
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── execute/
│ │ │ │ │ │ ├── deploy.md
│ │ │ │ │ │ └── invoke.md
│ │ │ │ │ ├── execute.md
│ │ │ │ │ ├── multicall.md
│ │ │ │ │ ├── new.md
│ │ │ │ │ └── run.md
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.md
│ │ │ │ │ ├── run.md
│ │ │ │ │ └── script.md
│ │ │ │ ├── show_config.md
│ │ │ │ ├── tx-status.md
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.md
│ │ │ │ │ ├── selector.md
│ │ │ │ │ ├── serialize.md
│ │ │ │ │ └── utils.md
│ │ │ │ └── verify.md
│ │ │ ├── sncast-library/
│ │ │ │ ├── call.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── deploy.md
│ │ │ │ ├── errors.md
│ │ │ │ ├── fee_settings_trait.md
│ │ │ │ ├── get_nonce.md
│ │ │ │ ├── invoke.md
│ │ │ │ └── tx_status.md
│ │ │ ├── sncast-library.md
│ │ │ ├── sncast.md
│ │ │ ├── snforge/
│ │ │ │ ├── check-requirements.md
│ │ │ │ ├── clean-cache.md
│ │ │ │ ├── clean.md
│ │ │ │ ├── completions.md
│ │ │ │ ├── new.md
│ │ │ │ ├── optimize-inlining.md
│ │ │ │ └── test.md
│ │ │ ├── snforge-library/
│ │ │ │ ├── byte_array.md
│ │ │ │ ├── contract_class.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── env.md
│ │ │ │ ├── fs/
│ │ │ │ │ ├── file.md
│ │ │ │ │ ├── file_format_rules.md
│ │ │ │ │ ├── file_parser.md
│ │ │ │ │ ├── read_json.md
│ │ │ │ │ └── read_txt.md
│ │ │ │ ├── fs.md
│ │ │ │ ├── fuzzable.md
│ │ │ │ ├── get_call_trace.md
│ │ │ │ ├── signature.md
│ │ │ │ ├── testing/
│ │ │ │ │ └── get_current_vm_step.md
│ │ │ │ └── testing.md
│ │ │ ├── snforge-library.md
│ │ │ ├── snforge.md
│ │ │ ├── snfoundry-toml.md
│ │ │ └── starknet-foundry-github-action.md
│ │ ├── development/
│ │ │ ├── environment-setup.md
│ │ │ ├── shell-snippets.md
│ │ │ └── snapshot-tests.md
│ │ ├── getting-started/
│ │ │ ├── blake-hash-support.md
│ │ │ ├── first-steps.md
│ │ │ ├── installation.md
│ │ │ └── scarb.md
│ │ ├── projects/
│ │ │ └── configuration.md
│ │ ├── snforge-advanced-features/
│ │ │ ├── debugging.md
│ │ │ ├── fork-testing.md
│ │ │ ├── fuzz-testing.md
│ │ │ ├── oracles.md
│ │ │ ├── parametrized-testing.md
│ │ │ ├── profiling.md
│ │ │ ├── storage-cheatcodes.md
│ │ │ └── tests-partitioning.md
│ │ ├── starknet/
│ │ │ ├── 101.md
│ │ │ ├── account-balance.md
│ │ │ ├── account-import.md
│ │ │ ├── account.md
│ │ │ ├── block_explorer.md
│ │ │ ├── call.md
│ │ │ ├── calldata-transformation.md
│ │ │ ├── declare.md
│ │ │ ├── deploy.md
│ │ │ ├── developer.md
│ │ │ ├── eip-2645-hd-paths.md
│ │ │ ├── integration_with_devnet.md
│ │ │ ├── invoke.md
│ │ │ ├── ledger.md
│ │ │ ├── multicall.md
│ │ │ ├── script.md
│ │ │ ├── show_config.md
│ │ │ ├── sncast-overview.md
│ │ │ ├── tx-status.md
│ │ │ └── verify.md
│ │ └── testing/
│ │ ├── contract-collection/
│ │ │ ├── new-mechanism.md
│ │ │ └── old-mechanism.md
│ │ ├── contracts-collection.md
│ │ ├── contracts.md
│ │ ├── coverage.md
│ │ ├── gas-and-resource-estimation.md
│ │ ├── running-tests.md
│ │ ├── test-attributes.md
│ │ ├── test-collection.md
│ │ ├── testing-contract-internals.md
│ │ ├── testing-events.md
│ │ ├── testing-messages-to-l1.md
│ │ ├── testing-workspaces.md
│ │ ├── testing.md
│ │ └── using-cheatcodes.md
│ └── theme/
│ ├── head.hbs
│ ├── header.hbs
│ └── index.hbs
├── scripts/
│ ├── build_docs.sh
│ ├── check_snapshots.sh
│ ├── compareVersions.js
│ ├── get_scarb_versions.sh
│ ├── handle_version.sh
│ ├── install.sh
│ ├── package.json
│ ├── package.sh
│ ├── release.sh
│ ├── scarbfmt.sh
│ ├── smoke_test.sh
│ ├── snfoundryup
│ └── verify_cairo_listings.sh
├── sncast_std/
│ ├── README.md
│ ├── Scarb.lock
│ ├── Scarb.toml
│ └── src/
│ └── lib.cairo
├── snforge_std/
│ ├── README.md
│ ├── Scarb.lock
│ ├── Scarb.toml
│ └── src/
│ ├── byte_array.cairo
│ ├── cheatcode.cairo
│ ├── cheatcodes/
│ │ ├── block_hash.cairo
│ │ ├── contract_class.cairo
│ │ ├── erc20.cairo
│ │ ├── events.cairo
│ │ ├── execution_info/
│ │ │ ├── account_contract_address.cairo
│ │ │ ├── account_deployment_data.cairo
│ │ │ ├── block_number.cairo
│ │ │ ├── block_timestamp.cairo
│ │ │ ├── caller_address.cairo
│ │ │ ├── chain_id.cairo
│ │ │ ├── contract_address.cairo
│ │ │ ├── fee_data_availability_mode.cairo
│ │ │ ├── max_fee.cairo
│ │ │ ├── nonce.cairo
│ │ │ ├── nonce_data_availability_mode.cairo
│ │ │ ├── paymaster_data.cairo
│ │ │ ├── proof_facts.cairo
│ │ │ ├── resource_bounds.cairo
│ │ │ ├── sequencer_address.cairo
│ │ │ ├── signature.cairo
│ │ │ ├── tip.cairo
│ │ │ ├── transaction_hash.cairo
│ │ │ └── version.cairo
│ │ ├── execution_info.cairo
│ │ ├── generate_arg.cairo
│ │ ├── generate_random_felt.cairo
│ │ ├── l1_handler.cairo
│ │ ├── message_to_l1.cairo
│ │ └── storage.cairo
│ ├── cheatcodes.cairo
│ ├── config_types.cairo
│ ├── env/
│ │ └── env_vars.cairo
│ ├── env.cairo
│ ├── fs/
│ │ └── file_operations.cairo
│ ├── fs.cairo
│ ├── fuzzable.cairo
│ ├── lib.cairo
│ ├── signature/
│ │ ├── secp256k1_curve.cairo
│ │ ├── secp256r1_curve.cairo
│ │ └── stark_curve.cairo
│ ├── signature.cairo
│ ├── testing.cairo
│ └── trace.cairo
└── snforge_templates/
├── balance_contract/
│ ├── src/
│ │ └── lib.cairo
│ └── tests/
│ └── test_contract.cairo
├── cairo_program/
│ └── src/
│ └── lib.cairo
└── erc20_contract/
├── src/
│ ├── lib.cairo
│ ├── mock_erc20.cairo
│ └── token_sender.cairo
└── tests/
├── test_erc20.cairo
└── test_token_sender.cairo
================================================
FILE CONTENTS
================================================
================================================
FILE: .cargo/config.toml
================================================
[alias]
lint = "clippy --all-targets --all-features -- --no-deps -W clippy::pedantic -W clippy::undocumented_unsafe_blocks -A clippy::module_name_repetitions -A clippy::missing_errors_doc -A clippy::missing_panics_doc"
================================================
FILE: .gitattributes
================================================
*.* text eol=lf
*.png -text
*.jpg -text
*.gif -text
================================================
FILE: .github/CODEOWNERS
================================================
* @foundry-rs/starknet-foundry
================================================
FILE: .github/ISSUE_TEMPLATE/1-bug_report.yml
================================================
name: Problem Report
description: Report a problem with a tool
type: "Bug"
body:
- type: dropdown
id: tool-name
attributes:
label: Select Tool
description: Select for which tool you would like to report a bug.
multiple: false
options:
- snforge
- sncast
validations:
required: true
- type: input
id: foundry-version
attributes:
label: Foundry Version
description: What tool version are you using? This can be checked by running `snforge --version` and `sncast --version` accordingly.
validations:
required: true
- type: dropdown
id: operating-system
attributes:
label: What operating system are you using?
multiple: false
options:
- Linux
- MacOS
validations:
required: true
- type: dropdown
id: system-architecture
attributes:
label: What system architecture are you using?
multiple: false
options:
- x86
- arm
validations:
required: true
- type: textarea
id: what-happened
attributes:
label: Issue Description
description: Describe the problem that happened to you. The more details you provide, the better.
placeholder: Running `snforge` doesn't produce tests
validations:
required: true
- type: textarea
id: logs
attributes:
label: Command Line Output
description: If relevant, please provide the command output related to the problem described above.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/2-feature_request.yml
================================================
name: Feature Request
description: Request a feature to be added to a tool
type: "Feature"
body:
- type: dropdown
id: tool-name
attributes:
label: Select Tool
description: Select for which tool you would like to request a feature.
multiple: false
options:
- snforge
- sncast
validations:
required: true
- type: textarea
id: Suggestion
attributes:
label: Requested Feature
description: Describe the feature you would like to be added to the tool selected above.
validations:
required: true
================================================
FILE: .github/ISSUE_TEMPLATE/3-work_item.yml
================================================
name: Work Item
description: Submit an actionable task
body:
- type: textarea
id: current-state
attributes:
label: Current State
description: Describe the current state and outline the problem
placeholder: Currently, the `print_a` cheatcode prints `"a"` to stdout. This is problematic because user might want it to be printed on their actual printer.
validations:
required: true
- type: input
id: objective
attributes:
label: Objective
description: Briefly describe the correct state
placeholder: The `print_a` cheatcode should magically detect if user wants to print to stdout or a printer.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Provide additional context on the desired state.
placeholder: If we can detect any printers in local network it might indicate that user wants to print to it.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/4-child_work_item.yml
================================================
name: Child Item
description: Child work item for tracking issues
type: "Task"
body:
- type: input
id: objective
attributes:
label: Objective
description: Briefly describe the task
placeholder: Add unit tests for `print_a` cheatcode.
validations:
required: true
- type: textarea
id: additional-context
attributes:
label: Additional Context
description: Provide additional context on the task
placeholder: Make sure to include case where `print_a` cheatcode is called with an empty string.
validations:
required: false
================================================
FILE: .github/ISSUE_TEMPLATE/config.yml
================================================
blank_issues_enabled: false
contact_links:
- name: Telegram Support Channel
url: https://t.me/starknet_foundry_support
about: This issue tracker is only for bugs and feature requests. Support is available through Telegram channel.
================================================
FILE: .github/actions/setup-tools/action.yml
================================================
name: Setup Tools
description: Installs Rust and optionally Scarb, Universal Sierra Compiler and LLVM 19 toolchain
inputs:
install-llvm:
description: 'Whether to install the LLVM 19 toolchain'
required: false
default: 'false'
setup-scarb:
description: 'Whether to setup scarb'
required: false
default: 'true'
scarb-version:
description: 'Optional: Scarb version to install. If not set, uses version from .tool-versions'
required: false
default: ''
setup-usc:
description: 'Whether to setup universal-sierra-compiler'
required: false
default: 'true'
runs:
using: "composite"
steps:
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@9d47c6ad4b02e050fd481d890b2ea34778fd09d6
- uses: software-mansion/setup-scarb@v1
if: ${{ inputs.setup-scarb == 'true' }}
with:
scarb-version: ${{ inputs.scarb-version }}
- uses: software-mansion/setup-universal-sierra-compiler@v1
if: ${{ inputs.setup-usc == 'true' }}
- name: Add LLVM APT repository
uses: myci-actions/add-deb-repo@11
if: ${{ inputs.install-llvm == 'true' }}
with:
repo: deb http://apt.llvm.org/jammy/ llvm-toolchain-jammy-19 main
repo-name: llvm-repo
keys-asc: https://apt.llvm.org/llvm-snapshot.gpg.key
- name: Install LLVM
shell: bash
if: ${{ inputs.install-llvm == 'true' }}
run: |
sudo apt-get update
sudo apt-get install -y \
llvm-19 llvm-19-dev llvm-19-runtime \
clang-19 clang-tools-19 \
lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools
- name: Set environment variables
if: ${{ inputs.install-llvm == 'true' }}
shell: bash
run: |
echo "MLIR_SYS_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "LLVM_SYS_191_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
echo "TABLEGEN_190_PREFIX=/usr/lib/llvm-19/" >> $GITHUB_ENV
================================================
FILE: .github/dependabot.yml
================================================
# To get started with Dependabot version updates, you'll need to specify which
# package ecosystems to update and where the package manifests are located.
# Please see the documentation for all configuration options:
# https://docs.github.com/github/administering-a-repository/configuration-options-for-dependency-updates
version: 2
updates:
- package-ecosystem: "cargo"
directory: "/"
schedule:
interval: "monthly"
ignore:
- dependency-name: "cairo-*"
groups:
all-dependencies:
patterns:
- "*"
- package-ecosystem: "github-actions"
directory: "/"
schedule:
interval: "monthly"
groups:
actions:
patterns:
- "*"
================================================
FILE: .github/pull_request_template.md
================================================
<!-- Reference any GitHub issues resolved by this PR -->
Closes #
## Introduced changes
<!-- A brief description of the changes -->
-
## Checklist
<!-- Make sure all of these are complete -->
- [ ] Linked relevant issue
- [ ] Updated relevant documentation
- [ ] Added relevant tests
- [ ] Performed self-review of the code
- [ ] Added changes to `CHANGELOG.md`
================================================
FILE: .github/workflows/_build-binaries-native.yml
================================================
# NOTE: This is a draft created for the future if we continue integration with the native.
# TODO(#3790) this is currently unused, integrate into nightly release flow
name: Build Native binaries
on:
workflow_call:
inputs:
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
version:
required: true
type: string
ref:
required: false
type: string
jobs:
build-binaries:
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
env:
# Cross-compiled targets will override this to `cross`.
CARGO: cargo
strategy:
matrix:
# Currently we have only managed to build successfuly on x86 gnu Linux
# - On MacOS, LLVM is installed with brew and the built binary requires having LLVM installed through it,
# even though it is supossed to be bundled.
# - MUSL Linux was not investigated
# - Aarch64 Linux requires LLVM to be build for Aarch64, but proc macros run against host OS, which is x86_64
# when building through cross. With current setup, we install LLVM for only one of these arches.
# We need to investigate cross compiling LLVM for multiple architectures.
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
system: linux
# - target: x86_64-unknown-linux-musl
# os: ubuntu-latest
# system: linux
#
# - target: aarch64-unknown-linux-gnu
# os: ubuntu-latest
# system: linux
#
# - target: aarch64-unknown-linux-musl
# os: ubuntu-latest
# system: linux
#
# - target: x86_64-apple-darwin
# os: macos-14-large
# system: macos
#
# - target: aarch64-apple-darwin
# os: macos-latest
# system: macos
steps:
- name: Checkout with ref
if: inputs.ref != ''
uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
- name: Checkout default
if: inputs.ref == ''
uses: actions/checkout@v6
- name: Setup rust
run: |
rustup target add ${{ matrix.target }}
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- name: Setup LLVM on MacOS
if: matrix.system == 'macos'
run: |
brew install llvm@19
brew reinstall zstd
echo "MLIR_SYS_190_PREFIX=$(brew --prefix llvm@19)" >> $GITHUB_ENV
echo "LLVM_SYS_191_PREFIX=$(brew --prefix llvm@19)" >> $GITHUB_ENV
echo "TABLEGEN_190_PREFIX=$(brew --prefix llvm@19)" >> $GITHUB_ENV
echo "LIBRARY_PATH=/opt/homebrew/lib" >> $GITHUB_ENV
- name: Install cross
if: matrix.system == 'linux'
run: |
cargo install cross --git https://github.com/cross-rs/cross
- name: Build MacOS
if: matrix.system == 'macos'
run: |
export MLIR_SYS_190_PREFIX=${{ env.MLIR_SYS_190_PREFIX }}
export LLVM_SYS_191_PREFIX=${{ env.LLVM_SYS_191_PREFIX }}
export TABLEGEN_190_PREFIX=${{ env.TABLEGEN_190_PREFIX }}
export LIBRARY_PATH=${{ env.LIBRARY_PATH }}
cargo build --release --locked --target ${{ matrix.target }}
- name: Build Linux
if: matrix.system == 'linux'
run: |
# Use cross to link oldest GLIBC possible.
cross build --release --locked --target ${{ matrix.target }}
- name: Package
shell: bash
run: |
set -euxo pipefail
PKG_FULL_NAME="starknet-foundry-v${{ inputs.version }}-${{ matrix.target }}"
echo "PKG_FULL_NAME=$PKG_FULL_NAME" >> $GITHUB_ENV
./scripts/package.sh "${{ matrix.target }}" "$PKG_FULL_NAME"
- name: Upload artifact
uses: actions/upload-artifact@v5
with:
# TODO(#3790): Perhaps this name needs to be changed to avoid conflicts with `_build-binaries.yml` workflow
name: build-${{ matrix.target }}
path: ${{ env.PKG_FULL_NAME }}.*
================================================
FILE: .github/workflows/_build-binaries.yml
================================================
name: Build binaries
on:
workflow_call:
inputs:
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
version:
required: true
type: string
ref:
required: false
type: string
jobs:
build-binaries:
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
env:
# Cross-compiled targets will override this to `cross`.
CARGO: cargo
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
# Use cross to link oldest GLIBC possible.
cross: true
- target: x86_64-unknown-linux-musl
os: ubuntu-latest
cross: true
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
cross: true
- target: aarch64-unknown-linux-musl
os: ubuntu-latest
cross: true
- target: x86_64-apple-darwin
os: macos-latest
- target: aarch64-apple-darwin
os: macos-latest
steps:
- name: Checkout with ref
if: inputs.ref != ''
uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
- name: Checkout default
if: inputs.ref == ''
uses: actions/checkout@v6
- name: Setup rust
run: |
rustup target add ${{ matrix.target }}
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
with:
workspaces: starknet-foundry
- name: Install cross
if: matrix.cross
uses: taiki-e/install-action@cross
- name: Enable cross-compilation
if: matrix.cross
shell: bash
run: |
echo "CARGO=cross" >> $GITHUB_ENV
- name: Build
run: ${{ env.CARGO }} build --release --locked --bins --target ${{ matrix.target }}
- name: Package
shell: bash
run: |
set -euxo pipefail
PKG_FULL_NAME="starknet-foundry-v${{ inputs.version }}-${{ matrix.target }}"
echo "PKG_FULL_NAME=$PKG_FULL_NAME" >> $GITHUB_ENV
./scripts/package.sh "${{ matrix.target }}" "$PKG_FULL_NAME"
- name: Upload artifact
uses: actions/upload-artifact@v5
with:
name: build-${{ matrix.target }}
path: ${{ env.PKG_FULL_NAME }}.*
overwrite: true
================================================
FILE: .github/workflows/_build-plugin-binaries.yml
================================================
name: Build snforge_scarb_plugin
on:
workflow_call:
inputs:
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
overridden_plugin_version:
required: false
type: string
ref:
required: false
type: string
plugin_name:
required: true
type: string
workflow_dispatch:
inputs:
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
overridden_plugin_version:
required: false
type: string
plugin_name:
required: true
type: string
jobs:
build-binaries:
name: Build ${{ matrix.target }}
runs-on: ${{ matrix.os }}
env:
# Cross-compiled targets will override this to `cross`.
CARGO: cargo
strategy:
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
# Use cross to link oldest GLIBC possible.
cross: true
lib-name-prefix: "lib"
ext: "so"
- target: aarch64-unknown-linux-gnu
os: ubuntu-latest
cross: true
lib-name-prefix: "lib"
ext: "so"
- target: x86_64-apple-darwin
os: macos-latest
lib-name-prefix: "lib"
ext: "dylib"
- target: aarch64-apple-darwin
os: macos-latest
lib-name-prefix: "lib"
ext: "dylib"
# The scarb builds for following platforms are experimental and not officially supported by starknet-foundry.
# https://docs.swmansion.com/scarb/download.html#platform-support
# Reference issue: TODO(#2886)
# - target: aarch64-unknown-linux-musl
# os: ubuntu-latest
# cross: true
# ext: "so"
# - target: x86_64-unknown-linux-musl
# os: ubuntu-latest
# cross: true
# ext: "so"
steps:
- name: Checkout with ref
if: inputs.ref != ''
uses: actions/checkout@v6
with:
ref: ${{ inputs.ref }}
- name: Checkout default
if: inputs.ref == ''
uses: actions/checkout@v6
- name: Setup rust
run: |
rustup target add ${{ matrix.target }}
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- name: Install cross
if: matrix.cross
uses: taiki-e/install-action@cross
- name: Enable cross-compilation
if: matrix.cross
shell: bash
run: |
echo "CARGO=cross" >> $GITHUB_ENV
- name: Build
working-directory: crates/${{ inputs.plugin_name }}
run: ${{ env.CARGO }} build --release --locked --target ${{ matrix.target }}
- name: Rename Binary
shell: bash
run: |
set -euxo pipefail
source scripts/handle_version.sh
PACKAGE_NAME=${{ inputs.plugin_name }}
PACKAGE_NAME=${PACKAGE_NAME//-/_} # Replace `-` with `_` in name
PACKAGE_VERSION=$(get_version "${{ inputs.overridden_plugin_version }}" "crates/${{ inputs.plugin_name }}/Scarb.toml")
TARGET="${{ matrix.target }}"
EXT="${{ matrix.ext }}"
LIB_NAME="${{ matrix.lib-name-prefix }}${PACKAGE_NAME}"
OUTPUT_BINARY="${PACKAGE_NAME}_v${PACKAGE_VERSION}_${TARGET}.${EXT}"
mv ./crates/${{ inputs.plugin_name }}/target/${TARGET}/release/${LIB_NAME}.${EXT} ./crates/${{ inputs.plugin_name }}/target/${TARGET}/release/${OUTPUT_BINARY}
echo "OUTPUT_BINARY_PATH=./crates/${{ inputs.plugin_name }}/target/${TARGET}/release/${OUTPUT_BINARY}" >> $GITHUB_ENV
- name: Upload Artifact
uses: actions/upload-artifact@v5
with:
name: build-${{ inputs.plugin_name }}-${{ matrix.target }}
path: ${{ env.OUTPUT_BINARY_PATH }}
compression-level: 0
overwrite: true
================================================
FILE: .github/workflows/_publish-plugin.yml
================================================
name: Upload plugin to registry
on:
workflow_call:
inputs:
prod_registry:
required: false
type: boolean
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
overridden_plugin_version:
required: false
type: string
plugin_name:
required: true
type: string
jobs:
check-uploaded:
name: Check ${{ inputs.plugin_name }} Version
runs-on: ubuntu-latest
outputs:
plugin_uploaded: ${{ steps.check-uploaded.outputs.plugin_uploaded }}
steps:
- uses: actions/checkout@v6
- name: Check version
id: check-uploaded
run: |
set -exo pipefail
source scripts/handle_version.sh
plugin_name_underscores=${{ inputs.plugin_name }}
plugin_name_underscores=${plugin_name_underscores//-/_}
plugin_version=$(get_version "${{ inputs.overridden_plugin_version }}" "crates/${{ inputs.plugin_name }}/Scarb.toml")
registry_url=${{ inputs.prod_registry == true && 'https://scarbs.xyz' || 'https://scarbs.dev' }}
plugin_uploaded=$(curl -s ${registry_url}/api/v1/index/sn/fo/${plugin_name_underscores}.json | jq --arg version "$plugin_version" '[.[] | select(.v == $version)] | length > 0')
echo "plugin_uploaded=$plugin_uploaded" >> $GITHUB_OUTPUT
upload-to-registry:
name: Upload ${{ inputs.plugin_name }} to the registry
runs-on: ubuntu-latest
needs: [check-uploaded]
env:
SCARB_REGISTRY_AUTH_TOKEN: ${{ inputs.prod_registry == true && secrets.SCARB_REGISTRY_AUTH_TOKEN || secrets.DEV_SCARB_REGISTRY_AUTH_TOKEN }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: software-mansion/setup-scarb@v1
- name: Download artifacts
uses: actions/download-artifact@v6
with:
path: artifacts-dl
- name: Unpack artifacts to target directory
run: |
set -euxo pipefail
plugin_name_underscores=${{ inputs.plugin_name }}
plugin_name_underscores=${plugin_name_underscores//-/_}
mkdir -p crates/${{ inputs.plugin_name }}/target/scarb/cairo-plugin
mv artifacts-dl/build-*/${plugin_name_underscores}_v* crates/${{ inputs.plugin_name }}/target/scarb/cairo-plugin/
# Required for testing prebuild plugin while creating release.
if [[ -n "${{ inputs.overridden_plugin_version }}" ]]; then
cd crates/${{ inputs.plugin_name }}/target/scarb/cairo-plugin/
overridden_version="${{ inputs.overridden_plugin_version }}"
for file in ${plugin_name_underscores}_v*; do
if [[ -f "$file" && ! "$file" =~ "${plugin_name_underscores}_v${overridden_version}" ]]; then
platform=$(echo "$file" | sed -E "s/${plugin_name_underscores}_v[0-9]+\.[0-9]+\.[0-9]+(-rc.[0-9]+)?_(.+)/\2/")
new_file="${plugin_name_underscores}_v${overridden_version}_${platform}"
mv "$file" "$new_file"
fi
done
fi
- name: Publish ${{ inputs.plugin_name }}
if: needs.check-uploaded.outputs.plugin_uploaded == 'false'
working-directory: crates/${{ inputs.plugin_name }}
run: |
set -exo pipefail
source ../../scripts/handle_version.sh
update_version_in_file "Scarb.toml" "${{ inputs.overridden_plugin_version }}"
update_version_in_file "Cargo.toml" "${{ inputs.overridden_plugin_version }}"
scarb publish --allow-dirty ${{ inputs.prod_registry == true && ' ' || '--index https://scarbs.dev/' }}
================================================
FILE: .github/workflows/_test-binaries.yml
================================================
name: Test binaries
on:
workflow_call:
inputs:
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
bin_version:
required: true
type: string
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
std_version:
required: true
type: string
jobs:
test-binary:
name: Test binary
runs-on: ${{ matrix.os }}
strategy:
fail-fast: true
matrix:
include:
- target: x86_64-unknown-linux-gnu
os: ubuntu-latest
- target: aarch64-apple-darwin
os: macos-latest
- target: x86_64-apple-darwin
# Target macos-latest uses Mac with ARM, macos-14-large is still on Intel
os: macos-14-large
steps:
- uses: actions/checkout@v6
- uses: software-mansion/setup-scarb@v1
- name: Setup rust
run: |
rustup target add ${{ matrix.target }}
- name: Download artifacts
uses: actions/download-artifact@v6
with:
path: artifacts-dl
- name: Move artifacts to staging directory
shell: bash
run: |
mkdir -p artifacts
mv artifacts-dl/build-*/starknet-foundry-v* artifacts/
- name: Get artifacts path
shell: bash
run: |
ARTIFACTS_PATH="artifacts/starknet-foundry-v${{ inputs.bin_version }}-${{ matrix.target }}.tar.gz"
echo "ARTIFACTS_PATH=$ARTIFACTS_PATH" >> $GITHUB_ENV
- name: Unpack artifact
shell: bash
run: |
tar xzvf ${{ env.ARTIFACTS_PATH }}
- name: Install universal-sierra-compiler
uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Smoke test
shell: bash
env:
RPC_URL: ${{ secrets.NODE_URL }}
run: |
ARTIFACTS_PATH="${{ env.ARTIFACTS_PATH }}"
ARTIFACTS_PATH="${ARTIFACTS_PATH%.tar.gz}"
ARTIFACTS_PATH="${ARTIFACTS_PATH%.zip}"
ARTIFACTS_PATH="${ARTIFACTS_PATH#artifacts/}"
SNFORGE_PATH=$(readlink -f $ARTIFACTS_PATH/bin/snforge)
SNCAST_PATH=$(readlink -f $ARTIFACTS_PATH/bin/sncast)
REPO_URL=${{ github.repositoryUrl }}
REVISION=${{ github.event_name == 'pull_request' && github.event.pull_request.head.sha || github.sha }}
VERSION=${{ inputs.std_version }}
./scripts/smoke_test.sh "$RPC_URL" "$SNFORGE_PATH" "$SNCAST_PATH" "$REPO_URL" "$REVISION" "$VERSION"
================================================
FILE: .github/workflows/automate-stale.yml
================================================
name: 'Automation - Stale issues and PRs'
on:
schedule:
- cron: '0 7 * * 1-5'
env:
DAYS_BEFORE_STALE: 30
DAYS_BEFORE_CLOSE: 14
jobs:
stale:
runs-on: ubuntu-latest
permissions:
pull-requests: write
steps:
- name: Run Stale Bot
id: stale
uses: actions/stale@v10
with:
# General settings
days-before-stale: ${{ env.DAYS_BEFORE_STALE }}
days-before-close: ${{ env.DAYS_BEFORE_CLOSE }}
operations-per-run: 3000
enable-statistics: true # This is only useful if secret ACTIONS_STEP_DEBUG=true
remove-stale-when-updated: true
# PR settings
stale-pr-label: stale
stale-pr-message: |
Hi! This pull request hasn't had any activity for a while, so I am
marking it as stale. It will close in ${{ env.DAYS_BEFORE_CLOSE }}
days if it is not updated. Thanks for contributing!
close-pr-message: |
This pull request has been automatically closed due to inactivity.
Feel free to reopen it or create a new one if needed.
Thanks for contributing!
================================================
FILE: .github/workflows/ci.yml
================================================
name: CI
on:
pull_request:
merge_group:
push:
branches:
- master
workflow_dispatch:
concurrency:
group: ${{ github.head_ref || github.run_id }}
cancel-in-progress: true
jobs:
get-scarb-versions:
if: github.event_name == 'merge_group'
name: Get Scarb versions
runs-on: ubuntu-latest
outputs:
versions: ${{ steps.get_versions.outputs.versions }}
steps:
- uses: actions/checkout@v6
- uses: asdf-vm/actions/setup@b7bcd026f18772e44fe1026d729e1611cc435d47
- run: |
asdf plugin add scarb
asdf install scarb latest
asdf set --home scarb latest
- name: Get versions
id: get_versions
run: |
scarb_versions=$(./scripts/get_scarb_versions.sh --previous)
echo ${scarb_versions[@]}
echo "versions=[${scarb_versions[@]}]" >> "$GITHUB_OUTPUT"
test-workspace:
# Runs tests from all crates across the workspace, except:
# - `sncast` tests
# - `forge` integration and e2e tests
# `native-api` is also excluded as there are no tests and it requires extra setup to compile.
name: Workspace Tests
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
- run: cargo test --profile ci --workspace --exclude sncast --exclude forge --exclude native-api
- run: cargo test --profile ci --lib -p forge
build-test-forge-nextest-archive:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
with:
setup-scarb: 'false'
setup-usc: 'false'
- name: Install nextest
uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- name: Determine test features
id: test_features
run: |
FEATURES="run_test_for_scarb_since_2_15_1"
echo "features=$FEATURES" >> "$GITHUB_OUTPUT"
- name: Build and archive tests
run: |
if [ -n "${{ steps.test_features.outputs.features }}" ]; then
cargo nextest archive --cargo-profile ci -p forge --features "${{ steps.test_features.outputs.features }}" --archive-file 'nextest-archive-${{ runner.os }}.tar.zst'
else
cargo nextest archive --cargo-profile ci -p forge --archive-file 'nextest-archive-${{ runner.os }}.tar.zst'
fi
- name: Upload archive to workflow
uses: actions/upload-artifact@v5
with:
name: nextest-archive-${{ runner.os }}
path: nextest-archive-${{ runner.os }}.tar.zst
build-test-forge-nextest-archive-native:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
with:
install-llvm: 'true'
setup-scarb: 'false'
setup-usc: 'false'
- name: Install nextest
uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- name: Determine test features
id: test_features
run: |
FEATURES="cairo-native,run_test_for_scarb_since_2_15_1"
echo "features=$FEATURES" >> "$GITHUB_OUTPUT"
- name: Build and archive tests
run: cargo nextest archive --cargo-profile ci -p forge --features "${{ steps.test_features.outputs.features }}" --archive-file 'nextest-archive-${{ runner.os }}-native.tar.zst'
- name: Upload archive to workflow
uses: actions/upload-artifact@v5
with:
name: nextest-archive-${{ runner.os }}-native
path: nextest-archive-${{ runner.os }}-native.tar.zst
test-forge-integration:
name: Test Forge / Integration Tests
runs-on: [ ubuntu-latest ]
needs: [ build-test-forge-nextest-archive ]
strategy:
fail-fast: false
matrix:
partition: [ 1, 2, 3 ]
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
- uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- uses: actions/download-artifact@v6
with:
name: nextest-archive-${{ runner.os }}
- name: nextest partition ${{ matrix.partition }}/3
run: cargo nextest run --no-fail-fast --partition 'count:${{ matrix.partition }}/3' --archive-file 'nextest-archive-${{ runner.os }}.tar.zst' integration
test-forge-integration-native:
name: Test Forge / Integration Tests (native)
runs-on: [ ubuntu-latest ]
needs: [ build-test-forge-nextest-archive-native ]
strategy:
fail-fast: false
matrix:
partition: [ 1, 2, 3 ]
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
- uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- uses: actions/download-artifact@v6
with:
name: nextest-archive-${{ runner.os }}-native
- name: nextest partition ${{ matrix.partition }}/3
run: cargo nextest run --no-fail-fast --partition 'count:${{ matrix.partition }}/3' --archive-file 'nextest-archive-${{ runner.os }}-native.tar.zst' integration
test-forge-e2e:
name: Test Forge / E2E Tests
runs-on: ubuntu-latest
needs: [ build-test-forge-nextest-archive ]
strategy:
fail-fast: false
matrix:
partition: [ 1, 2, 3 ]
steps:
- name: Extract branch name
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
shell: bash
- name: Extract branch name on pull request
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner
if: github.event_name != 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner on pull request
if: github.event_name == 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV
shell: bash
- name: Install cairo-profiler
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- uses: actions/checkout@v6
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
- uses: ./.github/actions/setup-tools
- uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- uses: actions/download-artifact@v6
with:
name: nextest-archive-${{ runner.os }}
- name: nextest partition ${{ matrix.partition }}/3
run: cargo nextest run --no-fail-fast --partition 'count:${{ matrix.partition }}/3' --archive-file 'nextest-archive-${{ runner.os }}.tar.zst' e2e
test-forge-e2e-native:
name: Test Forge / E2E Tests (native)
runs-on: ubuntu-latest
needs: [ build-test-forge-nextest-archive-native ]
strategy:
fail-fast: false
matrix:
partition: [ 1, 2, 3 ]
steps:
- name: Extract branch name
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
shell: bash
- name: Extract branch name on pull request
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner
if: github.event_name != 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner on pull request
if: github.event_name == 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV
shell: bash
- name: Install cairo-profiler
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- uses: actions/checkout@v6
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
- uses: ./.github/actions/setup-tools
- uses: taiki-e/install-action@v2
with:
tool: nextest@0.9.98
- uses: actions/download-artifact@v6
with:
name: nextest-archive-${{ runner.os }}-native
- name: nextest partition ${{ matrix.partition }}/3
run: cargo nextest run --no-fail-fast --partition 'count:${{ matrix.partition }}/3' --archive-file 'nextest-archive-${{ runner.os }}-native.tar.zst' e2e
test-forge-e2e-snap:
if: github.event_name == 'merge_group'
name: Test Forge / E2E Snap (Scarb ${{ matrix.version }})
runs-on: ubuntu-latest
needs: get-scarb-versions
strategy:
fail-fast: false
matrix:
version: ${{ fromJSON(needs.get-scarb-versions.outputs.versions) }}
steps:
- name: Extract branch name
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
shell: bash
- name: Extract branch name on pull request
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner
if: github.event_name != 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV
shell: bash
- name: Extract repo name and owner on pull request
if: github.event_name == 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV
shell: bash
- name: Install cairo-profiler
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
with:
scarb-version: ${{ matrix.version }}
- name: Run snap E2E tests
run: cargo test --profile ci -p forge --test main snap_
test-plugin-checks:
name: Test plugin across different scarb versions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
# No setup scarb action is used because we want to install multiple versions of scarb through asdf
with:
setup-scarb: 'false'
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
- run: cargo test --profile ci --package forge --features test_for_multiple_scarb_versions e2e::plugin_diagnostic
test-requirements-check-special-conditions:
name: Test requirements check special conditions
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
with:
setup-scarb: 'false'
- run: cargo test --profile ci --package forge --features no_scarb_installed --lib compatibility_check::tests::failing_tool_not_installed
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: "2.12.0"
- run: cargo test --profile ci --package forge --features scarb_2_12_0 --test main e2e::requirements::test_warning_on_scarb_version_below_recommended
test-forge-oracles:
name: Test Oracles in Forge
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v5
- uses: ./.github/actions/setup-tools
with:
scarb-version: '2.13.1'
- run: cargo test --profile ci -p forge --features run_test_for_scarb_since_2_13_1 e2e::oracles
test-forge-scarb-plugin:
name: Test Forge Scarb Plugin
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
- name: Run Forge Scarb Plugin tests
working-directory: crates/snforge-scarb-plugin
run: cargo test --profile ci
test-cast:
name: Test Cast
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
- uses: ./.github/actions/setup-tools
- name: Run tests
run: cargo test --profile ci -p sncast
test-ledger:
name: Test Ledger
runs-on: ubuntu-latest
container: ghcr.io/ledgerhq/ledger-app-builder/ledger-app-dev-tools
steps:
- uses: actions/checkout@v6
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
- uses: ./.github/actions/setup-tools
- name: Run tests
run: cargo test --profile ci -p sncast --features ledger-emulator ledger -- --ignored
fmt-lint-typos:
name: Lint and Format
runs-on: ubuntu-latest
env:
# Make sure CI fails on all warnings - including Clippy lints.
RUSTFLAGS: "-Dwarnings"
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
with:
install-llvm: 'true'
setup-usc: 'false'
- run: rustup component add rustfmt
- name: Check formatting
run: cargo fmt --check
- name: Check formatting snforge-scarb-plugin
run: cargo fmt --check
working-directory: crates/snforge-scarb-plugin
- name: Lint
run: cargo lint
- name: Lint snforge-scarb-plugin
run: cargo lint
working-directory: crates/snforge-scarb-plugin
- name: Check cairo files format
run: |
output=$(find . -type f -name "Scarb.toml" -execdir sh -c '
echo "Running \"scarb fmt\" in directory: $PWD"
scarb fmt --check
' \;)
echo "$output"
if grep -iq "Diff" <<< "$output"; then
exit 1
fi
exit 0
- name: Check typos
uses: crate-ci/typos@v1.40.0
build-docs:
name: Test Building Docs
runs-on: ubuntu-latest
env:
MDBOOK_VERSION: 0.4.52
# TODO(#3970): Use latest version after resolving issue
MDBOOK_VARIABLES_VERSION: 0.3.0
steps:
- uses: actions/checkout@v6
- uses: ./.github/actions/setup-tools
- name: Install mdBook
run: |
cargo install --version ${MDBOOK_VERSION} mdbook
cargo install --version ${MDBOOK_VARIABLES_VERSION} mdbook-variables
- name: Install mdBook Link-Check
run: |
cargo install mdbook-linkcheck
- name: Build with mdBook
run: |
# TODO(#2781): Use `mdbook build`
./scripts/build_docs.sh
- name: Install Forge
env:
CARGO_INCREMENTAL: 0
run: |
cargo install --path crates/forge --locked --debug
- name: Verify Cairo listings
run: |
./scripts/verify_cairo_listings.sh
================================================
FILE: .github/workflows/docs.yml
================================================
# Initial version from: https://github.com/actions/starter-workflows/blob/main/pages/mdbook.yml
#
name: Deploy mdBook site to Pages
on:
# Allows using this workflow in other workflows
workflow_call:
# Allows you to run this workflow manually from the Actions tab
workflow_dispatch:
release:
types:
- released
# Sets permissions of the GITHUB_TOKEN to allow deployment to GitHub Pages
permissions:
contents: read
pages: write
id-token: write
# Allow only one concurrent deployment, skipping runs queued between the run in-progress and latest queued.
# However, do NOT cancel in-progress runs as we want to allow these production deployments to complete.
concurrency:
group: "pages"
cancel-in-progress: false
jobs:
# Build job
build:
runs-on: ubuntu-latest
env:
MDBOOK_VERSION: 0.4.52
# TODO(#3970): Use latest version after resolving issue
MDBOOK_VARIABLES_VERSION: 0.3.0
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e
with:
toolchain: stable
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- uses: actions/setup-node@v6
- name: Install sitemap CLI
run: |
npm i -g static-sitemap-cli
- name: Install mdBook
run: |
cargo install --version ${MDBOOK_VERSION} mdbook
cargo install --version ${MDBOOK_VARIABLES_VERSION} mdbook-variables
- name: Install mdBook Link-Check
run: |
cargo install mdbook-linkcheck
- name: Install Scarb
uses: software-mansion/setup-scarb@v1
with:
scarb-version: latest
- name: Generate and build snforge_std docs
run: scarb doc --build
working-directory: ./snforge_std
- name: Generate and build sncast_std docs
run: scarb doc --build
working-directory: ./sncast_std
- name: Setup Pages
id: pages
uses: actions/configure-pages@v5
- name: Build with mdBook
run: mdbook build
working-directory: ./docs
- name: Add snforge_std docs
run: |
mkdir -p ./docs/book/html/snforge_std
cp -r ./snforge_std/target/doc/snforge_std/book/* ./docs/book/html/snforge_std/
- name: Add sncast_std docs
run: |
mkdir -p ./docs/book/html/sncast_std
cp -r ./sncast_std/target/doc/sncast_std/book/* ./docs/book/html/sncast_std/
- name: Generate sitemap
run: |
sscli --base https://foundry-rs.github.io/starknet-foundry
working-directory: ./docs/book/html
- name: Upload artifact
uses: actions/upload-pages-artifact@v4
with:
path: ./docs/book/html
# Deployment job
deploy:
environment:
name: github-pages
url: ${{ steps.deployment.outputs.page_url }}
runs-on: ubuntu-latest
needs: build
steps:
- name: Deploy to GitHub Pages
id: deployment
uses: actions/deploy-pages@v4
================================================
FILE: .github/workflows/nightly.yml
================================================
name: Nightly
on:
workflow_dispatch:
inputs:
dry_run:
description: "Dry run"
type: boolean
default: true
workflow_call:
concurrency:
group: ${{ github.workflow }}
cancel-in-progress: true
permissions:
contents: write
jobs:
prepare:
runs-on: ubuntu-latest
outputs:
nightly_tag: ${{ steps.version.outputs.nightly_tag }}
nightly_version: ${{ steps.version.outputs.nightly_version }}
nightly_branch: ${{ steps.version.outputs.nightly_branch }}
steps:
- uses: actions/checkout@v6
- name: Configure Git for committing
run: |
git config user.name github-actions
git config user.email github-actions@github.com
- name: Determine nightly version
id: version
shell: bash
run: |
NIGHTLY_TAG="nightly-$(date -u +%Y-%m-%d)"
NIGHTLY_BRANCH="nightly/tmp/$NIGHTLY_TAG"
CURR_VERSION=$(grep '^version' Cargo.toml | cut -d '"' -f2)
NIGHTLY_VERSION="${CURR_VERSION}+${NIGHTLY_TAG}"
echo "NIGHTLY_TAG=$NIGHTLY_TAG" >> $GITHUB_ENV
echo "NIGHTLY_VERSION=$NIGHTLY_VERSION" >> $GITHUB_ENV
echo "NIGHTLY_BRANCH=$NIGHTLY_BRANCH" >> $GITHUB_ENV
echo "nightly_tag=$NIGHTLY_TAG" >> $GITHUB_OUTPUT
echo "nightly_version=$NIGHTLY_VERSION" >> $GITHUB_OUTPUT
echo "nightly_branch=$NIGHTLY_BRANCH" >> $GITHUB_OUTPUT
- uses: software-mansion/setup-scarb@v1
- name: Update metadata before release
run: ./scripts/release.sh ${{ env.NIGHTLY_VERSION }}
- name: Create release notes
run: |
repo="${{ github.repository }}"
hash="${{ github.sha }}"
echo "Source commit: [\`${hash:0:7}\`](https://github.com/$repo/commit/$hash)" > NIGHTLY_RELEASE_NOTES.md
- name: Commit patches
run: |
git checkout -b ${{ env.NIGHTLY_BRANCH }}
git add .
git commit -m ${{ env.NIGHTLY_TAG }}
echo $(git log -1)
# NOTE: This must be the last operation done in this job in order for cleanup job to work properly.
- name: Push patches to the repository
run: git push origin ${{ env.NIGHTLY_BRANCH }}
build-binaries:
needs: prepare
uses: ./.github/workflows/_build-binaries.yml
with:
version: ${{ needs.prepare.outputs.nightly_version }}
ref: ${{ needs.prepare.outputs.nightly_branch }}
build-plugin-binaries:
name: Build plugin binaries
needs: prepare
uses: ./.github/workflows/_build-plugin-binaries.yml
with:
overridden_plugin_version: ${{ needs.prepare.outputs.nightly_version }}
ref: ${{ needs.prepare.outputs.nightly_branch }}
plugin_name: "snforge-scarb-plugin"
publish-plugin:
needs: [ prepare, build-plugin-binaries ]
if: ${{ !(inputs.dry_run) }}
uses: ./.github/workflows/_publish-plugin.yml
secrets: inherit
with:
prod_registry: false
overridden_plugin_version: ${{ needs.prepare.outputs.nightly_version }}
plugin_name: "snforge-scarb-plugin"
publish-std:
needs: [ prepare, publish-plugin ]
if: ${{ !(inputs.dry_run) }}
uses: ./.github/workflows/publish-std.yml
secrets: inherit
with:
prod_registry: false
plugin_dep_version: ${{ needs.prepare.outputs.nightly_version }}
override_std_version: ${{ needs.prepare.outputs.nightly_version }}
test-binary:
name: Test binary
needs: [ prepare, build-binaries, build-plugin-binaries, publish-plugin, publish-std ]
uses: ./.github/workflows/_test-binaries.yml
secrets: inherit
with:
bin_version: ${{ needs.prepare.outputs.nightly_version }}
std_version: ${{ needs.prepare.outputs.nightly_version }}
create-release:
runs-on: ubuntu-latest
needs: [ prepare, build-binaries, test-binary ]
# Do not run on dry_run
if: ${{ !(inputs.dry_run) }}
env:
GH_TOKEN: ${{ secrets.SNFOUNDRY_NIGHTLIES_CONTENTS_WRITE }}
steps:
- uses: actions/checkout@v6
with:
ref: ${{ needs.prepare.outputs.nightly_branch }}
- name: Create source code archives
run: |
git archive "--prefix=starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}/" -o "starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}.zip" HEAD
git archive "--prefix=starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}/" -o "starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}.tar.gz" HEAD
- name: Download artifacts
uses: actions/download-artifact@v6
with:
path: artifacts-dl
- name: Unpack artifacts to staging directory
run: |
mkdir -p artifacts
mv artifacts-dl/build-*/starknet-foundry-* artifacts/
ls -lh artifacts/
- name: Create GitHub release
run: |
gh release create \
"${{ needs.prepare.outputs.nightly_tag }}" \
--repo software-mansion-labs/starknet-foundry-nightlies \
--latest \
--title "${{ needs.prepare.outputs.nightly_tag }}" \
--notes-file NIGHTLY_RELEASE_NOTES.md
- name: Upload built artifacts
run: |
for file in ./artifacts/*
do
# We remove the version tag from the filename so it can
# be easily accessed in asdf and installation scripts.
#
# For example:
# starknet-foundry-v0.44.0+nightly-2025-05-22-aarch64-apple-darwin.tar.gz
# becomes:
# starknet-foundry-nightly-2025-05-22-aarch64-apple-darwin.tar.gz
label=$(echo "$file" | sed -E "s/v[^+]*\+//" | sed -E "s|.*/||")
cp "$file" "$label"
file="$label"
gh release upload \
"${{ needs.prepare.outputs.nightly_tag }}" \
"$file" \
--repo software-mansion-labs/starknet-foundry-nightlies
done
- name: Upload source code archives
run: |
for file in \
"starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}.zip#Starknet Foundry source code (zip)" \
"starknet-foundry-${{ needs.prepare.outputs.nightly_tag }}.tar.gz#Starknet Foundry source code (tar.gz)"
do
gh release upload \
"${{ needs.prepare.outputs.nightly_tag }}" \
"$file" \
--repo software-mansion-labs/starknet-foundry-nightlies
done
cleanup:
runs-on: ubuntu-latest
if: always() && needs.prepare.result == 'success'
needs: [ prepare, create-release ]
steps:
- uses: actions/checkout@v6
- name: Delete nightly branch
run: |
git push origin -d ${{ needs.prepare.outputs.nightly_branch }}
================================================
FILE: .github/workflows/publish-plugin.yml
================================================
name: Publish snforge_scarb_plugin
on:
workflow_dispatch:
inputs:
prod_registry:
required: false
type: boolean
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
overridden_plugin_version:
required: false
type: string
plugin_name:
required: true
type: string
jobs:
build-binaries:
name: Build Plugin Binaries
uses: ./.github/workflows/_build-plugin-binaries.yml
with:
overridden_plugin_version: ${{ inputs.overridden_plugin_version != '' && inputs.overridden_plugin_version || '' }}
plugin_name: ${{ inputs.plugin_name }}
publish-plugin:
name: Publish Plugin
needs: build-binaries
uses: ./.github/workflows/_publish-plugin.yml
with:
prod_registry: ${{ inputs.prod_registry }}
overridden_plugin_version: ${{ inputs.overridden_plugin_version != '' && inputs.overridden_plugin_version || '' }}
plugin_name: '${{ inputs.plugin_name }}'
secrets: inherit
================================================
FILE: .github/workflows/publish-std.yml
================================================
name: Publish snforge_std and sncast_std
on:
workflow_call:
inputs:
prod_registry:
required: false
type: boolean
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
override_std_version:
required: false
type: string
# snforge_std in the repository has a plugin dependency specified as a relative path, which must be overridden each time before publishing.
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
plugin_dep_version:
required: true
type: string
workflow_dispatch:
inputs:
prod_registry:
required: false
type: boolean
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
override_std_version:
required: false
type: string
# snforge_std in the repository has a plugin dependency specified as a relative path, which must be overridden each time before publishing.
# Specify the version in MAJOR.MINOR.PATCH format, without a leading 'v'
plugin_dep_version:
required: true
type: string
jobs:
check-uploaded:
name: Check stds uploaded
runs-on: ubuntu-latest
outputs:
snforge_std_uploaded: ${{ steps.check-uploaded.outputs.snforge_std_uploaded }}
sncast_std_uploaded: ${{ steps.check-uploaded.outputs.sncast_std_uploaded }}
steps:
- uses: actions/checkout@v6
- name: Check version
id: check-uploaded
run: |
set -exo pipefail
source scripts/handle_version.sh
snforge_std_version=$(get_version "${{ inputs.override_std_version }}" "snforge_std")
sncast_std_version=$(get_version "${{ inputs.override_std_version }}" "sncast_std")
registry_url=${{ inputs.prod_registry == true && 'https://scarbs.xyz' || 'https://scarbs.dev' }}
snforge_std_uploaded=$(curl -s ${registry_url}/api/v1/index/sn/fo/snforge_std.json | jq --arg version "$snforge_std_version" '[.[] | select(.v == $version)] | length > 0')
sncast_std_uploaded=$(curl -s ${registry_url}/api/v1/index/sn/ca/sncast_std.json | jq --arg version "$sncast_std_version" '[.[] | select(.v == $version)] | length > 0')
echo "snforge_std_uploaded=$snforge_std_uploaded" >> $GITHUB_OUTPUT
echo "sncast_std_uploaded=$sncast_std_uploaded" >> $GITHUB_OUTPUT
publish-to-registry:
name: Publish packages to the registry
runs-on: ubuntu-latest
needs: [ check-uploaded ]
env:
SCARB_REGISTRY_AUTH_TOKEN: ${{ inputs.prod_registry == true && secrets.SCARB_REGISTRY_AUTH_TOKEN || secrets.DEV_SCARB_REGISTRY_AUTH_TOKEN }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@0b1efabc08b657293548b77fb76cc02d26091c7e
with:
toolchain: stable
- uses: software-mansion/setup-scarb@v1
- name: Publish sncast_std
if: needs.check-uploaded.outputs.sncast_std_uploaded == 'false'
working-directory: sncast_std
run: |
source ../scripts/handle_version.sh
update_version_in_file "Scarb.toml" "${{ inputs.override_std_version }}"
scarb publish --allow-dirty ${{ inputs.prod_registry == true && ' ' || '--index https://scarbs.dev/' }}
- name: Publish snforge_std
if: needs.check-uploaded.outputs.snforge_std_uploaded == 'false'
working-directory: snforge_std
run: |
source ../scripts/handle_version.sh
update_version_in_file "Scarb.toml" "${{ inputs.override_std_version }}"
if ${{ inputs.prod_registry == true }}; then
scarb add snforge_scarb_plugin@${{ inputs.plugin_dep_version }}
else
sed -i.bak "/snforge_scarb_plugin/ s/\(snforge_scarb_plugin = \).*/\1{ version = \"=${{ inputs.plugin_dep_version }}\", registry = \"https:\/\/scarbs.dev\/\" }/" Scarb.toml
rm Scarb.toml.bak 2>/dev/null
fi
scarb publish --allow-dirty ${{ inputs.prod_registry == true && ' ' || '--index https://scarbs.dev/' }}
================================================
FILE: .github/workflows/release.yml
================================================
name: Release
on:
push:
branches:
- 'master'
tags:
- v[0-9]+.*
permissions:
contents: write
jobs:
verify-version:
name: Verify that version that triggered this workflow is greater than most recent release
runs-on: ubuntu-latest
outputs:
# Steps `verifyBranchVersion` and `verifyTagVersion` are mutually exclusive, only one of them will run
versionIsValid: ${{ steps.verifyBranchVersion.outputs.versionIsValid }}${{ steps.verifyTagVersion.outputs.versionIsValid }}
version: ${{ steps.verifyBranchVersion.outputs.version }}${{ steps.verifyTagVersion.outputs.version }}
steps:
- uses: actions/checkout@v6
- uses: actions/setup-node@v6
with:
cache: 'npm'
cache-dependency-path: scripts/package-lock.json
- run: npm ci
working-directory: scripts
- name: Get version from Cargo.toml
id: lookupVersion
uses: mikefarah/yq@7ccaf8e700ce99eb3f0f6cef7f5930a0b3c827cd
with:
cmd: yq -oy '.workspace.package.version' 'Cargo.toml'
- name: Get version from the latest releases
id: lookupVersionRelease
uses: pozetroninc/github-action-get-latest-release@master
with:
owner: foundry-rs
repo: starknet-foundry
excludes: draft
- name: Verify branch version
id: verifyBranchVersion
if: github.ref_type == 'branch'
run: |
RELEASE_VERSION=${{ steps.lookupVersionRelease.outputs.release }}
COMMIT_VERSION=${{ steps.lookupVersion.outputs.result }}
echo "Project version from newest release = $RELEASE_VERSION"
echo "Project version from this commit = $COMMIT_VERSION"
if gh release view "v$COMMIT_VERSION" >/dev/null 2>&1; then
echo "Release v$COMMIT_VERSION already exists - aborting"
echo "versionIsValid=false" >> "$GITHUB_OUTPUT"
exit 0
fi
IS_GREATER=$(node ./scripts/compareVersions.js $RELEASE_VERSION $COMMIT_VERSION)
echo "versionIsValid=$IS_GREATER" >> "$GITHUB_OUTPUT"
echo "version=$COMMIT_VERSION" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
- name: Verify tag version
id: verifyTagVersion
if: github.ref_type == 'tag'
run: |
TAG_NAME="$GITHUB_REF_NAME"
TAG_VERSION="${TAG_NAME#v}"
CARGO_VERSION="${{ steps.lookupVersion.outputs.result }}"
echo "Tag version = $TAG_VERSION"
echo "Project version from Cargo.toml = $CARGO_VERSION"
if [ "$TAG_VERSION" != "$CARGO_VERSION" ]; then
echo "Tag version ($TAG_VERSION) does not match Cargo.toml version ($CARGO_VERSION)"
exit 1
fi
# Tag is usually created when publishing release from GitHub UI.
# Then it triggers this workflow again and we want to exit without error.
if gh release view "$TAG_NAME" >/dev/null 2>&1; then
echo "Release $TAG_NAME already exists - aborting"
echo "versionIsValid=false" >> "$GITHUB_OUTPUT"
exit 0
fi
echo "versionIsValid=true" >> "$GITHUB_OUTPUT"
echo "version=$TAG_VERSION" >> "$GITHUB_OUTPUT"
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
build-binaries:
name: Build binaries
needs: verify-version
if: ${{ needs.verify-version.outputs.versionIsValid == 'true' }}
uses: ./.github/workflows/_build-binaries.yml
with:
version: ${{ needs.verify-version.outputs.version }}
build-plugin-binaries:
name: Build plugin binaries
if: ${{ needs.verify-version.outputs.versionIsValid == 'true' }}
needs: verify-version
uses: ./.github/workflows/_build-plugin-binaries.yml
with:
plugin_name: "snforge-scarb-plugin"
dev-publish-plugin:
needs: [verify-version, build-plugin-binaries]
if: ${{ needs.verify-version.outputs.versionIsValid == 'true' }}
uses: ./.github/workflows/_publish-plugin.yml
secrets: inherit
with:
prod_registry: false
overridden_plugin_version: ${{ needs.verify-version.outputs.version }}-test.${{ github.run_id }}
plugin_name: "snforge-scarb-plugin"
dev-publish-std:
needs: [verify-version, dev-publish-plugin]
if: ${{ needs.verify-version.outputs.versionIsValid == 'true' }}
uses: ./.github/workflows/publish-std.yml
secrets: inherit
with:
prod_registry: false
plugin_dep_version: ${{ needs.verify-version.outputs.version }}-test.${{ github.run_id }}
override_std_version: ${{ needs.verify-version.outputs.version }}-test.${{ github.run_id }}
test-binary:
name: Test binary
needs: [build-binaries, verify-version, dev-publish-std, dev-publish-plugin]
uses: ./.github/workflows/_test-binaries.yml
secrets: inherit
with:
bin_version: ${{ needs.verify-version.outputs.version }}
std_version: ${{ needs.verify-version.outputs.version }}-test.${{ github.run_id }}
create-release:
name: Create release
runs-on: ubuntu-latest
needs: [ test-binary, verify-version ]
steps:
- uses: actions/checkout@v6
- name: Download artifacts
uses: actions/download-artifact@v6
with:
path: artifacts-dl
- name: Unpack artifacts to staging directory
run: |
mkdir -p artifacts
mv artifacts-dl/build-*/starknet-foundry-* artifacts/
- name: Create GitHub release
id: create-release
uses: taiki-e/create-gh-release-action@26b80501670402f1999aff4b934e1574ef2d3705
with:
token: ${{ secrets.GITHUB_TOKEN }}
draft: true
changelog: CHANGELOG.md
allow-missing-changelog: false
title: $version
ref: refs/tags/v${{ needs.verify-version.outputs.version }}
- name: Upload artifacts to the release
working-directory: artifacts
run: gh release upload "$TAG" *
env:
GH_TOKEN: ${{ secrets.GITHUB_TOKEN }}
TAG: ${{ steps.create-release.outputs.computed-prefix }}${{ steps.create-release.outputs.version }}
publish-snforge-scarb-plugin:
name: Publish snforge_scarb_plugin
needs: [test-binary, create-release]
uses: ./.github/workflows/_publish-plugin.yml
secrets: inherit
with:
prod_registry: true
plugin_name: "snforge-scarb-plugin"
publish-to-registry:
name: Publish packages to the registry
needs: [ verify-version, publish-snforge-scarb-plugin ]
uses: ./.github/workflows/publish-std.yml
secrets: inherit
with:
plugin_dep_version: ${{ needs.verify-version.outputs.version }}
prod_registry: true
================================================
FILE: .github/workflows/scheduled.yml
================================================
name: Scheduled
on:
pull_request:
paths:
- scripts/get_scarb_versions.sh
- .github/workflows/scheduled.yml
schedule:
# Two schedules needed so we can distinguish between nightly and non-nightly runs
- cron: '0 0 * * 0'
- cron: '0 0 * * 3'
workflow_dispatch:
jobs:
get-scarb-versions:
if: github.event.repository.fork == false
name: Get Scarb versions
outputs:
versions: ${{ steps.get_versions.outputs.versions }}
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v6
- uses: asdf-vm/actions/setup@b7bcd026f18772e44fe1026d729e1611cc435d47
- run: |
asdf plugin add scarb
asdf install scarb latest
asdf set --home scarb latest
- name: Get versions
id: get_versions
run: |
scarb_versions=$(./scripts/get_scarb_versions.sh)
echo ${scarb_versions[@]}
echo "versions=[${scarb_versions[@]}]" >> "$GITHUB_OUTPUT"
test-forge-unit-and-integration:
if: github.event.repository.fork == false
runs-on: ubuntu-latest
needs: get-scarb-versions
strategy:
fail-fast: false
matrix:
version: ${{ fromJSON(needs.get-scarb-versions.outputs.versions) }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ matrix.version }}
- uses: software-mansion/setup-universal-sierra-compiler@v1
- run: cargo test --profile ci --lib -p forge
- run: cargo test --profile ci -p forge integration --features non_exact_gas_assertions
test-forge-e2e:
if: github.event.repository.fork == false
runs-on: ubuntu-latest
needs: get-scarb-versions
strategy:
fail-fast: false
matrix:
version: ${{ fromJSON(needs.get-scarb-versions.outputs.versions) }}
steps:
- name: Extract branch name
if: github.event_name != 'pull_request'
run: echo "BRANCH_NAME=$(echo ${GITHUB_REF#refs/heads/})" >> $GITHUB_ENV
- name: Extract branch name on pull request
if: github.event_name == 'pull_request'
run: echo "BRANCH_NAME=$(echo $GITHUB_HEAD_REF)" >> $GITHUB_ENV
- name: Extract repo name and owner
if: github.event_name != 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.repository }}.git)" >> $GITHUB_ENV
- name: Extract repo name and owner on pull request
if: github.event_name == 'pull_request'
run: echo "REPO_NAME=$(echo ${{ github.event.pull_request.head.repo.full_name }}.git)" >> $GITHUB_ENV
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ matrix.version }}
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Install cairo-profiler
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-profiler/main/scripts/install.sh | sh
- name: Install cairo-coverage
run: |
curl -L https://raw.githubusercontent.com/software-mansion/cairo-coverage/main/scripts/install.sh | sh
- name: Determine test features
id: test_features
run: |
SCARB_VERSION="${{ matrix.version }}"
if [ "$(printf '%s\n' "2.15.1" "$SCARB_VERSION" | sort -V | head -n1)" = "2.15.1" ]; then
FEATURES="skip_test_for_only_latest_scarb,run_test_for_scarb_since_2_15_1"
else
FEATURES="skip_test_for_only_latest_scarb"
fi
echo "features=$FEATURES" >> "$GITHUB_OUTPUT"
- run: cargo test --profile ci -p forge --features "${{ steps.test_features.outputs.features }}" e2e
test-cast:
if: github.event.repository.fork == false
runs-on: ubuntu-latest
needs: get-scarb-versions
strategy:
fail-fast: false
matrix:
version: ${{ fromJSON(needs.get-scarb-versions.outputs.versions) }}
steps:
- uses: actions/checkout@v6
- uses: dtolnay/rust-toolchain@stable
- uses: Swatinem/rust-cache@779680da715d629ac1d338a641029a2f4372abb5
- uses: software-mansion/setup-scarb@v1
with:
scarb-version: ${{ matrix.version }}
- uses: software-mansion/setup-universal-sierra-compiler@v1
- name: Get Devnet version from .tool-versions
id: get-devnet-version
run: |
devnet_version=$(grep starknet-devnet .tool-versions | cut -d " " -f 2)
echo "Devnet version: $devnet_version"
echo "version=$devnet_version" >> "$GITHUB_OUTPUT"
- uses: asdf-vm/actions/install@b7bcd026f18772e44fe1026d729e1611cc435d47
with:
tool_versions: |
starknet-devnet ${{ steps.get-devnet-version.outputs.version }}
- run: cargo test --profile ci -p sncast
get-version:
name: Get current foundry version
if: github.event.repository.fork == false
runs-on: ubuntu-latest
outputs:
version: ${{ steps.validVersion.outputs.version }}
steps:
- uses: actions/checkout@v6
- name: Get version from Cargo.toml
id: lookupVersion
uses: mikefarah/yq@7ccaf8e700ce99eb3f0f6cef7f5930a0b3c827cd
with:
cmd: yq -oy '.workspace.package.version' 'Cargo.toml'
- name: Return version
id: validVersion
run: |
COMMIT_VERSION=${{ steps.lookupVersion.outputs.result }}
echo "Project version from this commit = $COMMIT_VERSION"
echo "version=$COMMIT_VERSION" >> "$GITHUB_OUTPUT"
build-plugin-binaries:
name: Build plugin binaries
needs: get-version
uses: ./.github/workflows/_build-plugin-binaries.yml
with:
overridden_plugin_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
plugin_name: 'snforge-scarb-plugin'
publish-plugin:
needs: [ get-version, build-plugin-binaries ]
uses: ./.github/workflows/_publish-plugin.yml
secrets: inherit
with:
prod_registry: false
overridden_plugin_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
plugin_name: 'snforge-scarb-plugin'
publish-std:
needs: [ get-version, publish-plugin ]
uses: ./.github/workflows/publish-std.yml
secrets: inherit
with:
prod_registry: false
plugin_dep_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
override_std_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
build-binaries:
needs: [ get-version ]
uses: ./.github/workflows/_build-binaries.yml
with:
version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
test-binary:
name: Test binary
needs: [ build-binaries, get-version, publish-std ]
uses: ./.github/workflows/_test-binaries.yml
secrets: inherit
with:
bin_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
std_version: ${{ needs.get-version.outputs.version }}-test.${{ github.run_id }}
create-nightly-release:
# Creating a nightly release will trigger a Maat experiment for it as well
# Publish nightly only on Sundays
if: ${{ (github.event_name == 'schedule') && (github.event.schedule == '0 0 * * 0') }}
needs: [ test-binary ]
secrets: inherit
uses:
./.github/workflows/nightly.yml
notify_if_failed:
runs-on: ubuntu-latest
if: always() && contains(needs.*.result, 'failure') && github.event_name == 'schedule'
needs: [ create-nightly-release, test-forge-unit-and-integration, test-forge-e2e, test-cast , build-plugin-binaries, build-binaries, publish-plugin, publish-std, test-binary ]
steps:
- name: Notify that the workflow has failed
uses: slackapi/slack-github-action@v2.1.1
with:
webhook: ${{ secrets.SLACK_SCHEDULED_TESTS_FAILURE_WEBHOOK_URL }}
webhook-type: webhook-trigger
payload: |
url: "${{ github.server_url }}/${{ github.repository }}/actions/runs/${{ github.run_id }}"
================================================
FILE: .gitignore
================================================
.idea
pyproject.toml
.DS_Store
*/.tool-versions
target
.vscode/
.env
Scarb.lock
!snforge_std/Scarb.lock
!sncast_std/Scarb.lock
*/node_modules
.spr.yml
.snfoundry_cache/
.snfoundry_versioned_programs/
snfoundry_trace/
coverage/
**/.forge_e2e_cache/
*.snap.new
================================================
FILE: .tool-versions
================================================
scarb 2.17.0
starknet-devnet 0.8.0-rc.3
================================================
FILE: CAIRO_NATIVE.md
================================================
# Running Cairo Native
<!-- TOC -->
* [Running Cairo Native](#running-cairo-native)
* [Installing Starknet Foundry With Cairo Native Support](#installing-starknet-foundry-with-cairo-native-support)
* [LLVM](#llvm)
* [`ld`](#ld)
* [Linux](#linux)
* [MacOS](#macos)
* [Running Tests](#running-tests)
<!-- TOC -->
## Installing Starknet Foundry With Cairo Native Support
Cairo Native introduces additional dependencies outside of the Rust ecosystem.
### LLVM
LLVM is linked into Starknet Foundry binary, so it doesn't have to be installed separately at the cost of an increased
binary size.
### `ld`
Cairo Native crate makes direct calls to `ld`, which must in turn be installed on the system.
#### Linux
The package `binutils` contains `ld`, install it with package manager relevant to your distribution or build it
from source.
#### MacOS
`ld` is part of the Xcode command line tools. Install it with `xcode-select --install`.
## Running Tests
To run tests run `snforge test --run-native`, without the flag, the execution will still run in the VM.
When running native features that rely on VM trace like test backtrace, profiler, coverage will not work.
Running native enforces the test to run with `sierra-gas` as tracked resource. Tracking vm resources is not possible
with the native execution.
================================================
FILE: CHANGELOG.md
================================================
# Changelog
All notable changes to this project will be documented in this file.
The format is based on [Keep a Changelog](https://keepachangelog.com/en/1.0.0/),
and this project adheres to [Semantic Versioning](https://semver.org/spec/v2.0.0.html).
## [Unreleased]
### Forge
#### Added
- `--launch-debugger` flag that allows launching a test in debug mode using `cairo-debugger` crate. Read more [here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/debugging.html#live-debugging)
#### Changed
- Minimal recommended `Scarb` version is now `2.15.2` (updated from `2.14.0`)
### Cast
#### Fixed
- `sncast verify` now uses the configured network or infers it from the RPC chain ID when `--network` is omitted.
## [0.59.0] - 2026-04-10
### Forge
#### Added
- Cheats for transaction info `proof_facts`
#### Changed
- Updated execution to reflect Starknet `v0.14.2`, specifically the storage gas price changes (see [SNIP-37](https://community.starknet.io/t/snip-37-revisit-storage-access-cost/116143) for more details)
### Cast
#### Added
- `sncast get tx` command to get transaction details by hash.
- `sncast utils selector` command to calculate entrypoint selector (`sn_keccak`) from function name.
- `sncast get class-hash-at` command to get the class hash of a contract at a given address.
- `--with-proof-facts` flag for `sncast get tx` to include proof facts in tx response. Read more [here](https://community.starknet.io/t/snip-36-in-protocol-proof-verification/116123l).
- `--proof-file` and `--proof-facts-file` flags for `sncast invoke` to attach proof data from files.
## [0.58.1] - 2026-03-31
### Forge
#### Fixed
- Bug with using cheats in library calls
### Cast
#### Added
- `--nonce` flag to `sncast multicall run`
## [0.58.0] - 2026-03-18
### Forge
#### Added
- `--max-threads` flag to control the maximum number of threads used for test execution
- `optimize-inlining` subcommand, which performs a brute-force search of the optimal `inlining-strategy` threshold for the project over user defined benchmark
#### Fixed
- Bug with invalid function name mappings for functions with `#[test]` attribute
- `--exit-first` flag now correctly stops execution for all packages when tests are run in a workspace
### Cast
#### Added
- Support for Ledger hardware wallet as a transaction signer
- `sncast get nonce` command to get the nonce of a contract
- `sncast multicall execute`, which allows to pass calls directly as CLI arguments. Read more [here](https://foundry-rs.github.io/starknet-foundry/starknet/multicall.html#multicall-with-cli-arguments)
#### Changed
- `sncast balance` and `sncast tx-status` commands have been moved under `sncast get` subcommand (`sncast get balance`, `sncast get tx-status`). The old commands still work, but will be removed in the future.
- Referencing an id in multicall configuration files now requires the `@` prefix.
## [0.57.0] - 2026-02-24
### Forge
#### Added
- Partitioned test execution with `--partition <INDEX>/<TOTAL>` flag. Read more [here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/tests-partitioning.html)
#### Changed
- Minimal recommended `Scarb` version is now `2.14.0` (updated from `2.13.1`)
- In case of a test failure, generic `ENTRYPOINT_FAILED` errors are now included in the panic data
#### Fixed
- State modified by failed contract calls executed within the test function is now correctly reverted
- `--exact` flag now requires `--test-filter` to be non-empty
### Cast
#### Added
- `--sierra-file` flag to `sncast declare-from` to allow declaring contract from a local Sierra file.
#### Removed
- Due to termination of starkscan.co, `StarkScan` option for `block-explorer` field in `snfoundry.toml` was removed. For a full list of supported block explorer services, see the [block explorer documentation](https://foundry-rs.github.io/starknet-foundry/appendix/snfoundry-toml.html#block-explorer)
## [0.56.0] - 2026-02-03
### Forge
#### Removed
- Support for Scarb versions < 2.12.0. `snforge` now requires Scarb 2.12.0 or newer
- The deprecated `snforge_scarb_plugin_deprecated`
- The deprecated `snforge_std_deprecated`
#### Changed
- `--detailed-resources` output now includes all gas-related resources
- `deploy` and `deploy_at` methods on `ContractClass` instance now allow constructor errors to be caught instead of failing immediately. This change diverges from the behavior of the `deploy_syscall` on the network, where such errors cannot be caught.
- Template created by `snforge new --template erc20-contract` now uses `openzeppelin_token` version `3.0.0` (updated from `1.0.0`). This template requires Scarb version >= `2.15.1`.
## [0.55.0] - 2026-01-13
### Forge
#### Changed
- Minimal recommended `Scarb` version is now `2.13.1` (updated from `2.12.2`)
- `snforge_scarb_plugin` now emits an error if unexpected named args are passed to `#[available_gas]`, `#[fork]`, `#[fuzzer]`, `#[should_panic]` and `#[test_case]` attributes
#### Fixed
- Byte arrays containing non-printable characters are now displayed correctly in fuzz test output
### Cast
#### Added
- `network` field can now be configured in `snfoundry.toml`
#### Changed
- `--network` flag can be used with `--add-profile` flag
#### Fixed
- `sncast balance` command now correctly displays token unit instead of token for `eth` and `strk`
## [0.55.0-rc.0] - 2025-12-18
### Forge
#### Changed
- Minimal recommended `Scarb` version is now `2.12.2` (updated from `2.11.4`)
#### Fixed
- Signature generation now enforces the low-s rule
- Fixed a bug that caused a slowdown in test execution
- Panic that occurred in debug trace and gas report when using mock calls
#### Removed
- The deprecated `snforge completion`. Use `snforge completions` instead.
### Cast
#### Changed
- Error message for already declared contracts now includes the class hash
#### Fixed
- When using `account create` or `account import` commands without specifying `--network` or `--url`, url from snfoundry.toml is now used correctly (if present)
- Fixed account's balance value from `sncast balance` command
#### Removed
- The deprecated `sncast completion`. Use `sncast completions` instead.
## [0.54.0] - 2025-12-09
### Forge
#### Added
- `get_current_vm_step` function to get the current step during test execution. For more see [docs](https://foundry-rs.github.io/starknet-foundry/snforge-library/testing/get_current_vm_step.html)
#### Fixed
- Cheatcodes are now reflected in called contract, when directly using a library call from test code
- Oracles are fully supported for Scarb versions >= 2.13.1. Bugs related to oracles' output handling have been fixed.
Removed the `--experimental-oracles` flag.`
- Fixed a bug that caused failure data to be displayed twice
### Cast
#### Added
- `type` field to most responses when using `--json` output format.
#### Changed
- `sncast script init` now longer adds `cairo_test` as dependency in `Scarb.toml`
- Replaced the free RPC provider to Zan
- The supported RPC version is now 0.10.0
#### Fixed
- Restored missing `command` missing from some responses when using `--json` output format.
- When deploying account with `--keystore` flag `sncast` now longer ask two times for password
## [0.53.0] - 2025-11-24
### Cast
#### Changed
- Hash function used when declaring contracts is selected based on the Starknet version
## [0.53.0-rc.0] - 2025-11-18
### Forge
#### Added
- `--gas-report` flag to display a table of L2 gas breakdown for each contract and selector
### Cast
#### Changed
- The supported RPC version is now 0.10.0-rc.1
## [0.52.0] - 2025-11-05
### Forge
#### Changed
- Gas values in fuzzing test output are now displayed as whole numbers without fractional parts
- Minimal recommended `Scarb` version is now `2.11.4` (updated from `2.10.1`)
#### Fixed
- A bug that prevented the `#[test_case]` attribute from being used on its own with cheatcodes
### Cast
#### Added
- Possibility to configure urls of predefined networks used by `--network` flag via `sncast` profile in `snfoundry.toml`
## [0.51.2] - 2025-10-31
### Cast
#### Changed
- Replaced the free RPC provider used.
## [0.51.1] - 2025-10-23
### Forge
#### Fixed
- A bug that caused `meta_tx_v0` to panic when tracked resources are Sierra gas.
## [0.51.0] - 2025-10-21
### Forge
#### Added
- `Fuzzable` trait implementations for `bool` and `ContractAddress`
- Type aliases for `StarkCurveKeyPair`, `Secp256k1CurveKeyPair`, `Secp256r1CurveKeyPair`
- Option to display L2 gas for each call in the debugging trace
#### Changed
- Updated the error message returned when calling a nonexistent method on a contract to better align with the format used by the network
- The default tracked resource is now Sierra gas, so gas reporting results may differ compared to previous versions. For more information refer to the [documentation](https://foundry-rs.github.io/starknet-foundry/testing/gas-and-resource-estimation.html)
- When using the `--detailed-resources` flag, the used Sierra gas key is now shown as `sierra gas` instead of `sierra_gas_consumption`
### Cast
#### Added
- Debug logging for `sncast` commands that can be enabled by setting `SNCAST_LOG` env variable.
- `sncast declare` command now outputs a ready-to-use deployment command after successful declaration.
- Possibility to use [`starknet-devnet`](https://github.com/0xSpaceShard/starknet-devnet) predeployed accounts directly in `sncast` without needing to import them. They are available under specific names - `devnet-1`, `devnet-2`, ..., `devnet-<N>`. Read more [here](https://foundry-rs.github.io/starknet-foundry/starknet/integration_with_devnet.html#predeployed-accounts)
- Support for `--network devnet` flag that attempts to auto-detect running `starknet-devnet` instance and connect to it.
- Support for automatically declaring the contract when running `sncast deploy`, by providing `--contract-name` flag instead of `--class-hash`.
- `sncast balance` command to fetch the balance of an account for a specified token.
#### Fixed
- `sncast declare` now shows a correct error message when contract is already declared.
## [0.50.0] - 2025-09-29
### Forge
#### Added
- `#[test_case]` attribute for parameterized testing. Read more [here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/parametrized-testing.html)
#### Changed
- Minimal supported `Scarb` version is now `2.10.0` (updated from `2.9.1`)
- Minimal supported `snforge_std` and `snforge_std_deprecated` version is now `0.50.0`
- `deploy` and `deploy_at` methods on `ContractClass` instance now fail immediately upon encountering an error, preventing the error from being caught. This change aligns with the behavior of the `deploy_syscall` on the network
#### Fixed
- [`core::testing::get_available_gas`](https://docs.starknet.io/build/corelib/core-testing-get_available_gas) now works correctly in snforge tests
#### Removed
- Possibility to use `#[available_gas]` with unnamed argument. Use named arguments instead, e.g. `#[available_gas(l2_gas: 5)]`.
- The deprecated command `snforge init`. Use `snforge new` to initialize new `Forge` projects
### Cast
#### Added
- `sncast declare-from` command to declare a contract by fetching it from a different Starknet instance
## [0.49.0] - 2025-09-03
### Forge
#### Added
- Support for `meta_tx_v0` syscall with cheatcode compatibility
- `snforge` now supports [oracles](https://docs.swmansion.com/cairo-oracle/) with `--experimental-oracles` flag.
- `--trace-components` flag to allow selecting which components of the trace to do display. Read more [here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/debugging.html#trace-components)
### Cast
#### Added
- `--test-files` flag to `verify` command to include test files under src/ for verification (only applies to voyager)
- `--tip` flag to `invoke`, `declare`, `deploy`, `multicall run` and `account deploy` commands to set the transaction tip
- `--estimate-tip` flag which automatically adds an estimated tip to the transaction. The tip is calculated based on the current network conditions and added to the transaction fee
- `utils class-hash` command to calculate the class hash for a contract
#### Changed
- The supported RPC version is now 0.9.0
- [New UDC](https://starkscan.co/contract/0x02ceed65a4bd731034c01113685c831b01c15d7d432f71afb1cf1634b53a2125) is now used during deployment
## [0.48.1] - 2025-08-14
### Forge
#### Fixed
- A bug that caused `#[fuzzer]` attribute to fail when used with generic structs
## [0.48.0] - 2025-08-05
### Forge
#### Added
- `snforge_std` is now compatible with Scarb procedural macros V2. Migration is required if using Scarb versions before `2.12.0`. See [migration guide](https://foundry-rs.github.io/starknet-foundry/getting-started/0-47-0-migration-guide.html).
#### Changed
- If using a Scarb version before `2.10.0` or not using `allow-prebuild-plugins`, the minimal required rust version to run `snforge` is now `1.87.0`
### Cast
#### Fixed
- Block explorer links are now hidden by default when using [`starknet-devnet`](https://github.com/0xSpaceShard/starknet-devnet). Set `SNCAST_FORCE_SHOW_EXPLORER_LINKS=1` env variable to display them.
## [0.47.0] - 2025-07-28
### Forge
#### Added
- `interact_with_state` cheatcode to enable effective use of `contract_state_for_testing` in snforge tests
- Support for using [Scarb profiles](https://docs.swmansion.com/scarb/docs/reference/profiles.html) with `snforge test`, allowing to pass the same profile flags as in Scarb (`--release`, `--dev`, `--profile`) to build artifacts using a specific profile
#### Deprecated
- The `snforge completion` command. Use `snforge completions` instead
#### Fixed
- Passing a cheatcode span of 0 was incorrectly treated as `CheatSpan::Indefinite`. This is now resolved by making `CheatSpan::TargetCalls` accept `NonZero<usize>` instead of just `usize` in `snforge_std`.
### Cast
#### Added
- `ready` option for `--type` flag in `account create` and `account import` commands (Argent wallet has rebranded as Ready)
#### Changed
- Braavos accounts with all class hashes are now supported
#### Deprecated
- `argent` option for `--type` flag in `account create` and `account import` commands. Use `ready` instead
- The `sncast completion` command. Use `sncast completions` instead
## [0.46.0] - 2025-07-09
### Forge
#### Added
- Total test summary when running tests across multiple packages (for example when running `snforge test --workspace`)
#### Fixed
- Bug where syscall execution resources from nested calls were being calculated twice
### Cast
#### Added
- `sncast utils serialize` command to serialize Cairo expressions into calldata
- `sncast verify` now supports verifying against [voyager](https://voyager.online/) block explorer.
#### Changed
- Improved commands output readability with colors and simplified layout.
- `sncast verify` no longer defaults to using walnut.
#### Fixed
- Bug where `account create` raised an error if no `--name` was provided and the file specified by `--accounts-file` was empty
#### Removed
- `--int-format` and `--hex-format`, all values are displayed with default format
## [0.45.0] - 2025-06-16
### Forge
#### Added
- ETH token is now pre-deployed by default in every test, and `Token::ETH` was added to `snforge_std`
- `--skip` flag to allow excluding any test whose name contains the provided string
#### Changed
- Updated output format for `--exit-first` flag. Tests skipped due to preceding failures are no longer displayed in the summary. Alternative information is shown when applicable.
- `storage address` was renamed to `contract address` in the output of `--trace-verbosity`
#### Fixed
- bug that caused `--trace-verbosity` to panic in fork tests
- fixed a bug in tests where resources used in nested calls were counted multiple times, leading to overestimated gas and resource usage
#### Removed
- Windows support. For details on migration, see the WSL [installation guide](https://foundry-rs.github.io/starknet-foundry/getting-started/installation.html#linux-and-macos).
### Cast
#### Fixed
- bug where `account create` raised an error if the file specified by `--accounts-file` was empty
#### Removed
- Windows support. For details on migration, see the WSL [installation guide](https://foundry-rs.github.io/starknet-foundry/getting-started/installation.html#linux-and-macos).
## [0.44.0] - 2025-05-26
### Forge
#### Changed
- Minimal supported `snforge_std` version is 0.44.0
- Changed the code generated by `snforge_std`'s `#[test]` attribute
#### Fixed
- "invalid syscall selector" error appearing when using arithmetic circuits
- Bug that caused incorrect gas tracking for contracts using Sierra version less than `1.7.0` when `sierra-gas` was passed as the `tracked-resource`
### Cast
#### Added
- Displaying the path of the config file when adding a new profile
#### Changed
- OpenZeppelin account updated to v1.0.0 [preset](https://docs.openzeppelin.com/contracts-cairo/1.0.0/api/account#AccountUpgradeable)
- Restored support for Braavos accounts
- Accounts created with `--type braavos` use updated v1.2.0 class hash
- Output of `sncast account create` is now clearer; the estimated fee is displayed in both STRK and FRI.
- Renamed the field `max_fee` to `estimated_fee` in the `sncast account create` output.
## [0.43.1] - 2025-05-16
### Cast
#### Removed
- Broken Voyager RPC provider
## [0.43.0] - 2025-05-09
### Forge
#### Added
- `set_balance` cheatcode for setting an ERC20 token balance for specified contract address. The STRK token is now pre-deployed in every test by default. This can be disabled by adding `#[disable_predeployed_contracts]` attribute to test.
- added option to display trace of contracts execution. Read more [here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/debugging.html)
#### Changed
- "Success data" message is no longer printed when a test using the `#[should_panic]` attribute passes
### Cast
#### Added
- when using `sncast call` the response will be printed as a Cairo-like string representation of the return values
#### Changed
- The supported RPC version is now 0.8.1
## [0.42.0] - 2025-04-28
### Forge
#### Added
- Safe dispatchers can now be used inside contracts
#### Changed
- Minimal supported Scarb version is now `2.9.1`
- Improved display of backtrace for contracts that panicked, when `panic-backtrace = true` in `Scarb.toml`. Without using this feature, the backtrace may be less accurate than before.
As of this release, this feature is available only in `scarb nightly-2025-03-27`.
#### Fixed
- The state correctly reverts after failed internal calls
### Cast
#### Fixed
- Bug that prevented from passing values to `--arguments` that started with a leading minus `-` sign.
- User is now prompted to save an imported or deployed account in `sncast` config even when using `--network` flag
## [0.41.0] - 2025-04-08
### Forge
#### Added
- `--template` flag to `snforge new` command that allows selecting a template for the new project. Possible values are `balance-contract` (default), `cairo-program` and `erc20-contract`
#### Fixed
- fixed incorrect extra newlines in test summary
### Cast
#### Added
- Support for `array![].span()` in `--arguments` command
#### Changed
- `verify` command now supports the `--class-hash` for Walnut verification
#### Removed
- `NftScan` is no longer supported as `block-explorer` option
## [0.40.0] - 2025-03-26
### Cast
#### Added
- `--l1-gas`, `--l1-gas-price`, `--l2-gas`, `--l2-gas-price`, `--l1-data-gas`, `--l1-data-gas-price` flags
- methods for fee settings creation, in `FeeSettingsTrait`: `max_fee()`, `resource_bounds()` and `estimate()` (in `sncast_std`)
#### Changed
- Updated argent class hash used in account creation to v0.4.0
- wrapped error for `ContractError` is now of type `ContractErrorData` (in `sncast_std`)
- field `execution_error` in `TransactionExecutionErrorData` is now of type `ContractExecutionError` (in `sncast_std`)
- Using Braavos accounts is temporarily disabled because they don't yet work with the RPC version supported by `sncast`
- `sncast script init` command now initializes project with the `sncast_std` dependency from the [registry](https://scarbs.xyz/packages/sncast_std)
#### Removed
- `--max-gas` and `--max-gas-unit-price` flags
- `max_gas`, `max_gas_unit_price` fields in `FeeSettings` (in `sncast_std`)
## [0.39.0] - 2025-03-19
### Forge
#### Added
- `snforge completion` command - used to generate autocompletion script
- Cheats for `get_block_hash_syscall`
- new `--tracked-resource` flag, that will change currently tracked resource
(`cairo-steps` for vm resources - default; `sierra-gas` for sierra gas consumed resources in cairo native)
- Testing events api improvements. New `IsEmitted` trait. Implemented `Into<snforge_std::Event>` for `starknet::Event` and `PartialEq` trait implementations for `snforge_std::Event` and `snforge_std::Events`.
#### Changed
- gas is now reported using resource bounds triplet (l1_gas, l1_data_gas and l2_gas)
- `available_gas` now accepts named arguments denoting resource bounds (eg `#[available_gas(l1_gas: 1, l1_data_gas: 2, l2_gas: 3)]`)
#### Fixed
- Bug with file locking that prevented forking from working on Windows
### Cast
#### Added
- `sncast completion` command - used to generate autocompletion script
## [0.38.3] - 2025-03-07
### Forge
#### Fixed
- Issue with uploading `snforge_std` to scarbs package registry that prevented it from including package reexports required in Scarb >= 2.11.0
## [0.38.2] - 2025-03-06
### Forge
#### Changed
- Fork cache version is pinned to the forge version.
#### Fixed
- `snforge_scarb_plugin` now emits an error when parameters are passed without using the `#[fuzzer]` attribute
- A bug that was causing execution to hang if using forking
## [0.38.0] - 2025-02-25
### Forge
#### Added
- `snforge clean` command - used to manage and remove files generated by snforge. It supports cleaning the following components: coverage, profile, cache, trace, all
- `snforge new` now adds the `snfoundry_trace`, `coverage`, and `profile` directories to `.gitignore`.
- Custom types can be used in fuzz testing by implementing the `Fuzzable` trait
- Support for Cairo 2.10.0
#### Changed
- It is now required to include the `#[fuzzer]` attribute for fuzz tests to work
- Scarb `2.8.5` is now the minimal recommended version. Using Starknet Foundry with versions below it is no longer officially supported and may not work.
#### Deprecated
- `snforge clean-cache` command
### Cast
#### Changed
- `--name` flag is now optional when using `account create` (default name is generated)
## [0.37.0] - 2025-02-03
### Forge
#### Added
- Rust is no longer required to use `snforge` if using Scarb >= 2.10.0 on supported platforms - precompiled `snforge_scarb_plugin` plugin binaries are now published to [package registry](https://scarbs.xyz) for new versions.
- Added a suggestion for using the `--max-n-steps` flag when the Cairo VM returns the error: `Could not reach the end of the program. RunResources has no remaining steps`.
#### Fixed
- coverage validation now supports comments in `Scarb.toml`
### Cast
#### Added
- Default RPC providers under `--network` flag
#### Changed
- Renamed `--network` flag to `--network-name` in `sncast account delete` command
#### Fixed
- Bug resulting in value passed for `max_fee` being ignored in cast scripts when using `deploy` with STRK token
#### Removed
- `--fee-token` and `--version` flags, subsequently support for transaction versions other than v3
- Support for ETH transactions in scripts
## [0.36.0] - 2025-01-15
### Forge
#### Changed
- Trace files saved in `snfoundry_trace` directory will now use `_` as separators instead of `::`
### Cast
#### Added
- When using `--max-fee` with transactions v3, calculated max gas and max gas unit price are automatically validated to ensure they are greater than 0 after conversion
- interactive interface that allows setting created or imported account as the default
#### Changed
- Values passed to the `--max-fee`, `--max-gas`, and `--max-gas-unit-price` flags must be greater than 0
#### Deprecated
- `--version` flag
## [0.35.1] - 2024-12-16
### Forge
#### Fixed
- Minimal Rust version in requirements check is the same as in docs (`1.80.1`)
- `snforge` produces trace for contracts even if they fail or panic (assuming test passed)
## [0.35.0] - 2024-12-13
### Forge
#### Added
- Requirements validation during `snforge` runtime
- `snforge check-requirements` command
- `snforge new` command
#### Changed
- `snforge_scarb_plugin` will now also emit warnings when errors occur
- `snforge_std` migrated to `2024_07` edition
- `snforge_std` from scarbs package registry is now used in `snforge new` template
#### Deprecated
- `snforge init` command
### Cast
#### Added
- `account create` command shows prepared deployment command
#### Changed
- `--version` flag is now optional and `v3` will be used by default
- Displaying underlying RPC error instead of "Unknown RPC error" in edge cases
#### Deprecated
- `--fee-token` flag - `strk` will be used by default
## [0.34.0] - 2024-11-26
### Forge
#### Added
- `generate_random_felt()` for generating (pseudo) random felt value.
- Printing information about compiling Sierra using `universal-sierra-compiler`
- Displaying backtrace when contract call fails
#### Changed
- Tests config run is now executed in parallel resulting in faster `snforge test` setup in some cases
### Cast
#### Added
- You can skip `--name` flag when using `account import` - a default name will be generated.
- Addresses outputted when calling `sncast account create`, `sncast deploy` and `sncast declare` are now padded to 64 characters length and prefixed with `0x0`
- Globally available configuration to store profiles to share between projects.
#### Changed
- Changed return type of `declare` in Cairo Deployment Scripts so it can handle already declared contracts without failing
- Allow using `show-config` command without providing rpc url
## [0.33.0] - 2024-11-04
### Cast
#### Added
- You can now use numbers without quotes as inputs for calls in multicall config file.
- New `--arguments` flag to `call`, `invoke` and `deploy` for automatic conversion of Cairo expressions instead of serialized form.
### Forge
#### Changed
- You can now pass arguments to `cairo-profiler` and `cairo-coverage`. Everything after `--` will be passed to underlying binary. E.g.
`snforge test --build-profile -- --show-inlined-functions`
- You can't use now `--coverage` and `--build-profile` flags at the same time. If you want to use both, you need to run
`snforge test` twice with different flags.
- Contract artifacts are compiled to CASM concurrently.
- Starknet artifacts are now loaded from all tests targets
- Cairo Edition in `snforge init` template set to `2024_07`
#### Fixed
- Scarb features work with optimized compilation
- Custom test targets are now supported with optimized compilation
- Calling contract functions via safe-dispatcher now returns an `Err` when attempting to invoke a non-existent entry point, instead of causing a panic.
## [0.32.0] - 2024-10-16
### Cast
#### Changed
- Short option for `--accounts-file` flag has been removed.
- Short option for `--contract-address` is now `-d` instead of `-a`.
- `account add` is renamed to `account import`.
- `account import` can be now used without specifying `--private-key` or `--private-key-file` flags. Instead private key will be read interactively from the user.
#### Fixed
- `account delete` command: It is no longer necessary to provide the `--url` argument each time. Either the `--url` or `--network` argument must be provided, but not both, as they are mutually exclusive.
### Forge
#### Changed
- When using test name filter with `--exact` flag, forge will try to compile only the selected test.
## [0.31.0] - 2024-09-26
### Cast
#### Changed
- `declare` and `verify` commands now use the Scarb `release` profile instead of the `dev` profile as the default for building artifacts
- StarkScan links now point to specific pages for transactions, contracts and classes.
#### Fixed
- Explorer links displayed upon committing transactions are now properly formatted
- `sncast declare` no longer fails for flat contracts (i.e. CASM artifacts with `bytecode_segment_lengths` being a number)
### Forge
#### Added
- Project generated by `snforge` contains `assert_macros` dependency with version 0.1.0 for Scarb <= 2.8.0, otherwise equal to Scarb
- Support for overriding fork configuration in test attribute with a different block ID, tag, or hash.
- `--no-optimization` flag that can be used to build contracts using the [starknet contract target](https://docs.swmansion.com/scarb/docs/extensions/starknet/contract-target.html#starknet-contract-target. This is the default behavior when using Scarb < 2.8.3
#### Changed
- For Scarb >= `2.8.3` contract artifacts are built as part of the test target now. This process speeds up the compilation time, but the behavior of the contracts potentially may not be 100% consistent with the real networks. It can be disabled using the [--no-optimization flag](https://foundry-rs.github.io/starknet-foundry/appendix/snforge/test.html#--no-optimization)
- `snforge` now validates if your project is setup to generate debug info needed for `cairo-coverage` when running `--coverage` flag
### `snforge_scarb_plugin`
#### Fixed
- The package is now correctly versioned
## [0.30.0] - 2024-09-04
### Forge
#### Added
- Derived `Debug` and `Clone` on `trace.cairo` items
- `--coverage` flag to the `test` command. Saves trace data and then generates coverage report of test cases which pass and are not fuzz tests. You need [cairo-coverage](https://github.com/software-mansion/cairo-coverage) installed on your system.
#### Fixed
- `latest` fork block id tag validation in `Scarb.toml` is now consistent
- `RangeCheck96`, `AddMod`, `MulMod` builtins are now properly supported
- Fixed escaping `'` in `#[should_panic]`s
- Fixed `scarb init` with snforge runner
## [0.29.0] - 2024-08-28
### Forge
#### Added
- Support for Scarb features in `snforge test` - flags the same as in Scarb. Read more [here](https://docs.swmansion.com/scarb/docs/reference/conditional-compilation.html#features)
#### Fixed
- `snforge init` no longer emits warnings
- Project template generated by `snforge init` matches new `declare` cheatcode interface and compiles properly
## [0.28.0] - 2024-08-21
### Forge
#### Changed
- Bumped Cairo version to `2.7.0`
- Max steps in tests (configured by argument `--max-n-steps`) now defaults to 10 million
if not provided (changed from 4 million).
### Cast
#### Added
- Commands that commit transactions now display links to block explorers. When in human-readable mode, `invoke`, `declare`, `deploy`, `multicall run`, `account create` and `account deploy` will display additional information with an url. A new key in Cast configuration - `block-explorer` determines which block explorer service the displayed link leads to. Possible options are:` StarkScan`, `Voyager`, `ViewBlock`, `OkLink`, `NftScan`.
#### Changed
- `account create` outputs hint about the type of the tokens required to prefund a newly created account with before deployment
- `sncast` no longer expects `--url` as a common argument. It is now required specifically by commands that utilise it, i.e. `account add`, `account create`, `account delete`, `account deploy`, `multicall run`, `script run`, `call`, `declare`, `deploy`, `invoke`, `show-config`, `tx-status`.
Commands that do not require `--url` anymore: `account list`, `multicall new`, `script init`, `verify`
### Forge
#### Changed
- Fork tests now discover chain ID via provided RPC URL, defaulting to `SN_SEPOLIA`
- `#[fork]` attribute parameters format. [Read more here](https://foundry-rs.github.io/starknet-foundry/snforge-advanced-features/fork-testing.html)
- steps counting
- Block tag changed name from `Latest` to `latest`
- `declare` cheatcode now returns `Result<DeclareResult, Array<felt252>>` [Read more here](https://foundry-rs.github.io/starknet-foundry/appendix/snforge-library/declare.html)
## [0.27.0] - 2024-07-24
### Forge
#### Added
- `spy_messages_to_l1()` for listening in on messages to L1 sent by your contracts. [Read more here](https://foundry-rs.github.io/starknet-foundry/testing/testing-messages-to-l1.html).
#### Changed
- Renamed global cheatcodes listed [here](https://foundry-rs.github.io/starknet-foundry/appendix/cheatcodes.html) - cheatcode invocations affecting the global scope and working indefinitely, already marked with a `_global` suffix, received a `start_` prefix
### Cast
#### Added
- `verify` subcommand to verify contract (walnut APIs supported as of this version). [Read more here](https://foundry-rs.github.io/starknet-foundry/appendix/sncast/verify.html)
- support for v3 transactions on account deploy, deploy, declare, invoke
- Newest class hash for OpenZeppelin account contracts
- `account list` subcommand for listing all available accounts [Read more here](https://foundry-rs.github.io/starknet-foundry/appendix/sncast/account/list.html)
#### Changed
- `multicall new` no longer prints generated template to stdout and now requires specifying output path. [Read more here](https://foundry-rs.github.io/starknet-foundry/appendix/sncast/multicall/new.html)
## [0.26.0] - 2024-07-03
### Forge
#### Changed
- Updated event testing - read more [here](./docs/src/testing/testing-events.md) on how it now works and [here](./docs/src/appendix/cheatcodes/spy_events.md)
about updated `spy_events` cheatcode
## [0.25.0] - 2024-06-12
### Forge
#### Changed
- `SyscallResultStringErrorTrait::map_error_to_string` removed in favor of utility function (`snforge_std::byte_array::try_deserialize_bytearray_error`)
### Cast
#### Removed
- `--class-hash` flag from `account deploy` command
#### Added
- `tx-status` subcommand to get transaction status. [Read more here](./docs/src/starknet/tx-status.md)
- `tx_status` function to cast_std. [Read more here](./docs/src/appendix/sncast-library/tx_status.md)
- Support for creating argent accounts
- Support for creating braavos accounts
## [0.24.0] - 2024-05-22
### Forge
#### Removed
- `prank`, `warp`, `roll`, `elect`, `spoof` cheatcodes in favour of `cheat_execution_info`
#### Added
- `cheat_execution_info` cheatcode and per variable helpers for it
### Cast
#### Added
- New required flag `--type` to `account add` command
### Forge
#### Changed
- `SignerTrait::sign` now returns `Result` instead of failing the test
- `L1HandlerTrait::execute()` takes source address and payloads as arguments [Read more here](https://foundry-rs.github.io/starknet-foundry/appendix/cheatcodes/l1_handler.html)
- When calling to an address which does not exists, error is forwarded to cairo runtime instead of failing the test
## [0.23.0] - 2024-05-08
### Forge
#### Removed
- `event_name_hash` removal, in favour of `selector!` usage
#### Changed
- the tool now always compiles Sierra contract artifacts to CASM using
[`USC`](https://github.com/software-mansion/universal-sierra-compiler) - before it used to consume CASM artifacts
produced by Scarb if they were present. Setting up `casm = true` in `Scarb.toml` is no longer recommended - it may slow
down the compilation.
- The `replace_bytecode` cheatcode now returns `Result` with a possible `ReplaceBytecodeError`, since it may cause unexpected errors down the line when not handled properly
### Cast
#### Changed
- the tool now always compiles Sierra contract artifacts to CASM using
[`USC`](https://github.com/software-mansion/universal-sierra-compiler) - before it used to consume CASM artifacts
produced by Scarb if they were present. Setting up `casm = true` in `Scarb.toml` is no longer recommended - it may slow
down the compilation.
#### Fixed
- scripts built with release profile are now properly recognized and ran
## [0.22.0] - 2024-04-17
### Forge
#### Changed
- `deploy` / `deploy_at` now additionally return the constructor return data via `SyscallResult<(ContractAddress, Span<felt252>)>`
- `declare` returns `Result<ContractClass, Array<felt252>>` instead of `ContractClass`
- `L1HandlerTrait::execute()` returns `SyscallResult<()>`
- `SyscallResultStringErrorTrait::map_string_error` renamed to `SyscallResultStringErrorTrait::map_error_to_string`
- `var` now supports `ByteArray` with double quoting, and returns `Array<felt252>` instead of a single `felt252`
#### Removed
- `snforge_std::RevertedTransaction`
## [0.21.0] - 2024-04-03
### Forge
#### Changed
- `read_txt` and `read_json` now supports `ByteArray`
### Cast
#### Added
- sncast script idempotency feature - every action done by the script that alters the network state will be tracked in state file,
and won't be replayed if previously succeeded
## [0.20.1] - 2024-03-22
## [0.20.0] - 2024-03-20
### Forge
#### Added
- variants of cheatcodes with `CheatSpan` (read more [here](https://foundry-rs.github.io/starknet-foundry/testing/using-cheatcodes#setting-cheatcode-span))
- Providing configuration data with env variables [DOCS](https://foundry-rs.github.io/starknet-foundry/projects/configuration.html#environmental-variables)
#### Fixed
- Events emitted in cairo 0 contracts are now properly collected
- `--build-profile` no longer fails silently (compatible with [`cairo-profiler`](https://github.com/software-mansion/cairo-profiler) 0.2.0)
#### Changed
- Default `chain_id` has been changed from `SN_GOERLI` to `SN_SEPOLIA`
- Supported RPC version is now 0.7.0
- Gas calculation is in sync with starknet 0.13.1 (with EIP 4844 blob usage enabled)
- Resources displayed (steps, builtins) now include OS costs of syscalls
### Cast
#### Added
- Support for OpenZeppelin Cairo 1 (or higher) accounts creation, deployment and usage
- Providing configuration data with env variables [DOCS](https://foundry-rs.github.io/starknet-foundry/projects/configuration.html#environmental-variables)
#### Changed
- Supported RPC version is now 0.7.0
- Default class hash in `account create` and `account deploy` has been changed to [cairo2 class hash](https://starkscan.co/class/0x04c6d6cf894f8bc96bb9c525e6853e5483177841f7388f74a46cfda6f028c755)
## [0.19.0] - 2024-03-06
### Forge
⚠️ This version requires installing external [universal-sierra-compiler (v2.0.0)](https://github.com/software-mansion/universal-sierra-compiler) ⚠️
#### Added
- [`replace_bytecode`](https://foundry-rs.github.io/starknet-foundry/appendix/cheatcodes/replace_bytecode.html) cheatcode
- result of the call to the trace
- added `--build-profile` flag to the `--test` command. Saves trace data and then builds profiles of test cases which pass and are not fuzz tests. You need [cairo-profiler](https://github.com/software-mansion/cairo-profiler) installed on your system.
- dependency on the [universal-sierra-compiler](https://github.com/software-mansion/universal-sierra-compiler)
binary, which will allow forge to be independent of sierra version
#### Changed
- `var()`, `read_txt()`, `read_json()`, `FileTrait::new()`, `declare()` now use regular strings (`ByteArray`) instead of short strings (`felt252`)
- `start_mock_call()`, `stop_mock_call()`, `L1Handler` now use selector (`selector!()`) instead of names
### Cast
#### Changed
- `declare()` now uses regular strings (`ByteArray`) instead of short strings (`felt252`)
- `call()` and `invoke()` now require function selector (`selector!()`) instead of function name in scripts (sncast_std)
#### Removed
- `--path-to-scarb-toml` optional flag that allowed to specify the path to the `Scarb.toml` file
- `--deployed` flag from `account add` subcommand
## [0.18.0] - 2024-02-21
### Forge
#### Added
- contract names to call trace
- `--max-n-steps` argument that allows setting own steps limit
#### Changed
- Unknown entry point error when calling a contract counts as a panic
- Cairo edition set to `2023_11`
#### Fixed
- Calling Cairo 0 contract no longer cancels cheatcodes in further calls
### Cast
#### Added
- `script init` command to generate a template file structure for deployment scripts
- Warning is emitted when executing sncast commands if the node's JSON-RPC version is incompatible
#### Changed
- to run a deployment script it is required to use `script run` subcommand
## [0.17.1] - 2024-02-12
### Cast
#### Changed
- fixed a bug where a profile was passed to scarb even when it did not exist
- error handling from inside deployment scripts is now possible (`declare`, `deploy`, `call`, `invoke` now return `Result<T, ScriptCommandError>`)
### Forge
#### Added
- `map_string_error` for use with dispatchers, which automatically converts string errors from the syscall result (read more [here](https://foundry-rs.github.io/starknet-foundry/testing/contracts#handling-errors))
## [0.17.0] - 2024-02-07
### Forge
#### Added
- Warning in fork testing is emitted, when node JSON-RPC version is incompatible
- `get_call_trace` library function for retrieving call trace in tests
#### Changed
- Gas estimation is now aligned with the Starknet v0.13
#### Removed
- `snforge_std::PrintTrait` - use `print!`, `println!` macros and / or `core::debug::PrintTrait` instead
#### Fixed
- Gas used in constructors and handling of L1 messages is now properly included in total gas cost
### Cast
#### Changed
- sncast tool configuration is now moved away from `Scarb.toml` to `snfoundry.toml` file. This file must be present in current or any parent directories in order to use profiles.
#### Added
- `--package` flag for `declare` and `script` subcommands, that specifies scarb package to work with
- `Debug` and `Display` impls for script subcommand responses - use `print!`, `println!` macros instead of calling `.print()`
## [0.16.0] - 2024-01-26
### Forge
#### Added
- Bump to cairo 2.5.0
#### Changed
- `SafeDispatcher`s usages need to be tagged with `#[feature("safe_dispatcher)]` (directly before usage), see [the shamans post](https://community.starknet.io/t/cairo-v2-5-0-is-out/112807#safe-dispatchers-15)
## [0.15.0] - 2024-01-24
### Forge
#### Added
- `--detailed-resources` flag for displaying additional info about used resources
- `store` and `load` cheatcodes
- `--save-trace-data` flag to `snforge test` command. Traces can be used for profiling purposes.
#### Changed
- `available_gas` attribute is now supported (Scarb >= 2.4.4 is required)
#### Fixed
- Error message for tests that should panic but pass
### Cast
#### Changed
- the 'pending' block is used instead of 'latest' as the default when obtaining the nonce
## [0.14.0] - 2024-01-11
### Forge
#### Added
- `Secp256k1` and `Secp256r1` curves support for `KeyPair` in `snforge_std`
#### Changed
- maximum number of computational steps per call set to current Starknet limit (3M)
- `mean` and `std deviation` fields are displayed for gas usage while running fuzzing tests
- Cairo edition in `snforge_std` and `sncast_std` set to `2023_10`
- `snforge_std::signature` module with `stark_curve`, `secp256k1_curve` and `secp256r1_curve` submodules
#### Fixed
- Safe library dispatchers in test code no longer propagate errors when not intended to
## [0.13.1] - 2023-12-20
### Forge
#### Added
- `assert_not_emitted` assert to check if an event was not emitted
#### Changed
- fields from `starknet::info::v2::TxInfo` are now part of `TxInfoMock` from `snforge_std::cheatcodes::tx_info`
- consistent latest block numbers for each url are now used across the whole run when testing against forks
#### Fixed
- Parsing panic data from call contract result
### Cast
#### Added
- add support for sepolia network
- `--yes` option to `account delete` command that allows to skip confirmation prompt
#### Changed
- Argument `max-fee` in `account deploy` is now optional
## [0.13.0] - 2023-12-14
### Forge
#### Changed
- Bump cairo to 2.4.0.
- Migrated test compilation and collection to Scarb, snforge should now be compatible with every Scarb version >= 2.4.0 unless breaking changes happen
## [0.12.0] - 2023-12-06
### Forge
#### Added
- print gas usage for each test
- Support for test collector built-in in Scarb with the `--use-scarb-collector` flag. Requires at least `nightly-2023-12-04` version of Scarb.
### Cast
#### Added
- `--wait-timeout` to set timeout for waiting for tx on network using `--wait` flag (default 60s)
- `--wait-retry-interval` to adjust the time between consecutive attempts to fetch tx from network using `--wait` flag (default 5s)
- allow setting nonce in declare, deploy and invoke (using `--nonce` and in deployment scripts)
- add `get_nonce` function to cast_std
- `--private-key-file` option to `account add` command that allows to provide a path to the file holding account private key
## [0.11.0] - 2023-11-22
### Forge
#### Added
- `elect` cheatcode for mocking the sequencer address. Read more [here](./docs/src/appendix/cheatcodes/sequencer_address/start_elect.md).
- `--rerun-failed` option to run tests that failed during the last run.
#### Changed
- `start_warp` and `stop_warp` now take `CheatTarget` as the first argument instead of `ContractAddress`. Read more [here](./docs/src/appendix/cheatcodes/block_timestamp/start_warp.md).
- `start_prank` and `stop_prank` now take `CheatTarget` as the first argument instead of `ContractAddress`. Read more [here](./docs/src/appendix/cheatcodes/caller_address/start_prank.md).
- `start_roll` and `stop_roll` now take `CheatTarget` as the first argument instead of `ContractAddress`. Read more [here](./docs/src/appendix/cheatcodes/block_number/start_roll.md).
PS: Credits to @bllu404 for the help with the new interfaces for cheats!
#### Fixed
- using unsupported `available_gas` attribute now fails the specific test case instead of the whole runner
### Cast
#### Added
- MVP for cairo deployment scripts with declare, deploy, invoke and call
## [0.10.2] - 2023-11-13
### Forge
#### Changed
- Bump cairo to 2.3.1
#### Removed
- `available_gas` attribute, it didn't compute correctly gas usage. Contract functions execution cost would not be included.
## [0.10.1] - 2023-11-09
### Cast
#### Fixed
- scarb metadata in declare subcommand now takes manifest path from cli if passed instead of looking for it
## [0.10.0] - 2023-11-08
### Forge
#### Removed
- forking of the `Pending` block
#### Added
- `--color` option to control when colored output is used
- when specifying `BlockId::Tag(Latest)` block number of the used block will be printed
- printing number of ignored and filtered out tests
#### Fixed
- Segment Arena Builtin crashing with `CairoResourcesNotContainedInFeeCosts` when Felt252Dict was used
### Cast
#### Fixed
- account commands now always return valid json when `--json` flag is passed
- allow passing multiple calldata argument items without quotes
- display correct error message when account file is invalid
## [0.9.1] - 2023-10-30
### Forge
#### Fixed
- diagnostic paths referring to `tests` folder
- caching `get_class_hash_at` in forking test mode (credits to @jainkunal for catching the bug)
## [0.9.0] - 2023-10-25
### Forge
#### Added
- `#[ignore]` attribute together with `--ignored` and `include-ignored` flags - read more [here](https://foundry-rs.github.io/starknet-foundry/testing/testing.html#ignoring-some-tests-unless-specifically-requested)
- support for `deploy_syscall` directly in the test code (alternative to `deploy`)
- `snforge_std::signature` module for performing ecdsa signatures
#### Changed
- updated Cairo version to 2.3.0 - compatible Scarb version is 2.3.0:
- tests in `src` folder now have to be in a module annotated with `#[cfg(test)]`
- `snforge_std::PrintTrait` will not convert values representing ASCII control characters to strings
- separated `snforge` to subcommands: `snforge test`, `snforge init` and `snforge clean-cache`.
Read more [here](https://foundry-rs.github.io/starknet-foundry/appendix/snforge.html).
- `starknet::get_block_info` now returns correct block info in a forked block
### Cast
#### Added
- `show-config` subcommand to display currently used configuration
- `account delete` command for removing accounts from the accounts file
- `--hex-format` flag has been added
#### Removed
- `-i` short for `--int-format` is removed, now have to use the full form `--int-format`
## [0.8.3] - 2023-10-17
### Forge
#### Changed
- Test from different crates are no longer run in parallel
- Test outputs are printed in non-deterministic order
#### Fixed
- Test output are printed in real time again
- Bug when application would not wait for tasks to terminate after execution was cancelled
## [0.8.2] - 2023-10-12
### Forge
#### Fixed
- incorrect caller address bug
## [0.8.1] - 2023-10-12
### Forge
#### Fixed
- significantly reduced ram usage
## [0.8.0] - 2023-10-11
### Forge
#### Added
- `#[fuzzer(...)]` attribute allowing to specify a fuzzer configuration for a single test case
- Support for `u8`, `u16`, `u32`, `u64`, `u128`, `u256` types to fuzzer
- `--clean-cache` flag
- Changed interface of `L1Handler.execute` and `L1Handler` (dropped `fee` parameter, added result handling with `RevertedTransaction`)
- Contract now has associated state, more about it [here](https://foundry-rs.github.io/starknet-foundry/testing/testing_contract_internals.html)
- cheatcodes (`prank`, `roll`, `warp`) now work on forked Cairo 0 contracts
#### Changed
- Spying events interface is updated to enable the use of events defined inside contracts in assertions
- Test are executed in parallel
- Fixed inconsistent pointers bug https://github.com/foundry-rs/starknet-foundry/issues/659
- Fixed an issue where `deploy_at` would not trigger the constructors https://github.com/foundry-rs/starknet-foundry/issues/805
### Cast
#### Changed
- dropped official support for cairo 1 compiled contracts. While they still should be working without any problems,
from now on the only officially supported cairo compiler version is 2
## [0.7.1] - 2023-09-27
### Forge
#### Added
- `var` library function for reading environmental variables
#### Fixed
- Using any concrete `block_id` when using forking mode, would lead to crashes
## [0.7.0] - 2023-09-27
### Forge
#### Added
- Support for scarb workspaces
- Initial version of fuzz testing with randomly generated values
- `#[fork(...)]` attribute allowing testing against a network fork
#### Changed
- Tests are collected only from a package tree (`src/lib.cairo` as an entrypoint) and `tests` folder:
- If there is a `lib.cairo` file in `tests` folder, then it is treated as an entrypoint to the `tests` package from which tests are collected
- Otherwise, all test files matching `tests/*.cairo` regex are treated as modules and added to a single virtual `lib.cairo`, which is treated as described above
### Cast
#### Added
- `account add` command for importing accounts to the accounts file
- `account create` command for creating openzeppelin accounts with starkli-style keystore
- `account deploy` command for deploying openzeppelin accounts with starkli-style keystore
### Changed
- `--add-profile` no longer accepts `-a` for short
- allow the `id` property in multicalls to be referenced in the inputs of `deploy` and `invoke` calls
## [0.6.0] - 2023-09-13
### Forge
#### Added
- `deploy_at` cheatcode
- printing failures summary at the end of an execution
- filtering tests now uses an absolute module tree path — it is possible to filter tests by module names, etc.
#### Fixed
- non-zero exit code is returned when any tests fail
- mock_call works with dispatchers if contract does not exists
### Cast
#### Added
- support for starkli-style accounts, allowing the use of existing accounts
#### Changed
- fixed misleading error message when there was no scarb in PATH and `--path-to-scarb-toml` was passed
- modified `multicall new` command output, to be in line with other commands outputs
## [0.5.0] - 2023-08-30
### Forge
#### Added
- support for `keccak_syscall` syscall. It can be used directly in cairo tests
- `l1_handler_execute` cheatcode
- support for `roll`ing/`warp`ing/`prank`ing the constructor logic (precalculate address, prank, assert pranked state in constructor)
- `spy_events` cheatcode
- Functions `read_json` and `FileParser<T>::parse_json` to load data from json files and deserialize it
#### Changed
- rename `TxtParser` trait to `FileParser`
- rename `parse_txt` trait to `read_txt`
- support for printing in contracts
- `spoof` cheatcode
- snforge command-line flag `--init`
### Cast
#### Added
- Support for custom networks - accounts created on custom networks are saved in `accounts-file` under network's
chain_id
- `accounts-file` field in Scarb.toml profile
- Include the class hash of an account contract in the `accounts-file`
#### Removed
- `--network` option together with the `network` field in Scarb.toml profile — previously used as a validation factor;
now networks are identified by their chain_id
## [0.4.0] - 2023-08-17
### Forge
#### Added
- `#[should_panic]` attribute support
- Documentation to public methods
- Information sections to documentation about importing `snforge_std`
- Print support for basic numeric data types
- Functions `parse_txt` and `TxtParser<T>::deserialize_txt` to load data from plain text files and serialize it
- `get_class_hash` cheatcode
- `mock_call` cheatcode
- `precalculate_address` cheatcode
#### Changed
- Exported `snforge_std` as a Scarb package, now you have to import it explicitly with e.g. `use snforge_std::declare`
and add it as a dependency to your Scarb.toml
```toml
[dependencies]
# ...
snforge_std = { git = "https://github.com/foundry-rs/starknet-foundry", tag = "v0.4.0" }
```
- Moved `ForgeConfigFromScarb` to `scarb.rs` and renamed to `ForgeConfig`
- Made private:
- `print_collected_tests_count`
- `print_running_tests`
- `print_test_result`
- `print_test_summary`
- `TestCaseSummary::from_run_result`
- `TestCaseSummary::skipped`
- `extract_result_data`
- `StarknetArtifacts`
- `StarknetContractArtifactPaths`
- `StarknetContract`
- Split `dependencies_for_package` into separate methods:
- `paths_for_package`
- `corelib_for_package`
- `target_name_for_package`
- `compilation_unit_for_package`
- Fails test when user tries to use syscalls not supported by forge test runner
- Updated cairo-lang to 2.1.0, starknet-api to 0.4.1 and blockifier to 0.2.0-rc0
### Cast
#### Added
- Added `--class-hash` flag to account create/deploy, allowing for custom openzeppelin account contract class hash
## [0.3.0] - 2023-08-02
### Forge
#### Added
- `warp` cheatcode
- `roll` cheatcode
- `prank` cheatcode
- Most unsafe libfuncs can now be used in contracts
#### Changed
- `declare` return type to `starknet::ClassHash`, doesn't return a `Result`
- `PreparedContract` `class_hash` changed to `starknet::ClassHash`
- `deploy` return type to `starknet::ContractAddress`
#### Fixed
- Using the same cairo file names as corelib files no longer fails test execution
### Cast
#### Added
- multicall as a single transaction
- account creation and deployment
- `--wait` flag to wait for transaction to be accepted/rejected
#### Changed
- sierra and casm artifacts are now required in Scarb.toml for contract declaration
- improved error messages
## [0.1.1] - 2023-07-26
### Forge & Cast
#### Fixed
- `class_hash`es calculation
- Test collection
## [0.1.0] - 2023-07-19
### Forge & Cast
#### Added
- Initial release
================================================
FILE: CONTRIBUTING.md
================================================
# Contribution Guideline
Starknet Foundry is under active development and is open for contributions!
## Opening an issue
If you think something doesn't work or something is missing please open an issue! This way we can address this problem
and make Starknet Foundry better!
Before opening an issue, it is always a good idea to search existing
[issues](https://github.com/foundry-rs/starknet-foundry/issues) and verify if a similar one doesn't already exist.
## Contributing
### Environment setup
See [development guide](https://foundry-rs.github.io/starknet-foundry/development/environment-setup.html) in Starknet
Foundry book for environment setup.
### Selecting an issue
If you are a first time contributor pick up any issue labeled as `good-first-issue`. Write a comment that you would like to
work on it and we will assign it to you. Need some guidance? Reach out to other developers on [Telegram](https://t.me/+d8ULaPxeRqlhMDNk).
If you are a more experienced Starknet Foundry contributor you can pick any issue labeled as `help-wanted`. Make sure to discuss the details with the core team beforehand.
### Writing Tests
Please make sure the feature you are implementing is thoroughly tested with automatic tests.
You can check existing tests in the repository to see the recommended approach to testing.
#### Snapshot tests
Some tests use [`insta`](https://crates.io/crates/insta) snapshots files (`.snap`) to store expected test output, specifically for testing some of Starknet Foundry features with older Scarb versions.
When adding such test case, please add a `snap_` prefix to its name to ensure it's tested on CI for all supported Scarb versions.
To make sure snapshot tests pass for all currently supported Scarb versions, run:
```sh
./scripts/check_snapshots.sh
```
If some of the snapshot tests fail, run:
```sh
./scripts/check_snapshots.sh --fix
```
and review the newly generated snapshots.
### Pull Request Size
Try to make your pull request self-contained, only introducing the necessary changes.
If your feature is complicated,
consider splitting the changes into meaningful parts and introducing them as separate pull requests.
Creating very large pull requests may significantly increase review time or even prevent them from being merged.
### Contributions Related to Spelling and Grammar
At this time, we will not be accepting contributions that only fix spelling or grammar errors in documentation, code or
elsewhere.
### `sncast` Guidelines
#### Command Outputs
Please follow these rules when creating outputs for `sncast`:
- Use an imperative tone
- Keep your message concise and to the point
- When displaying config, use `key: value` format
- If the executed command has a natural successor-command, display it as hint in the output. For example, the output of `declare` command should include a hint to use `deploy` command next.
<!-- TODO(#2859): Add bullet point about colors used for text when displaying fees, addresses and hashes -->
================================================
FILE: Cargo.toml
================================================
[workspace]
resolver = "2"
members = [
"crates/shared",
"crates/forge",
"crates/forge-runner",
"crates/sncast",
"crates/cheatnet",
"crates/conversions",
"crates/conversions/cairo-serde-macros",
"crates/data-transformer",
"crates/runtime",
"crates/scarb-api",
"crates/configuration",
"crates/universal-sierra-compiler-api",
"crates/docs",
"crates/debugging",
"crates/testing/packages_validation",
"crates/foundry-ui",
"crates/native-api",
]
exclude = ["crates/snforge-scarb-plugin"]
[profile.release]
codegen-units = 1
lto = "thin"
[profile.ci]
inherits = "dev"
incremental = false
[workspace.package]
version = "0.59.0"
edition = "2024"
repository = "https://github.com/foundry-rs/starknet-foundry"
license = "MIT"
license-file = "LICENSE"
[workspace.dependencies]
blockifier = { version = "0.18.0-rc.1", features = ["testing", "tracing", "node_api"] }
starknet_api = "0.18.0-rc.1"
bigdecimal = "0.4.10"
cairo-debugger = { git = "https://github.com/software-mansion-labs/cairo-debugger", rev = "90fa679cd7572fedc5e17dadf15ec44a97b9ce11" }
cairo-native = "0.9.0-rc.0"
cairo-lang-casm = { version = "=2.17.0", features = ["serde"] }
cairo-lang-sierra = "=2.17.0"
cairo-lang-utils = "=2.17.0"
cairo-lang-starknet = "=2.17.0"
cairo-lang-filesystem = "=2.17.0"
cairo-lang-diagnostics = "=2.17.0"
cairo-lang-syntax = "=2.17.0"
cairo-lang-test-plugin = "=2.17.0"
cairo-lang-starknet-classes = "=2.17.0"
cairo-lang-parser = "=2.17.0"
cairo-lang-sierra-to-casm = "=2.17.0"
cairo-vm = { version = "=3.2.0", features = ["test_utils"] }
cairo-annotations = { version = "0.8.0", features = ["cairo-lang"] }
dirs = "6.0.0"
dialoguer = "0.12.0"
starknet-types-core = { version = "0.2.4", features = ["hash", "prime-bigint"] }
anyhow = "1.0.100"
assert_fs = "1.1.2"
camino = { version = "1.2.1", features = ["serde1"] }
clap = { version = "4.5.57", features = ["derive", "deprecated"] }
clap_complete = "4.5.65"
console = "0.16.1"
include_dir = "0.7.4"
indoc = "2"
itertools = "0.14.0"
indexmap = "2.11.4"
num-traits = "0.2.19"
rayon = "1.10"
regex = "1.11.3"
serde = { version = "1.0.219", features = ["derive"] }
serde_json = "1.0.149"
starknet-rust = "0.19.0-rc.2"
starknet-rust-crypto = "0.9.0"
tempfile = "3.24.0"
thiserror = "2.0.17"
ctor = "0.6.2"
url = { "version" = "2.5.4", "features" = ["serde"] }
tokio = { version = "1.50.0", features = ["full"] }
futures = "0.3.31"
num-bigint = { version = "0.4.6", features = ["rand"] }
walkdir = "2.5.0"
rand = "0.8.5"
project-root = "0.2.2"
which = "8.0.2"
conversions = { path = "./crates/conversions" }
shared = { path = "./crates/shared" }
docs = { path = "./crates/docs" }
test-case = "3.3.1"
scarb-metadata = "1.14.0"
flatten-serde-json = "0.1.0"
snapbox = "1.0.1"
scarb-ui = "0.1.7"
semver = "1.0.27"
bimap = "0.6.3"
primitive-types = { version = "0.14.0", features = ["serde"] }
shellexpand = "3.1.0"
toml = "1.0.6"
rpassword = "7.3.1"
promptly = "0.3.1"
ptree = "0.5.2"
reqwest = { version = "0.13.1", features = ["json", "rustls"] }
fs_extra = "1.3.0"
openssl = { version = "0.10", features = ["vendored"] }
toml_edit = "0.25.4"
axum = "0.8.8"
fs2 = "0.4.3"
flate2 = "1.1.0"
k256 = { version = "0.13.4", features = ["sha256", "ecdsa", "serde"] }
p256 = { version = "0.13.2", features = ["sha256", "ecdsa", "serde"] }
glob = "0.3.2"
sha3 = "0.10.8"
sha2 = "0.10.8"
base16ct = { version = "1.0.0", features = ["alloc"] }
async-trait = "0.1.87"
serde_path_to_error = "0.1.20"
wiremock = "0.6.3"
coins-ledger = "0.13.0"
speculos-client = "0.1.2"
const-hex = "1.18.1"
indicatif = "0.18.3"
shell-words = "1.1.0"
sanitize-filename = "0.6.0"
derive_more = { version = "2.1.1", features = ["display"] }
paste = "1.0.15"
strum = "0.28"
strum_macros = "0.28"
scarb-oracle-hint-service = "0.1.1"
chrono = "0.4.42"
tracing-subscriber = { version = "0.3.20", features = ["env-filter"] }
tracing = "0.1.43"
tracing-chrome = "0.7.2"
tracing-log = "0.2.0"
comfy-table = "7"
create-output-dir = "1.0.0"
insta = { version = "1.46.0", features = ["filters"] }
plotters = { version = "0.3", default-features = false, features = ["all_series", "all_elements", "svg_backend", "bitmap_backend", "bitmap_encoder", "full_palette", "colormaps", "ab_glyph"] }
mimalloc = "0.1"
================================================
FILE: Cross.toml
================================================
# TODO(#3790) Setup cross for native
#[build]
#pre-build = [
# "dpkg --add-architecture $CROSS_DEB_ARCH",
# "apt-get update",
# "apt-get install -y --no-install-recommends ca-certificates gnupg wget software-properties-common lsb-release",
# "apt-get install -y --no-install-recommends zlib1g-dev libzstd-dev zlib1g-dev:$CROSS_DEB_ARCH libzstd-dev:$CROSS_DEB_ARCH",
# "echo \"deb http://apt.llvm.org/focal/ llvm-toolchain-focal-19 main\" > /etc/apt/sources.list.d/llvm-toolchain-focal.list",
# "echo \"deb-src http://apt.llvm.org/focal/ llvm-toolchain-focal-19 main\" >> /etc/apt/sources.list.d/llvm-toolchain-focal.list",
# "wget -qO - https://apt.llvm.org/llvm-snapshot.gpg.key | apt-key add -",
# "apt-get update",
# "apt-get install -y --no-install-recommends llvm-19 llvm-19-dev llvm-19-runtime clang-19 clang-tools-19 lld-19 libpolly-19-dev libmlir-19-dev mlir-19-tools",
#]
#
#[target.x86_64-unknown-linux-gnu.env]
#passthrough = [
# "MLIR_SYS_190_PREFIX=/usr/lib/llvm-19",
# "LLVM_SYS_191_PREFIX=/usr/lib/llvm-19",
# "TABLEGEN_190_PREFIX=/usr/lib/llvm-19",
#]
================================================
FILE: LICENSE
================================================
The MIT License (MIT)
Copyright (c) 2023 Software Mansion <swmansion.com>
Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:
The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
================================================
FILE: README.md
================================================
<img src="./docs/src/images/logo.png" alt="logo" width="120" align="right" />
## Starknet Foundry
[![Telegram Chat][tg-badge]][tg-url] [![Telegram Support][tg-support-badge]][tg-support-url]
[tg-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=chat&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fstarknet_foundry
[tg-url]: https://t.me/starknet_foundry
[tg-support-badge]: https://img.shields.io/endpoint?color=neon&logo=telegram&label=support&style=flat-square&url=https%3A%2F%2Ftg.sumanjay.workers.dev%2Fstarknet_foundry_support
[tg-support-url]: https://t.me/starknet_foundry_support
Blazingly fast toolkit for developing Starknet contracts designed & developed by
ex [Protostar](https://github.com/software-mansion/protostar) team from [Software Mansion](https://swmansion.com) based
on native [Cairo](https://github.com/starkware-libs/cairo) test runner
and [Blockifier](https://github.com/starkware-libs/sequencer/tree/main/crates/blockifier), written in Rust 🦀.
Need help getting started with Starknet Foundry? Read the
📖 [Starknet Foundry Book](https://foundry-rs.github.io/starknet-foundry/)!

Starknet Foundry, like its [Ethereum counterpart](https://github.com/foundry-rs/foundry), consists of different modules
- [`snforge`](https://github.com/foundry-rs/starknet-foundry/tree/master/crates/forge): Starknet testing
framework (like Truffle, Hardhat and DappTools but for Starknet).
- [`sncast`](https://github.com/foundry-rs/starknet-foundry/tree/master/crates/sncast): All-in-one tool for
interacting with Starknet smart contracts, sending transactions and getting chain data.
## Installation
[Follow the installation manual](https://foundry-rs.github.io/starknet-foundry/getting-started/installation.html)
## Roadmap
Starknet Foundry is under active development! Expect a lot of new features to appear soon! 🔥
- [x] Running tests written in Cairo
- [x] Contract interactions testing
- [x] Interacting with Starknet from command line
- [x] Multicall support
- [x] Cheatcodes
- [x] Starknet state forking
- [x] Fuzz testing
- [x] Parallel tests execution
- [x] Performance improvements
- [x] Deployment scripts written in Cairo
- [ ] Transactions profiling 🏗️
- [ ] Debugging utilities 🏗️
- [ ] Test coverage reports (check out [cairo-coverage](https://github.com/software-mansion/cairo-coverage)) 🏗️
- [ ] L1 ↔ L2 messaging and cross-chain testing
See the [whole roadmap](./ROADMAP.md).
## Getting Help
You haven't found your answer to your question in
the [Starknet Foundry Book](https://foundry-rs.github.io/starknet-foundry/)?
- Join the [Telegram](https://t.me/starknet_foundry_support) group to get help
- Open a [GitHub discussion](https://github.com/foundry-rs/starknet-foundry/discussions) with your question
- Join the [Starknet Discord](https://discord.com/invite/starknet-community)
Found a bug? Open an [issue](https://github.com/foundry-rs/starknet-foundry/issues).
## Contributions
Starknet Foundry is under active development, and we appreciate any help from the community! Want to contribute? Read
the [contribution guidelines](./CONTRIBUTING.md).
Check out [development guide](https://foundry-rs.github.io/starknet-foundry/development/environment-setup.html) for
local environment setup guide.
================================================
FILE: RELEASING.md
================================================
# Instruction For Creating New Starknet Foundry Releases
1. Create a new branch.
2. Run `./scripts/release.sh MAJOR.MINOR.PATCH`.
3. Merge introduced changes to master branch.
4. Wait for release workflows to pass. A new release will be created on GitHub.
## Manually Creating a Release
In case a manual creation of release is necessary, for example when
cherry-picking changes, a release can also be triggered by creating a tag
with the name format `vMAJOR.MINOR.PATCH`.
Note that in this case `CHANGELOG.md`, `Cargo.toml` and `Cargo.lock` files
have to be updated accordingly.
# Nightly releases
Nightly release must be triggered manually using the Nightly GitHub action.
This action builds binaries from specified ref and uploads them to the [starknet-foundry-nightlies](https://github.com/software-mansion-labs/starknet-foundry-nightlies) repository.
Additionally, there are `stds` and `plugin` versions uploaded to the [_dev_ registry](https://scarbs.dev/).
After a successful release, [Ma'at](https://github.com/software-mansion/maat) is automatically triggered to run experiments in nightly workspace. Results can be found [here](https://docs.swmansion.com/maat/)
### Maintenance
Some access tokens require annual renewal due to expiration:
- `SNFOUNDRY_NIGHTLIES_CONTENTS_WRITE` - grants permission to create releases in nightlies repository.
- `MAAT_CONTENTS_READ_ACTIONS_WRITE` - required to trigger Ma'at run.
================================================
FILE: ROADMAP.md
================================================
# Roadmap
Tentative roadmap for Starknet Foundry. This document reflects the state of the roadmap at the time of writing.
We strive for our roadmap to reflect user needs and feedback, expect changes to this document.
**All feedback and request welcome.**
## Table of Contents
<!-- TOC -->
* [Roadmap](#roadmap)
* [Table of Contents](#table-of-contents)
* [Reference](#reference)
* [Forge](#forge)
* [🏗 Test Partitioning](#-test-partitioning)
* [🏗 Asserting Steps in Execution](#-asserting-steps-in-execution)
* [Reverting Storage Changes in Execution](#reverting-storage-changes-in-execution)
* [🏗 Sierra -> Casm Compilation](#-sierra---casm-compilation)
* [Performance Investigation](#performance-investigation)
* [Advanced Forking / Forking State Asserting](#advanced-forking--forking-state-asserting)
* [Derive Macro for `Fuzzable` Trait](#derive-macro-for-fuzzable-trait)
* [Typesafe Contract "declare"](#typesafe-contract-declare)
* [Research Variant and Differential Testing, Better Fuzzing Algorithms](#research-variant-and-differential-testing-better-fuzzing-algorithms)
* [Cast](#cast)
* [New Cast Scripts](#new-cast-scripts)
* [Transaction Dry Run](#transaction-dry-run)
* [CLI Revamp and Configuration Refactor](#cli-revamp-and-configuration-refactor)
* [Better Accounts Support](#better-accounts-support)
* [New Multicall Interface](#new-multicall-interface)
* [Contract Aliases in `snfoundry.toml`](#contract-aliases-in-snfoundrytoml)
<!-- TOC -->
## Reference
* Item "size" is in the scale 1 to 5 and reflects its relative complexity compared to other items in the roadmap.
* Items marked with 🏗️ are in progress.
* Items marked with ✅ are done.
## Forge
### 🏗 Test Partitioning
_Size: 3_
https://github.com/foundry-rs/starknet-foundry/issues/3548
Partitioning test suite into smaller test suites, to be run on separate machines in CI. Similar to `cargo nextest`.
### 🏗 Asserting Steps in Execution
_Size: 2_
https://github.com/foundry-rs/starknet-foundry/issues/2671
Feature for asserting the number of steps used in test execution.
### Reverting Storage Changes in Execution
_Size: 3_
https://github.com/foundry-rs/starknet-foundry/issues/3837
Change the test execution model to revert storage changes from top-level calls in case of recoverable failure.
### 🏗 Sierra -> Casm Compilation
_Size: 3_
https://github.com/foundry-rs/starknet-foundry/issues/3832
Sierra -> Casm performance investigation and optimization (if viable).
### Performance Investigation
_Size: 3_
https://github.com/foundry-rs/starknet-foundry/issues/3899
Investigate bottlenecks in standard test execution (workspace & package processing, config run, collecting configs, test
execution) using tracing harnesses. Performance report on eventual findings and measurements for future optimizations.
### Advanced Forking / Forking State Asserting
_Size: 5_
New test mechanism for detecting regressions in new contract versions (for upgrades on chain). Forking and asserting
state changes after executing a test scenario.
### Derive Macro for `Fuzzable` Trait
_Size: 2_
https://github.com/foundry-rs/starknet-foundry/issues/2968
Ability to automatically derive `Fuzzable` trait for structs if they contain only `Fuzzable` fields.
### Typesafe Contract "declare"
_Size: 4_
https://github.com/foundry-rs/starknet-foundry/issues/1531
Detect and fail on invalid contract names at compilation time.
### Research Variant and Differential Testing, Better Fuzzing Algorithms
_Size: 5_
https://github.com/foundry-rs/starknet-foundry/issues/2464
Inspired by features from Ethereum's Foundry, research the viability of adding variant and differential testing and
integrating better
fuzzing algorithms.
## Cast
### New Cast Scripts
_Size: 5_
https://github.com/foundry-rs/starknet-foundry/issues/3523
New Cast Scripts with focus on the ease of use, using Scarb plugins, integrated into snforge/scarb tests structure.
### Transaction Dry Run
_Size: 1_
https://github.com/foundry-rs/starknet-foundry/issues/2136
Running `sncast` transaction without executing them through the fee estimation endpoint.
### CLI Revamp and Configuration Refactor
_Size: 4_
Removing non-common arguments that are used as common (e.g. `-account`). Internal changes to how `sncast` loads and
combines configuration.
### Better Accounts Support
_Size: 4_
Support for Ledger wallet, keystore support with encryption, account storage rework.
### New Multicall Interface
_Size: 3_
https://github.com/foundry-rs/starknet-foundry/issues/3810
Native multicall support for invoking transactions in `sncast invoke` or a better dedicated command. Removal of
multicall files.
### Contract Aliases in `snfoundry.toml`
_Size: 1_
https://github.com/foundry-rs/starknet-foundry/issues/2240
Aliases for contracts in `snfoundry.toml` that can be used in commands instead of contract addresses.
================================================
FILE: _typos.toml
================================================
[default.extend-words]
ba = "ba"
[files]
extend-exclude = ["docs/theme/head.hbs"]
================================================
FILE: crates/cheatnet/Cargo.toml
================================================
[package]
name = "cheatnet"
version.workspace = true
edition.workspace = true
[features]
testing = []
cairo-native = ["dep:cairo-native", "blockifier/cairo_native"]
[dependencies]
anyhow.workspace = true
blockifier.workspace = true
bimap.workspace = true
camino.workspace = true
starknet_api.workspace = true
starknet-types-core.workspace = true
cairo-lang-casm.workspace = true
cairo-lang-utils.workspace = true
cairo-lang-starknet-classes.workspace = true
cairo-vm.workspace = true
cairo-annotations.workspace = true
regex.workspace = true
indoc.workspace = true
indexmap.workspace = true
starknet-rust.workspace = true
thiserror.workspace = true
serde_json.workspace = true
serde.workspace = true
flatten-serde-json.workspace = true
num-traits.workspace = true
url.workspace = true
rayon.workspace = true
tokio.workspace = true
num-bigint.workspace = true
conversions.workspace = true
fs2.workspace = true
flate2.workspace = true
data-transformer = { path = "../data-transformer" }
scarb-api = { path = "../scarb-api" }
runtime = { path = "../runtime" }
universal-sierra-compiler-api = { path = "../universal-sierra-compiler-api" }
k256.workspace = true
p256.workspace = true
shared.workspace = true
rand.workspace = true
foundry-ui = { path = "../foundry-ui" }
scarb-oracle-hint-service.workspace = true
cairo-native = { workspace = true, optional = true }
[dev-dependencies]
ctor.workspace = true
indoc.workspace = true
rayon.workspace = true
glob.workspace = true
test-case.workspace = true
tempfile.workspace = true
================================================
FILE: crates/cheatnet/src/constants.rs
================================================
use starknet_api::contract_class::{ContractClass, SierraVersion};
use std::collections::HashMap;
use std::sync::Arc;
use blockifier::execution::entry_point::{CallType, ExecutableCallEntryPoint};
use cairo_lang_starknet_classes::casm_contract_class::CasmContractClass;
use cairo_lang_starknet_classes::compiler_version::current_sierra_version_id;
use conversions::IntoConv;
use conversions::string::TryFromHexStr;
use indoc::indoc;
use runtime::starknet::constants::{
TEST_ADDRESS, TEST_CONTRACT_CLASS_HASH, TEST_ENTRY_POINT_SELECTOR,
};
use runtime::starknet::context::ERC20_CONTRACT_ADDRESS;
use runtime::starknet::state::DictStateReader;
use starknet_api::contract_class::EntryPointType;
use starknet_api::core::ClassHash;
use starknet_api::{core::ContractAddress, transaction::fields::Calldata};
use starknet_rust::core::utils::get_selector_from_name;
// Mocked class hashes, those are not checked anywhere
pub const TEST_ERC20_CONTRACT_CLASS_HASH: &str = "0x1010";
fn contract_class_no_entrypoints() -> ContractClass {
let raw_contract_class = indoc!(
r#"{
"prime": "0x800000000000011000000000000000000000000000000000000000000000001",
"compiler_version": "2.4.0",
"bytecode": [],
"hints": [],
"entry_points_by_type": {
"EXTERNAL": [],
"L1_HANDLER": [],
"CONSTRUCTOR": []
}
}"#,
);
let casm_contract_class: CasmContractClass = serde_json::from_str(raw_contract_class)
.expect("`raw_contract_class` should be valid casm contract class");
ContractClass::V1((casm_contract_class, SierraVersion::default()))
}
#[must_use]
pub fn contract_class(raw_casm: &str, sierra_version: SierraVersion) -> ContractClass {
let casm_contract_class: CasmContractClass =
serde_json::from_str(raw_casm).expect("`raw_casm` should be valid casm contract class");
ContractClass::V1((casm_contract_class, sierra_version))
}
// Creates a state with predeployed account and erc20 used to send transactions during tests.
// Deployed contracts are cairo 0 contracts
// Account does not include validations
#[must_use]
pub fn build_testing_state() -> DictStateReader {
let test_erc20_class_hash =
TryFromHexStr::try_from_hex_str(TEST_ERC20_CONTRACT_CLASS_HASH).unwrap();
let test_contract_class_hash =
TryFromHexStr::try_from_hex_str(TEST_CONTRACT_CLASS_HASH).unwrap();
let class_hash_to_class = HashMap::from([
// This is dummy put here only to satisfy blockifier
// this class is not used and the test contract cannot be called
(test_contract_class_hash, contract_class_no_entrypoints()),
]);
let test_erc20_address = TryFromHexStr::try_from_hex_str(ERC20_CONTRACT_ADDRESS).unwrap();
let test_address = TryFromHexStr::try_from_hex_str(TEST_ADDRESS).unwrap();
let address_to_class_hash = HashMap::from([
(test_erc20_address, test_erc20_class_hash),
(test_address, test_contract_class_hash),
]);
DictStateReader {
address_to_class_hash,
class_hash_to_class,
..Default::default()
}
}
#[must_use]
pub fn build_test_entry_point() -> ExecutableCallEntryPoint {
let test_selector = get_selector_from_name(TEST_ENTRY_POINT_SELECTOR).unwrap();
let entry_point_selector = test_selector.into_();
ExecutableCallEntryPoint {
class_hash: ClassHash(TryFromHexStr::try_from_hex_str(TEST_CONTRACT_CLASS_HASH).unwrap()),
code_address: Some(TryFromHexStr::try_from_hex_str(TEST_ADDRESS).unwrap()),
entry_point_type: EntryPointType::External,
entry_point_selector,
calldata: Calldata(Arc::new(vec![])),
storage_address: TryFromHexStr::try_from_hex_str(TEST_ADDRESS).unwrap(),
caller_address: ContractAddress::default(),
call_type: CallType::Call,
initial_gas: i64::MAX as u64,
}
}
#[must_use]
pub fn get_current_sierra_version() -> SierraVersion {
let version_id = current_sierra_version_id();
SierraVersion::new(
version_id.major as u64,
version_id.minor as u64,
version_id.patch as u64,
)
}
================================================
FILE: crates/cheatnet/src/data/eth_erc20_casm.json
================================================
{"bytecode":["0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x136","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0x5e6","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480280007ffc8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x106","0x48127ffb7fff8000","0xa0680017fff8004","0xe","0x4824800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480080007ff37ffc","0x480080017ff27ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400080027ff17ffd","0x10780017fff7fff","0xf1","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffc","0x480080007ff47ffd","0x480080017ff37ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400080027ff27ffe","0x482480017ff28000","0x3","0x48127ff97fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff28000","0x1","0x48127ff27fff8000","0x480680017fff8000","0x0","0x48127fef7fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff27fff8000","0x48127ff27fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0xbd","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0xa1","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff58000","0x1","0x48127ff57fff8000","0x480680017fff8000","0x0","0x48127ff27fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x7f","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0x63","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0x12","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffa7fff8000","0x482480017ffa8000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4d55","0x482480017fff8000","0x4d54","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x2","0x482480017fff8000","0x2503a","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff27fff","0x10780017fff7fff","0x25","0x48307ffe80007ffa","0x400080007ff37fff","0x482480017ff38000","0x1","0x48127ffe7fff8000","0x480a7ff87fff8000","0x480a7ffb7fff8000","0x48127fd27fff8000","0x48127fe07fff8000","0x48127fea7fff8000","0x1104800180018000","0x23fb","0x20680017fff7ffd","0xd","0x40780017fff7fff","0x1","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff77fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ff87fff8000","0x482480017ff88000","0x64","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482480017fef8000","0x1","0x48127ff47fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff08000","0x3","0x482480017ff88000","0x1ae","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x7f8","0x10780017fff7fff","0xb","0x482480017ff08000","0x3","0x482480017ff88000","0x834","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0xe7e","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff18000","0x3","0x482480017ff88000","0x119e","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x16bc","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482680017ff98000","0x1","0x482680017ffa8000","0x2152","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x136","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0x5e6","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480280007ffc8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x106","0x48127ffb7fff8000","0xa0680017fff8004","0xe","0x4824800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480080007ff37ffc","0x480080017ff27ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400080027ff17ffd","0x10780017fff7fff","0xf1","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffc","0x480080007ff47ffd","0x480080017ff37ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400080027ff27ffe","0x482480017ff28000","0x3","0x48127ff97fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff28000","0x1","0x48127ff27fff8000","0x480680017fff8000","0x0","0x48127fef7fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff27fff8000","0x48127ff27fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0xbd","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0xa1","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff58000","0x1","0x48127ff57fff8000","0x480680017fff8000","0x0","0x48127ff27fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x7f","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0x63","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0x12","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffa7fff8000","0x482480017ffa8000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4c09","0x482480017fff8000","0x4c08","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x2","0x482480017fff8000","0x2503a","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff27fff","0x10780017fff7fff","0x25","0x48307ffe80007ffa","0x400080007ff37fff","0x482480017ff38000","0x1","0x48127ffe7fff8000","0x480a7ff87fff8000","0x480a7ffb7fff8000","0x48127fd27fff8000","0x48127fe07fff8000","0x48127fea7fff8000","0x1104800180018000","0x2356","0x20680017fff7ffd","0xd","0x40780017fff7fff","0x1","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff77fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ff87fff8000","0x482480017ff88000","0x64","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482480017fef8000","0x1","0x48127ff47fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff08000","0x3","0x482480017ff88000","0x1ae","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x7f8","0x10780017fff7fff","0xb","0x482480017ff08000","0x3","0x482480017ff88000","0x834","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0xe7e","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff18000","0x3","0x482480017ff88000","0x119e","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x16bc","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482680017ff98000","0x1","0x482680017ffa8000","0x2152","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x136","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0x5e6","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480280007ffc8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x106","0x48127ffb7fff8000","0xa0680017fff8004","0xe","0x4824800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480080007ff37ffc","0x480080017ff27ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400080027ff17ffd","0x10780017fff7fff","0xf1","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffc","0x480080007ff47ffd","0x480080017ff37ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400080027ff27ffe","0x482480017ff28000","0x3","0x48127ff97fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff28000","0x1","0x48127ff27fff8000","0x480680017fff8000","0x0","0x48127fef7fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff27fff8000","0x48127ff27fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0xbd","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0xa1","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff58000","0x1","0x48127ff57fff8000","0x480680017fff8000","0x0","0x48127ff27fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x7f","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0x63","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0x12","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffa7fff8000","0x482480017ffa8000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4abd","0x482480017fff8000","0x4abc","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x2","0x482480017fff8000","0x2503a","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff27fff","0x10780017fff7fff","0x25","0x48307ffe80007ffa","0x400080007ff37fff","0x482480017ff38000","0x1","0x48127ffe7fff8000","0x480a7ff87fff8000","0x480a7ffb7fff8000","0x48127fd27fff8000","0x48127fe07fff8000","0x48127fea7fff8000","0x1104800180018000","0x2163","0x20680017fff7ffd","0xd","0x40780017fff7fff","0x1","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff77fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ff87fff8000","0x482480017ff88000","0x64","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482480017fef8000","0x1","0x48127ff47fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff08000","0x3","0x482480017ff88000","0x1ae","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x7f8","0x10780017fff7fff","0xb","0x482480017ff08000","0x3","0x482480017ff88000","0x834","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0xe7e","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff18000","0x3","0x482480017ff88000","0x119e","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x16bc","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482680017ff98000","0x1","0x482680017ffa8000","0x2152","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x136","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0x5e6","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x480680017fff8000","0x0","0x480280007ffc8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x106","0x48127ffb7fff8000","0xa0680017fff8004","0xe","0x4824800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480080007ff37ffc","0x480080017ff27ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400080027ff17ffd","0x10780017fff7fff","0xf1","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffc","0x480080007ff47ffd","0x480080017ff37ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400080027ff27ffe","0x482480017ff28000","0x3","0x48127ff97fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff28000","0x1","0x48127ff27fff8000","0x480680017fff8000","0x0","0x48127fef7fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff27fff8000","0x48127ff27fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0xbd","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0xa1","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffe7fff8000","0x482480017ff58000","0x1","0x48127ff57fff8000","0x480680017fff8000","0x0","0x48127ff27fff8000","0x10780017fff7fff","0x9","0x48127ffe7fff8000","0x48127ff57fff8000","0x48127ff57fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0x7f","0x480080007fff8000","0x48127ffa7fff8000","0xa0680017fff8000","0x16","0x480080007ff58003","0x480080017ff48003","0x4844800180017ffe","0x100000000000000000000000000000000","0x483080017ffd7ffa","0x482480017fff7ffd","0x800000000000010fffffffffffffffff7ffffffffffffef0000000000000001","0x20680017fff7ffc","0x6","0x402480017fff7ffd","0xffffffffffffffffffffffffffffffff","0x10780017fff7fff","0x4","0x402480017ffe7ffd","0xf7ffffffffffffef0000000000000000","0x400080027ff07ffd","0x20680017fff7ffe","0x63","0x402780017fff7fff","0x1","0x400080007ff57ffd","0x482480017ff58000","0x1","0x48127ffd7fff8000","0x48307ff780007ff8","0x20680017fff7fff","0x4","0x10780017fff7fff","0x12","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffa7fff8000","0x482480017ffa8000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4971","0x482480017fff8000","0x4970","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x2","0x482480017fff8000","0x2503a","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff27fff","0x10780017fff7fff","0x25","0x48307ffe80007ffa","0x400080007ff37fff","0x482480017ff38000","0x1","0x48127ffe7fff8000","0x480a7ff87fff8000","0x480a7ffb7fff8000","0x48127fd27fff8000","0x48127fe07fff8000","0x48127fea7fff8000","0x1104800180018000","0x20be","0x20680017fff7ffd","0xd","0x40780017fff7fff","0x1","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff77fff8000","0x48127ff87fff8000","0x480680017fff8000","0x0","0x48127ffa7fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x48127ffb7fff8000","0x48127ff87fff8000","0x482480017ff88000","0x64","0x48127ff97fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x48127ff97fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482480017fef8000","0x1","0x48127ff47fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff08000","0x3","0x482480017ff88000","0x1ae","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x7f8","0x10780017fff7fff","0xb","0x482480017ff08000","0x3","0x482480017ff88000","0x834","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0xe7e","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202332","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x482480017ff18000","0x3","0x482480017ff88000","0x119e","0x10780017fff7fff","0x5","0x48127ff87fff8000","0x482480017ffa8000","0x16bc","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff87fff8000","0x482680017ff98000","0x1","0x482680017ffa8000","0x2152","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x95","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0x1bf8","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0x11","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x48127ffb7fff8000","0x482480017ffb8000","0x492","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x48bd","0x482480017fff8000","0x48bc","0x48127ffb7fff8000","0x480080007ffe8000","0xa0680017fff8000","0x9","0x4824800180007ffd","0x3336","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007ff57fff","0x10780017fff7fff","0x5c","0x4824800180007ffd","0x3336","0x400080007ff67fff","0x48127fff7fff8000","0x480680017fff8000","0x0","0x480680017fff8000","0x3fc801c47df4de8d5835f8bfd4d0b8823ba63e5a3f278086901402d680abfc","0x482480017ff38000","0x1","0x480680017fff8000","0x53746f7261676552656164","0x400280007ffb7fff","0x400280017ffb7ffb","0x400280027ffb7ffc","0x400280037ffb7ffd","0x480280057ffb8000","0x20680017fff7fff","0x39","0x480280047ffb8000","0x480280067ffb8000","0x482680017ffb8000","0x7","0x48127ffd7fff8000","0xa0680017fff8000","0x12","0x4824800180007ffc","0x10000000000000000","0x4844800180008002","0x8000000000000110000000000000000","0x4830800080017ffe","0x480080007ff57fff","0x482480017ffe8000","0xefffffffffffffdeffffffffffffffff","0x480080017ff37fff","0x400080027ff27ffb","0x402480017fff7ffb","0xffffffffffffffffffffffffffffffff","0x20680017fff7fff","0x16","0x402780017fff7fff","0x1","0x400080007ff87ffc","0x482480017ffc8000","0xffffffffffffffff0000000000000000","0x400080017ff77fff","0x40780017fff7fff","0x1","0x400080007fff7ffa","0x482480017ff68000","0x2","0x482480017ffb8000","0x55a","0x48127ff97fff8000","0x480680017fff8000","0x0","0x48127ffb7fff8000","0x482480017ffa8000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x53746f7265553634202d206e6f6e20753634","0x400080007ffe7fff","0x482480017ff08000","0x3","0x48127ff57fff8000","0x48127ff37fff8000","0x48127ffb7fff8000","0x482480017ffa8000","0x1","0x10780017fff7fff","0xa","0x480280047ffb8000","0x48127ffc7fff8000","0x482480017ffe8000","0x776","0x482680017ffb8000","0x8","0x480280067ffb8000","0x480280077ffb8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x48127ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x48127ffa7fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482480017ff38000","0x1","0x48127ff87fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x482680017ff98000","0x1","0x482680017ffa8000","0x21b6","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ffa7fff8000","0x482480017ff98000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffdc06","0x400280007ff87fff","0x10780017fff7fff","0x91","0x4825800180007ffa","0x23fa","0x400280007ff87fff","0x482680017ff88000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x2038","0x48127f8e7fff8000","0x20680017fff7ff5","0x7a","0x48127fff7fff8000","0x20680017fff7ff7","0x66","0x48127fff7fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0x13","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127fee7fff8000","0x480a7ff97fff8000","0x482480017ff98000","0x55a","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4808","0x482480017fff8000","0x4807","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x482480017fff8000","0x6630","0xa0680017fff8000","0x8","0x48307ffe80007ffb","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007fe77fff","0x10780017fff7fff","0x2d","0x48307ffe80007ffb","0x400080007fe87fff","0x482480017fe88000","0x1","0x48127ffe7fff8000","0x480a7ff77fff8000","0x480a7ff97fff8000","0x480a7ffb7fff8000","0x48127fe87fff8000","0x48127fe87fff8000","0x48127fe87fff8000","0x48127fe87fff8000","0x48127fe87fff8000","0x48127fe87fff8000","0x1104800180018000","0x20bb","0x20680017fff7ffd","0x10","0x40780017fff7fff","0x1","0x400080007fff7ffe","0x48127ff97fff8000","0x48127ff67fff8000","0x48127ff87fff8000","0x48127ff57fff8000","0x48127ff77fff8000","0x480680017fff8000","0x0","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff97fff8000","0x482480017ff68000","0xc8","0x48127ff87fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482480017fe48000","0x1","0x480a7ff97fff8000","0x48127ff47fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127ff07fff8000","0x480a7ff97fff8000","0x482480017ffa8000","0x686","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x480a7ff77fff8000","0x48127ff37fff8000","0x480a7ff97fff8000","0x482480017ffc8000","0x87a","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff77fff8000","0x48127ff77fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482680017ff88000","0x1","0x480a7ff97fff8000","0x482680017ffa8000","0x20ee","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffdba2","0x400280007ff87fff","0x10780017fff7fff","0x91","0x4825800180007ffa","0x245e","0x400280007ff87fff","0x482680017ff88000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x1f90","0x48127f8e7fff8000","0x20680017fff7ff5","0x7a","0x48127fff7fff8000","0x20680017fff7ff7","0x66","0x48127fff7fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0x13","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127fee7fff8000","0x480a7ff97fff8000","0x482480017ff98000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4760","0x482480017fff8000","0x475f","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x4","0x482480017fff8000","0x1e1a4","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007fe67fff","0x10780017fff7fff","0x2b","0x48307ffe80007ffa","0x400080007fe77fff","0x482480017fe78000","0x1","0x48127ffe7fff8000","0x480a7ff77fff8000","0x480a7ff97fff8000","0x480a7ffb7fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x1104800180018000","0x20d3","0x20680017fff7ffd","0xe","0x40780017fff7fff","0x1","0x48127ff97fff8000","0x48127ff67fff8000","0x48127ff87fff8000","0x48127ff57fff8000","0x48127ff77fff8000","0x480680017fff8000","0x0","0x48127ff97fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff97fff8000","0x482480017ff68000","0x64","0x48127ff87fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482480017fe38000","0x1","0x480a7ff97fff8000","0x48127ff37fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127ff07fff8000","0x480a7ff97fff8000","0x482480017ffa8000","0x6ea","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x480a7ff77fff8000","0x48127ff37fff8000","0x480a7ff97fff8000","0x482480017ffc8000","0x8de","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff77fff8000","0x48127ff77fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482680017ff88000","0x1","0x480a7ff97fff8000","0x482680017ffa8000","0x20ee","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffdba2","0x400280007ff87fff","0x10780017fff7fff","0x91","0x4825800180007ffa","0x245e","0x400280007ff87fff","0x482680017ff88000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x1ee8","0x48127f8e7fff8000","0x20680017fff7ff5","0x7a","0x48127fff7fff8000","0x20680017fff7ff7","0x66","0x48127fff7fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0x13","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127fee7fff8000","0x480a7ff97fff8000","0x482480017ff98000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x46b8","0x482480017fff8000","0x46b7","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x5","0x482480017fff8000","0x1ea28","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007fe67fff","0x10780017fff7fff","0x2b","0x48307ffe80007ffa","0x400080007fe77fff","0x482480017fe78000","0x1","0x48127ffe7fff8000","0x480a7ff77fff8000","0x480a7ff97fff8000","0x480a7ffb7fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x1104800180018000","0x21a6","0x20680017fff7ffd","0xe","0x40780017fff7fff","0x1","0x48127ff97fff8000","0x48127ff67fff8000","0x48127ff87fff8000","0x48127ff57fff8000","0x48127ff77fff8000","0x480680017fff8000","0x0","0x48127ff97fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff97fff8000","0x482480017ff68000","0x64","0x48127ff87fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482480017fe38000","0x1","0x480a7ff97fff8000","0x48127ff37fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127ff07fff8000","0x480a7ff97fff8000","0x482480017ffa8000","0x6ea","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x480a7ff77fff8000","0x48127ff37fff8000","0x480a7ff97fff8000","0x482480017ffc8000","0x8de","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff77fff8000","0x48127ff77fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482680017ff88000","0x1","0x480a7ff97fff8000","0x482680017ffa8000","0x20ee","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0xffffffffffffffffffffffffffffdba2","0x400280007ff87fff","0x10780017fff7fff","0x91","0x4825800180007ffa","0x245e","0x400280007ff87fff","0x482680017ff88000","0x1","0x480a7ffc7fff8000","0x480a7ffd7fff8000","0x1104800180018000","0x1e40","0x48127f8e7fff8000","0x20680017fff7ff5","0x7a","0x48127fff7fff8000","0x20680017fff7ff7","0x66","0x48127fff7fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0x13","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127fee7fff8000","0x480a7ff97fff8000","0x482480017ff98000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4610","0x482480017fff8000","0x460f","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x6","0x482480017fff8000","0x391e8","0xa0680017fff8000","0x8","0x48307ffe80007ffa","0x482480017fff8000","0x100000000000000000000000000000000","0x400080007fe67fff","0x10780017fff7fff","0x2b","0x48307ffe80007ffa","0x400080007fe77fff","0x482480017fe78000","0x1","0x48127ffe7fff8000","0x480a7ff77fff8000","0x480a7ff97fff8000","0x480a7ffb7fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x48127fe77fff8000","0x1104800180018000","0x21e1","0x20680017fff7ffd","0xe","0x40780017fff7fff","0x1","0x48127ff97fff8000","0x48127ff67fff8000","0x48127ff87fff8000","0x48127ff57fff8000","0x48127ff77fff8000","0x480680017fff8000","0x0","0x48127ff97fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x48127ffa7fff8000","0x48127ff77fff8000","0x48127ff97fff8000","0x482480017ff68000","0x64","0x48127ff87fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x48127ff87fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482480017fe38000","0x1","0x480a7ff97fff8000","0x48127ff37fff8000","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4661696c656420746f20646573657269616c697a6520706172616d202331","0x400080007ffe7fff","0x480a7ff77fff8000","0x48127ff07fff8000","0x480a7ff97fff8000","0x482480017ffa8000","0x6ea","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0x480a7ff77fff8000","0x48127ff37fff8000","0x480a7ff97fff8000","0x482480017ffc8000","0x8de","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff77fff8000","0x48127ff77fff8000","0x208b7fff7fff7ffe","0x40780017fff7fff","0x1","0x480680017fff8000","0x4f7574206f6620676173","0x400080007ffe7fff","0x480a7ff77fff8000","0x482680017ff88000","0x1","0x480a7ff97fff8000","0x482680017ffa8000","0x20ee","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff87fff8000","0x482480017ff78000","0x1","0x208b7fff7fff7ffe","0xa0680017fff8000","0x7","0x482680017ffa8000","0x100000000000000000000000000000000","0x400280007ff97fff","0x10780017fff7fff","0x112","0x4825800180007ffa","0x0","0x400280007ff97fff","0x482680017ff98000","0x1","0x482480017ffe8000","0xfd2","0x48297ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xf6","0x482680017ffc8000","0x1","0x480a7ffd7fff8000","0x48127ffc7fff8000","0x480280007ffc8000","0x48307ffc80007ffd","0x20680017fff7fff","0x4","0x10780017fff7fff","0xb","0x48127ffd7fff8000","0x482480017ffa8000","0x1","0x48127ffa7fff8000","0x480680017fff8000","0x0","0x480080007ff78000","0x10780017fff7fff","0x9","0x48127ffd7fff8000","0x48127ffa7fff8000","0x48127ffa7fff8000","0x480680017fff8000","0x1","0x480680017fff8000","0x0","0x20680017fff7ffe","0xc8","0x48127ffb7fff8000","0xa0680017fff8004","0xe","0x4824800180047ffd","0x800000000000000000000000000000000000000000000000000000000000000","0x484480017ffe8000","0x110000000000000000","0x48307ffe7fff8002","0x480080007fee7ffc","0x480080017fed7ffc","0x402480017ffb7ffd","0xffffffffffffffeeffffffffffffffff","0x400080027fec7ffd","0x10780017fff7fff","0xb3","0x484480017fff8001","0x8000000000000000000000000000000","0x48307fff80007ffc","0x480080007fef7ffd","0x480080017fee7ffd","0x402480017ffc7ffe","0xf8000000000000000000000000000000","0x400080027fed7ffe","0x482480017fed8000","0x3","0x48127ff97fff8000","0x48307ff480007ff5","0x20680017fff7fff","0x4","0x10780017fff7fff","0x12","0x40780017fff7fff","0x1","0x480680017fff8000","0x496e70757420746f6f206c6f6e6720666f7220617267756d656e7473","0x400080007ffe7fff","0x480a7ff87fff8000","0x48127ffa7fff8000","0x482480017ffa8000","0x5be","0x480a7ffb7fff8000","0x480680017fff8000","0x1","0x48127ff97fff8000","0x482480017ff88000","0x1","0x208b7fff7fff7ffe","0x1104800180018000","0x4537","0x482480017fff8000","0x4536","0x48127ffb7fff8000","0x480080007ffe8000","0x480080007fff8000","0x484480017fff8000","0x2","0x482480017fff
gitextract_dvj2_r5r/
├── .cargo/
│ └── config.toml
├── .gitattributes
├── .github/
│ ├── CODEOWNERS
│ ├── ISSUE_TEMPLATE/
│ │ ├── 1-bug_report.yml
│ │ ├── 2-feature_request.yml
│ │ ├── 3-work_item.yml
│ │ ├── 4-child_work_item.yml
│ │ └── config.yml
│ ├── actions/
│ │ └── setup-tools/
│ │ └── action.yml
│ ├── dependabot.yml
│ ├── pull_request_template.md
│ └── workflows/
│ ├── _build-binaries-native.yml
│ ├── _build-binaries.yml
│ ├── _build-plugin-binaries.yml
│ ├── _publish-plugin.yml
│ ├── _test-binaries.yml
│ ├── automate-stale.yml
│ ├── ci.yml
│ ├── docs.yml
│ ├── nightly.yml
│ ├── publish-plugin.yml
│ ├── publish-std.yml
│ ├── release.yml
│ └── scheduled.yml
├── .gitignore
├── .tool-versions
├── CAIRO_NATIVE.md
├── CHANGELOG.md
├── CONTRIBUTING.md
├── Cargo.toml
├── Cross.toml
├── LICENSE
├── README.md
├── RELEASING.md
├── ROADMAP.md
├── _typos.toml
├── crates/
│ ├── cheatnet/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── constants.rs
│ │ │ ├── data/
│ │ │ │ ├── eth_erc20_casm.json
│ │ │ │ └── strk_erc20_casm.json
│ │ │ ├── forking/
│ │ │ │ ├── cache.rs
│ │ │ │ ├── data.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── state.rs
│ │ │ ├── lib.rs
│ │ │ ├── predeployment/
│ │ │ │ ├── erc20/
│ │ │ │ │ ├── constructor_data.rs
│ │ │ │ │ ├── eth.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── predeployed_contract.rs
│ │ │ │ │ └── strk.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── predeployed_contract.rs
│ │ │ ├── runtime_extensions/
│ │ │ │ ├── call_to_blockifier_runtime_extension/
│ │ │ │ │ ├── execution/
│ │ │ │ │ │ ├── cairo1_execution.rs
│ │ │ │ │ │ ├── calls.rs
│ │ │ │ │ │ ├── cheated_syscalls.rs
│ │ │ │ │ │ ├── deprecated/
│ │ │ │ │ │ │ ├── cairo0_execution.rs
│ │ │ │ │ │ │ └── mod.rs
│ │ │ │ │ │ ├── entry_point.rs
│ │ │ │ │ │ ├── execution_info.rs
│ │ │ │ │ │ ├── execution_utils.rs
│ │ │ │ │ │ ├── mod.rs
│ │ │ │ │ │ └── syscall_hooks.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── panic_parser.rs
│ │ │ │ │ └── rpc.rs
│ │ │ │ ├── cheatable_starknet_runtime_extension.rs
│ │ │ │ ├── common.rs
│ │ │ │ ├── deprecated_cheatable_starknet_extension/
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── runtime.rs
│ │ │ │ ├── forge_config_extension/
│ │ │ │ │ └── config.rs
│ │ │ │ ├── forge_config_extension.rs
│ │ │ │ ├── forge_runtime_extension/
│ │ │ │ │ ├── cheatcodes/
│ │ │ │ │ │ ├── cheat_account_contract_address.rs
│ │ │ │ │ │ ├── cheat_block_hash.rs
│ │ │ │ │ │ ├── cheat_block_number.rs
│ │ │ │ │ │ ├── cheat_block_timestamp.rs
│ │ │ │ │ │ ├── cheat_caller_address.rs
│ │ │ │ │ │ ├── cheat_execution_info.rs
│ │ │ │ │ │ ├── cheat_sequencer_address.rs
│ │ │ │ │ │ ├── declare.rs
│ │ │ │ │ │ ├── generate_random_felt.rs
│ │ │ │ │ │ ├── get_class_hash.rs
│ │ │ │ │ │ ├── l1_handler_execute.rs
│ │ │ │ │ │ ├── mock_call.rs
│ │ │ │ │ │ ├── mod.rs
│ │ │ │ │ │ ├── precalculate_address.rs
│ │ │ │ │ │ ├── replace_bytecode.rs
│ │ │ │ │ │ ├── spy_events.rs
│ │ │ │ │ │ ├── spy_messages_to_l1.rs
│ │ │ │ │ │ └── storage.rs
│ │ │ │ │ ├── contracts_data.rs
│ │ │ │ │ ├── file_operations.rs
│ │ │ │ │ ├── fuzzer.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── native/
│ │ │ │ ├── call.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── execution.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── native_syscall_handler.rs
│ │ │ ├── state.rs
│ │ │ ├── sync_client.rs
│ │ │ └── trace_data.rs
│ │ └── tests/
│ │ ├── builtins/
│ │ │ ├── mod.rs
│ │ │ ├── panic_call.rs
│ │ │ └── segment_arena.rs
│ │ ├── cheatcodes/
│ │ │ ├── cheat_account_contract_address.rs
│ │ │ ├── cheat_block_hash.rs
│ │ │ ├── cheat_block_number.rs
│ │ │ ├── cheat_block_timestamp.rs
│ │ │ ├── cheat_caller_address.rs
│ │ │ ├── cheat_execution_info.rs
│ │ │ ├── cheat_sequencer_address.rs
│ │ │ ├── declare.rs
│ │ │ ├── generate_random_felt.rs
│ │ │ ├── get_class_hash.rs
│ │ │ ├── library_call.rs
│ │ │ ├── load.rs
│ │ │ ├── meta_tx_v0.rs
│ │ │ ├── mock_call.rs
│ │ │ ├── mod.rs
│ │ │ ├── multiple_writes_same_storage.rs
│ │ │ ├── precalculate_address.rs
│ │ │ ├── replace_bytecode.rs
│ │ │ ├── spy_events.rs
│ │ │ ├── store.rs
│ │ │ └── test_environment.rs
│ │ ├── common/
│ │ │ ├── assertions.rs
│ │ │ ├── cache.rs
│ │ │ ├── mod.rs
│ │ │ └── state.rs
│ │ ├── contracts/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── bytearray_string_panic_call.cairo
│ │ │ ├── cheat_block_hash/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_hash.cairo
│ │ │ ├── cheat_block_number/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_number.cairo
│ │ │ ├── cheat_block_timestamp/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_block_timestamp.cairo
│ │ │ ├── cheat_caller_address/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_cairo0.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_caller_address.cairo
│ │ │ ├── cheat_sequencer_address/
│ │ │ │ ├── checker.cairo
│ │ │ │ ├── checker_library_call.cairo
│ │ │ │ ├── checker_meta_tx_v0.cairo
│ │ │ │ ├── checker_proxy.cairo
│ │ │ │ └── constructor_checker.cairo
│ │ │ ├── cheat_sequencer_address.cairo
│ │ │ ├── cheat_tx_info/
│ │ │ │ ├── constructor_tx_hash_checker.cairo
│ │ │ │ ├── tx_hash_checker_proxy.cairo
│ │ │ │ ├── tx_info_checker.cairo
│ │ │ │ ├── tx_info_checker_library_call.cairo
│ │ │ │ └── tx_info_checker_meta_tx_v0.cairo
│ │ │ ├── cheat_tx_info.cairo
│ │ │ ├── common/
│ │ │ │ ├── constructor_simple.cairo
│ │ │ │ ├── constructor_simple2.cairo
│ │ │ │ └── hello_starknet.cairo
│ │ │ ├── common.cairo
│ │ │ ├── events/
│ │ │ │ ├── constructor_spy_events_checker.cairo
│ │ │ │ ├── spy_events_cairo0.cairo
│ │ │ │ ├── spy_events_checker.cairo
│ │ │ │ ├── spy_events_checker_proxy.cairo
│ │ │ │ ├── spy_events_lib_call.cairo
│ │ │ │ └── spy_events_order_checker.cairo
│ │ │ ├── events.cairo
│ │ │ ├── get_class_hash/
│ │ │ │ └── get_class_hash_checker.cairo
│ │ │ ├── get_class_hash.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── library_calls.cairo
│ │ │ ├── meta_tx_v0/
│ │ │ │ └── checker.cairo
│ │ │ ├── meta_tx_v0.cairo
│ │ │ ├── mock/
│ │ │ │ ├── constructor_mock_checker.cairo
│ │ │ │ ├── mock_checker.cairo
│ │ │ │ ├── mock_checker_library_call.cairo
│ │ │ │ └── mock_checker_proxy.cairo
│ │ │ ├── mock.cairo
│ │ │ ├── panic_call.cairo
│ │ │ ├── replace_bytecode/
│ │ │ │ ├── replace_bytecode_a.cairo
│ │ │ │ ├── replace_bytecode_b.cairo
│ │ │ │ └── replace_fork.cairo
│ │ │ ├── replace_bytecode.cairo
│ │ │ ├── revert.cairo
│ │ │ ├── segment_arena_user.cairo
│ │ │ ├── starknet/
│ │ │ │ ├── block_info_checker_library_call.cairo
│ │ │ │ ├── block_info_checker_proxy.cairo
│ │ │ │ ├── blocker.cairo
│ │ │ │ ├── forking_checker.cairo
│ │ │ │ ├── noncer.cairo
│ │ │ │ └── timestamper.cairo
│ │ │ ├── starknet.cairo
│ │ │ ├── store_load/
│ │ │ │ └── map_simple_value_simple_key.cairo
│ │ │ ├── store_load.cairo
│ │ │ └── tracked_resources.cairo
│ │ ├── main.rs
│ │ └── starknet/
│ │ ├── block.rs
│ │ ├── cheat_fork.rs
│ │ ├── execution.rs
│ │ ├── forking.rs
│ │ ├── mod.rs
│ │ ├── nonce.rs
│ │ └── timestamp.rs
│ ├── configuration/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── core.rs
│ │ │ ├── lib.rs
│ │ │ └── test_utils.rs
│ │ └── tests/
│ │ └── data/
│ │ └── stubtool_snfoundry.toml
│ ├── conversions/
│ │ ├── Cargo.toml
│ │ ├── cairo-serde-macros/
│ │ │ ├── Cargo.toml
│ │ │ └── src/
│ │ │ ├── cairo_deserialize.rs
│ │ │ ├── cairo_serialize.rs
│ │ │ └── lib.rs
│ │ ├── src/
│ │ │ ├── byte_array.rs
│ │ │ ├── class_hash.rs
│ │ │ ├── contract_address.rs
│ │ │ ├── entrypoint_selector.rs
│ │ │ ├── eth_address.rs
│ │ │ ├── felt.rs
│ │ │ ├── lib.rs
│ │ │ ├── non_zero_felt.rs
│ │ │ ├── non_zero_u128.rs
│ │ │ ├── non_zero_u64.rs
│ │ │ ├── nonce.rs
│ │ │ ├── padded_felt.rs
│ │ │ ├── primitive.rs
│ │ │ ├── serde/
│ │ │ │ ├── deserialize/
│ │ │ │ │ └── deserialize_impl.rs
│ │ │ │ ├── deserialize.rs
│ │ │ │ ├── serialize/
│ │ │ │ │ └── serialize_impl.rs
│ │ │ │ ├── serialize.rs
│ │ │ │ └── serialized_value.rs
│ │ │ ├── serde.rs
│ │ │ └── string.rs
│ │ └── tests/
│ │ ├── derive_cairo_deserialize.rs
│ │ ├── derive_cairo_serialize.rs
│ │ ├── e2e/
│ │ │ ├── class_hash.rs
│ │ │ ├── contract_address.rs
│ │ │ ├── entrypoint_selector.rs
│ │ │ ├── felt.rs
│ │ │ ├── field_elements.rs
│ │ │ ├── mod.rs
│ │ │ ├── non_zero_felt.rs
│ │ │ ├── non_zero_u128.rs
│ │ │ ├── non_zero_u64.rs
│ │ │ ├── nonce.rs
│ │ │ ├── padded_felt.rs
│ │ │ └── string.rs
│ │ └── main.rs
│ ├── data-transformer/
│ │ ├── ARCHITECTURE.md
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── cairo_types/
│ │ │ │ ├── bytes31.rs
│ │ │ │ ├── helpers.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── u256.rs
│ │ │ │ ├── u384.rs
│ │ │ │ ├── u512.rs
│ │ │ │ └── u96.rs
│ │ │ ├── lib.rs
│ │ │ ├── reverse_transformer/
│ │ │ │ ├── mod.rs
│ │ │ │ ├── transform.rs
│ │ │ │ └── types.rs
│ │ │ ├── shared/
│ │ │ │ ├── extraction.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── parsing.rs
│ │ │ │ └── path.rs
│ │ │ └── transformer/
│ │ │ ├── mod.rs
│ │ │ └── sierra_abi/
│ │ │ ├── binary.rs
│ │ │ ├── complex_types.rs
│ │ │ ├── data_representation.rs
│ │ │ ├── literals.rs
│ │ │ ├── macros.rs
│ │ │ ├── mod.rs
│ │ │ └── parsing.rs
│ │ └── tests/
│ │ ├── data/
│ │ │ └── data_transformer/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── integration/
│ │ │ ├── identity.rs
│ │ │ ├── mod.rs
│ │ │ ├── reverse_transformer.rs
│ │ │ └── transformer.rs
│ │ ├── lib.rs
│ │ └── unit/
│ │ ├── bytes31.rs
│ │ ├── mod.rs
│ │ ├── u384.rs
│ │ └── u96.rs
│ ├── debugging/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── contracts_data_store.rs
│ │ ├── lib.rs
│ │ ├── trace/
│ │ │ ├── collect.rs
│ │ │ ├── components.rs
│ │ │ ├── context.rs
│ │ │ ├── mod.rs
│ │ │ └── types.rs
│ │ └── tree/
│ │ ├── building/
│ │ │ ├── builder.rs
│ │ │ ├── mod.rs
│ │ │ └── node.rs
│ │ ├── mod.rs
│ │ └── ui/
│ │ ├── as_tree_node.rs
│ │ ├── display.rs
│ │ └── mod.rs
│ ├── docs/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── snippet.rs
│ │ ├── utils.rs
│ │ └── validation.rs
│ ├── forge/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── block_number_map.rs
│ │ │ ├── clean.rs
│ │ │ ├── combine_configs.rs
│ │ │ ├── compatibility_check.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── new.rs
│ │ │ ├── optimize_inlining/
│ │ │ │ ├── args.rs
│ │ │ │ ├── contract_size.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── optimizer.rs
│ │ │ │ ├── paths.rs
│ │ │ │ └── runner.rs
│ │ │ ├── profile_validation/
│ │ │ │ ├── backtrace.rs
│ │ │ │ ├── coverage.rs
│ │ │ │ └── mod.rs
│ │ │ ├── run_tests/
│ │ │ │ ├── maat.rs
│ │ │ │ ├── messages/
│ │ │ │ │ ├── collected_tests_count.rs
│ │ │ │ │ ├── latest_blocks_numbers.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── overall_summary.rs
│ │ │ │ │ ├── partition.rs
│ │ │ │ │ ├── tests_failure_summary.rs
│ │ │ │ │ ├── tests_run.rs
│ │ │ │ │ └── tests_summary.rs
│ │ │ │ ├── package.rs
│ │ │ │ ├── resolve_config.rs
│ │ │ │ ├── test_target.rs
│ │ │ │ └── workspace.rs
│ │ │ ├── run_tests.rs
│ │ │ ├── scarb/
│ │ │ │ └── config.rs
│ │ │ ├── scarb.rs
│ │ │ ├── shared_cache.rs
│ │ │ ├── test_filter.rs
│ │ │ └── warn.rs
│ │ └── tests/
│ │ ├── data/
│ │ │ ├── backtrace_panic/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── backtrace_vm_error/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── collection_with_lib/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── fob.cairo
│ │ │ │ ├── src/
│ │ │ │ │ ├── fab/
│ │ │ │ │ │ ├── fab_impl.cairo
│ │ │ │ │ │ └── fibfabfob.cairo
│ │ │ │ │ ├── fab.cairo
│ │ │ │ │ ├── fib.cairo
│ │ │ │ │ ├── fob/
│ │ │ │ │ │ ├── fibfabfob.cairo
│ │ │ │ │ │ └── fob_impl.cairo
│ │ │ │ │ ├── fob.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── fab/
│ │ │ │ │ └── fab_mod.cairo
│ │ │ │ ├── fab.cairo
│ │ │ │ ├── fibfabfob.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── not_found/
│ │ │ │ │ └── not_found.cairo
│ │ │ │ └── not_found.cairo
│ │ │ ├── collection_without_lib/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── fob.cairo
│ │ │ │ ├── src/
│ │ │ │ │ ├── fab/
│ │ │ │ │ │ ├── fab_impl.cairo
│ │ │ │ │ │ └── fibfabfob.cairo
│ │ │ │ │ ├── fab.cairo
│ │ │ │ │ ├── fib.cairo
│ │ │ │ │ ├── fob/
│ │ │ │ │ │ ├── fibfabfob.cairo
│ │ │ │ │ │ └── fob_impl.cairo
│ │ │ │ │ ├── fob.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── fab/
│ │ │ │ │ └── fab_mod.cairo
│ │ │ │ ├── fab.cairo
│ │ │ │ ├── fibfabfob.cairo
│ │ │ │ └── not_found/
│ │ │ │ └── not_found.cairo
│ │ │ ├── component_macros/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── example.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── oz_ac_component.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_contract.cairo
│ │ │ ├── contract_state/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── balance.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── storage_node.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── test_fork.cairo
│ │ │ │ ├── test_state.cairo
│ │ │ │ ├── test_storage_node.cairo
│ │ │ │ └── utils.cairo
│ │ │ ├── contracts/
│ │ │ │ ├── block_hash_checker.cairo
│ │ │ │ ├── block_info_checker.cairo
│ │ │ │ ├── catching_error.cairo
│ │ │ │ ├── cheat_block_hash_checker.cairo
│ │ │ │ ├── cheat_block_number_checker.cairo
│ │ │ │ ├── cheat_block_timestamp_checker.cairo
│ │ │ │ ├── cheat_caller_address_checker.cairo
│ │ │ │ ├── cheat_sequencer_address_checker.cairo
│ │ │ │ ├── cheat_tx_info_checker.cairo
│ │ │ │ ├── deploy_checker.cairo
│ │ │ │ ├── dict_using_contract.cairo
│ │ │ │ ├── erc20.cairo
│ │ │ │ ├── gas_checker.cairo
│ │ │ │ ├── gas_checker_proxy.cairo
│ │ │ │ ├── gas_constructor_checker.cairo
│ │ │ │ ├── hello_starknet.cairo
│ │ │ │ ├── hello_starknet_extended.cairo
│ │ │ │ ├── hello_starknet_for_nested_calls.cairo
│ │ │ │ ├── keccak_usage.cairo
│ │ │ │ ├── l1_handler_execute_checker.cairo
│ │ │ │ ├── message_to_l1_checker.cairo
│ │ │ │ ├── meta_tx_v0_checkers.cairo
│ │ │ │ ├── meta_tx_v0_test.cairo
│ │ │ │ ├── mock_checker.cairo
│ │ │ │ ├── response_with_2_felts.cairo
│ │ │ │ ├── reverts_caller.cairo
│ │ │ │ ├── reverts_contract.cairo
│ │ │ │ ├── reverts_proxy.cairo
│ │ │ │ ├── serding.cairo
│ │ │ │ ├── spy_events_checker.cairo
│ │ │ │ ├── storage_tester.cairo
│ │ │ │ ├── too_many_events.cairo
│ │ │ │ ├── trace_dummy.cairo
│ │ │ │ ├── trace_info_checker.cairo
│ │ │ │ ├── trace_info_proxy.cairo
│ │ │ │ └── two_implementations.cairo
│ │ │ ├── coverage_project/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── lib.cairo
│ │ │ ├── debugging/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── debugging_fork/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── deterministic_output/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── diagnostics/
│ │ │ │ ├── attributes/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── generic/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── inline_macros/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── multiple/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── parameters/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── semantic/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ ├── syntax/
│ │ │ │ │ ├── .cairofmtignore
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── contract.cairo
│ │ │ │ └── test_case_attr/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── basic.cairo
│ │ │ ├── dispatchers/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── error_handler.cairo
│ │ │ │ │ ├── failable.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── duplicated_test_names/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── tests_a.cairo
│ │ │ │ └── tests_b.cairo
│ │ │ ├── empty/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── env/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── erc20_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── erc20.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_complex.cairo
│ │ │ ├── exit_first/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── ext_function_test.cairo
│ │ │ ├── features/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── file_reading/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── data/
│ │ │ │ │ ├── json/
│ │ │ │ │ │ ├── invalid.json
│ │ │ │ │ │ ├── nested_valid.json
│ │ │ │ │ │ ├── valid.json
│ │ │ │ │ │ └── with_array.json
│ │ │ │ │ ├── negative_number.txt
│ │ │ │ │ ├── non_ascii.txt
│ │ │ │ │ └── valid.txt
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── tests/
│ │ │ │ │ └── test.cairo
│ │ │ │ └── valid_file.txt
│ │ │ ├── forking/
│ │ │ │ ├── .gitignore
│ │ │ │ ├── .snfoundry_cache/
│ │ │ │ │ ├── README.md
│ │ │ │ │ └── http___188_34_188_184_7070_rpc_v0_10_54060_v0_59_0.json
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── fuzzing/
│ │ │ │ ├── .cairofmtignore
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── exit_first_fuzz.cairo
│ │ │ │ ├── exit_first_single_fail.cairo
│ │ │ │ ├── generate_arg.cairo
│ │ │ │ ├── generic_struct.cairo
│ │ │ │ ├── incorrect_args.cairo
│ │ │ │ └── multiple_attributes.cairo
│ │ │ ├── hello_workspaces/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── crates/
│ │ │ │ │ ├── addition/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── nested/
│ │ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ │ └── nested.cairo
│ │ │ │ │ └── fibonacci/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── abc/
│ │ │ │ │ │ └── efg.cairo
│ │ │ │ │ ├── abc.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── not_collected.cairo
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_failing.cairo
│ │ │ ├── nonexistent_selector/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_contract.cairo
│ │ │ ├── panic_decoding/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_panic_decoding.cairo
│ │ │ ├── partitioning/
│ │ │ │ ├── .tool-versions
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── crates/
│ │ │ │ │ ├── package_a/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ └── tests.cairo
│ │ │ │ │ └── package_b/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── tests.cairo
│ │ │ ├── runtime_errors_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── hello_starknet.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── with_error.cairo
│ │ │ ├── should_panic_test/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── should_panic_test.cairo
│ │ │ ├── simple_package/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── hello_starknet.cairo
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── ext_function_test.cairo
│ │ │ │ ├── test_simple.cairo
│ │ │ │ └── without_prefix.cairo
│ │ │ ├── simple_package_with_cheats/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── contract.cairo
│ │ │ ├── steps/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── targets/
│ │ │ │ ├── custom_target/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── custom_target_custom_names/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── custom_target_only_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_lib_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── only_unit/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── unit_and_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── unit_and_lib_integration/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ └── with_features/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── tests.cairo
│ │ │ ├── test_case/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── exit_first.cairo
│ │ │ │ ├── multiple_attributes.cairo
│ │ │ │ ├── single_attribute.cairo
│ │ │ │ └── with_deploy.cairo
│ │ │ ├── trace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ └── test_trace.cairo
│ │ │ ├── trace_resources/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ ├── empty.cairo
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ ├── trace_dummy.cairo
│ │ │ │ │ ├── trace_info_checker.cairo
│ │ │ │ │ └── trace_info_proxy.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── test_call.cairo
│ │ │ │ ├── test_deploy.cairo
│ │ │ │ ├── test_failed_call.cairo
│ │ │ │ ├── test_failed_lib_call.cairo
│ │ │ │ ├── test_l1_handler.cairo
│ │ │ │ └── test_lib_call.cairo
│ │ │ ├── virtual_workspace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── dummy_name/
│ │ │ │ │ ├── fibonacci_virtual/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ ├── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── tests/
│ │ │ │ │ │ ├── abc/
│ │ │ │ │ │ │ └── efg.cairo
│ │ │ │ │ │ ├── abc.cairo
│ │ │ │ │ │ ├── lib.cairo
│ │ │ │ │ │ └── not_collected.cairo
│ │ │ │ │ └── subtraction/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── nested/
│ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ └── nested.cairo
│ │ │ │ └── not_collected.cairo
│ │ │ └── wasm_oracles/
│ │ │ ├── Scarb.toml
│ │ │ ├── build-fixtures.sh
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── tests/
│ │ │ │ └── test.cairo
│ │ │ ├── wasm_oracle/
│ │ │ │ ├── Cargo.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.rs
│ │ │ └── wasm_oracle.wasm
│ │ ├── e2e/
│ │ │ ├── backtrace.rs
│ │ │ ├── build_profile.rs
│ │ │ ├── build_trace_data.rs
│ │ │ ├── clean.rs
│ │ │ ├── code_quality.rs
│ │ │ ├── collection.rs
│ │ │ ├── color.rs
│ │ │ ├── common/
│ │ │ │ ├── mod.rs
│ │ │ │ ├── output.rs
│ │ │ │ └── runner.rs
│ │ │ ├── completions.rs
│ │ │ ├── components.rs
│ │ │ ├── contract_artifacts.rs
│ │ │ ├── coverage.rs
│ │ │ ├── debugger.rs
│ │ │ ├── debugging.rs
│ │ │ ├── docs_snippets_validation.rs
│ │ │ ├── env.rs
│ │ │ ├── features.rs
│ │ │ ├── fork_warning.rs
│ │ │ ├── forking.rs
│ │ │ ├── fuzzing.rs
│ │ │ ├── gas_report.rs
│ │ │ ├── io_operations.rs
│ │ │ ├── mod.rs
│ │ │ ├── new.rs
│ │ │ ├── optimize_inlining.rs
│ │ │ ├── oracles.rs
│ │ │ ├── package_warnings.rs
│ │ │ ├── partitioning.rs
│ │ │ ├── plugin_diagnostics.rs
│ │ │ ├── plugin_versions.rs
│ │ │ ├── profiles.rs
│ │ │ ├── requirements.rs
│ │ │ ├── running.rs
│ │ │ ├── snapshots/
│ │ │ │ ├── backtrace/
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_inlines@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_panic_without_optimizations@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.16.1.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_backtrace_without_inlines@2.17.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.15.2.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.16.0.snap
│ │ │ │ │ ├── main__e2e__backtrace__snap_test_handled_error_not_display@2.16.1.snap
│ │ │ │ │ └── main__e2e__backtrace__snap_test_handled_error_not_display@2.17.0.snap
│ │ │ │ ├── gas_report/
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_basic@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_fork@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.16.1.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_multiple_contracts_and_constructor@2.17.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.15.2.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.16.0.snap
│ │ │ │ │ ├── main__e2e__gas_report__snap_recursive_calls@2.16.1.snap
│ │ │ │ │ └── main__e2e__gas_report__snap_recursive_calls@2.17.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__optimize_inlining_dry_run.snap
│ │ │ │ ├── main__e2e__optimize_inlining__optimize_inlining_updates_manifest.snap
│ │ │ │ └── optimize_inlining/
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.15.2.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.16.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.16.1.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_dry_run@2.17.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.15.2.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.16.0.snap
│ │ │ │ ├── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.16.1.snap
│ │ │ │ └── main__e2e__optimize_inlining__snap_optimize_inlining_updates_manifest@2.17.0.snap
│ │ │ ├── steps.rs
│ │ │ ├── templates.rs
│ │ │ ├── test_case.rs
│ │ │ ├── trace_print.rs
│ │ │ ├── trace_resources.rs
│ │ │ └── workspaces.rs
│ │ ├── integration/
│ │ │ ├── available_gas.rs
│ │ │ ├── builtins.rs
│ │ │ ├── cheat_block_hash.rs
│ │ │ ├── cheat_block_number.rs
│ │ │ ├── cheat_block_timestamp.rs
│ │ │ ├── cheat_caller_address.rs
│ │ │ ├── cheat_execution_info.rs
│ │ │ ├── cheat_fork.rs
│ │ │ ├── cheat_sequencer_address.rs
│ │ │ ├── config.rs
│ │ │ ├── declare.rs
│ │ │ ├── deploy.rs
│ │ │ ├── deploy_at.rs
│ │ │ ├── dict.rs
│ │ │ ├── dispatchers.rs
│ │ │ ├── env.rs
│ │ │ ├── fuzzing.rs
│ │ │ ├── gas.rs
│ │ │ ├── generate_random_felt.rs
│ │ │ ├── get_available_gas.rs
│ │ │ ├── get_class_hash.rs
│ │ │ ├── get_current_vm_step.rs
│ │ │ ├── interact_with_state.rs
│ │ │ ├── l1_handler_executor.rs
│ │ │ ├── message_to_l1.rs
│ │ │ ├── meta_tx_v0.rs
│ │ │ ├── mock_call.rs
│ │ │ ├── mod.rs
│ │ │ ├── precalculate_address.rs
│ │ │ ├── pure_cairo.rs
│ │ │ ├── replace_bytecode.rs
│ │ │ ├── resources.rs
│ │ │ ├── reverts.rs
│ │ │ ├── runtime.rs
│ │ │ ├── set_balance.rs
│ │ │ ├── setup_fork.rs
│ │ │ ├── should_panic.rs
│ │ │ ├── signing.rs
│ │ │ ├── spy_events.rs
│ │ │ ├── store_load.rs
│ │ │ ├── syscalls.rs
│ │ │ ├── test_state.rs
│ │ │ ├── too_many_events.rs
│ │ │ └── trace.rs
│ │ ├── main.rs
│ │ └── utils/
│ │ ├── mod.rs
│ │ ├── runner.rs
│ │ └── running_tests.rs
│ ├── forge-runner/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── backtrace/
│ │ │ ├── data.rs
│ │ │ ├── display.rs
│ │ │ └── mod.rs
│ │ ├── build_trace_data.rs
│ │ ├── coverage_api.rs
│ │ ├── debugging/
│ │ │ ├── args.rs
│ │ │ ├── component.rs
│ │ │ ├── mod.rs
│ │ │ └── trace_verbosity.rs
│ │ ├── expected_result.rs
│ │ ├── filtering.rs
│ │ ├── forge_config.rs
│ │ ├── gas/
│ │ │ ├── report.rs
│ │ │ ├── resources.rs
│ │ │ ├── stats.rs
│ │ │ └── utils.rs
│ │ ├── gas.rs
│ │ ├── lib.rs
│ │ ├── messages.rs
│ │ ├── package_tests/
│ │ │ ├── raw.rs
│ │ │ ├── with_config.rs
│ │ │ └── with_config_resolved.rs
│ │ ├── package_tests.rs
│ │ ├── partition.rs
│ │ ├── printing.rs
│ │ ├── profiler_api.rs
│ │ ├── running/
│ │ │ ├── config_run.rs
│ │ │ ├── execution.rs
│ │ │ ├── hints.rs
│ │ │ ├── setup.rs
│ │ │ ├── syscall_handler.rs
│ │ │ └── target.rs
│ │ ├── running.rs
│ │ ├── scarb.rs
│ │ ├── test_case_summary.rs
│ │ ├── test_target_summary.rs
│ │ └── tests_summary.rs
│ ├── foundry-ui/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── components/
│ │ │ ├── error.rs
│ │ │ ├── labeled.rs
│ │ │ ├── mod.rs
│ │ │ ├── tagged.rs
│ │ │ └── warning.rs
│ │ ├── lib.rs
│ │ ├── message.rs
│ │ ├── output.rs
│ │ └── styling.rs
│ ├── native-api/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ ├── runtime/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── lib.rs
│ │ ├── starknet/
│ │ │ ├── constants.rs
│ │ │ ├── context.rs
│ │ │ ├── mod.rs
│ │ │ └── state.rs
│ │ └── vm.rs
│ ├── scarb-api/
│ │ ├── Cargo.toml
│ │ ├── src/
│ │ │ ├── artifacts/
│ │ │ │ ├── deserialized.rs
│ │ │ │ └── representation.rs
│ │ │ ├── artifacts.rs
│ │ │ ├── command.rs
│ │ │ ├── lib.rs
│ │ │ ├── manifest.rs
│ │ │ ├── metadata.rs
│ │ │ └── version.rs
│ │ └── tests/
│ │ └── data/
│ │ ├── basic_package/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ └── empty_lib/
│ │ ├── Scarb.toml
│ │ └── src/
│ │ └── lib.cairo
│ ├── shared/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ ├── auto_completions.rs
│ │ ├── command.rs
│ │ ├── consts.rs
│ │ ├── lib.rs
│ │ ├── rpc.rs
│ │ ├── spinner.rs
│ │ ├── test_utils/
│ │ │ ├── mod.rs
│ │ │ ├── node_url.rs
│ │ │ └── output_assert.rs
│ │ ├── utils.rs
│ │ └── vm.rs
│ ├── sncast/
│ │ ├── .cargo/
│ │ │ └── config.toml
│ │ ├── .gitignore
│ │ ├── Cargo.toml
│ │ ├── README.md
│ │ ├── src/
│ │ │ ├── helpers/
│ │ │ │ ├── account.rs
│ │ │ │ ├── artifacts.rs
│ │ │ │ ├── block_explorer.rs
│ │ │ │ ├── braavos.rs
│ │ │ │ ├── command.rs
│ │ │ │ ├── config.rs
│ │ │ │ ├── configuration.rs
│ │ │ │ ├── constants.rs
│ │ │ │ ├── devnet/
│ │ │ │ │ ├── detection/
│ │ │ │ │ │ ├── direct.rs
│ │ │ │ │ │ ├── docker.rs
│ │ │ │ │ │ └── flag_parsing.rs
│ │ │ │ │ ├── detection.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── provider.rs
│ │ │ │ ├── fee.rs
│ │ │ │ ├── interactive.rs
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── account.rs
│ │ │ │ │ ├── emulator_transport.rs
│ │ │ │ │ ├── hd_path.rs
│ │ │ │ │ ├── key_locator.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── output_format.rs
│ │ │ │ ├── proof.rs
│ │ │ │ ├── rpc.rs
│ │ │ │ ├── scarb_utils.rs
│ │ │ │ ├── signer.rs
│ │ │ │ └── token.rs
│ │ │ ├── lib.rs
│ │ │ ├── main.rs
│ │ │ ├── response/
│ │ │ │ ├── account/
│ │ │ │ │ ├── create.rs
│ │ │ │ │ ├── delete.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── import.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── balance.rs
│ │ │ │ ├── call.rs
│ │ │ │ ├── cast_message.rs
│ │ │ │ ├── class_hash_at.rs
│ │ │ │ ├── completions.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── errors.rs
│ │ │ │ ├── explorer_link.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── ledger.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── nonce.rs
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── show_config.rs
│ │ │ │ ├── transaction.rs
│ │ │ │ ├── transformed_call.rs
│ │ │ │ ├── tx_status.rs
│ │ │ │ ├── ui.rs
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── selector.rs
│ │ │ │ │ └── serialize.rs
│ │ │ │ └── verify.rs
│ │ │ ├── starknet_commands/
│ │ │ │ ├── account/
│ │ │ │ │ ├── create.rs
│ │ │ │ │ ├── delete.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── import.rs
│ │ │ │ │ ├── list.rs
│ │ │ │ │ └── mod.rs
│ │ │ │ ├── call.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── declare_from.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── get/
│ │ │ │ │ ├── balance.rs
│ │ │ │ │ ├── class_hash_at.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── nonce.rs
│ │ │ │ │ ├── transaction.rs
│ │ │ │ │ └── tx_status.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── app_version.rs
│ │ │ │ │ ├── get_public_key.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ └── sign_hash.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── contract_registry.rs
│ │ │ │ │ ├── deploy.rs
│ │ │ │ │ ├── execute.rs
│ │ │ │ │ ├── invoke.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── new.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── run/
│ │ │ │ │ │ └── script_runtime.rs
│ │ │ │ │ └── run.rs
│ │ │ │ ├── show_config.rs
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.rs
│ │ │ │ │ ├── felt_or_id.rs
│ │ │ │ │ ├── mod.rs
│ │ │ │ │ ├── selector.rs
│ │ │ │ │ └── serialize.rs
│ │ │ │ └── verify/
│ │ │ │ ├── explorer.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── voyager.rs
│ │ │ │ └── walnut.rs
│ │ │ └── state/
│ │ │ ├── hashing.rs
│ │ │ ├── mod.rs
│ │ │ └── state_file.rs
│ │ └── tests/
│ │ ├── code_quality.rs
│ │ ├── data/
│ │ │ ├── accounts/
│ │ │ │ ├── accounts.json
│ │ │ │ ├── faulty_accounts.json
│ │ │ │ ├── faulty_accounts_invalid_felt.json
│ │ │ │ └── invalid_format.json
│ │ │ ├── contracts/
│ │ │ │ ├── build_fails/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── constructor_with_params/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── contract_with_constructor_params/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── map/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ ├── lib.cairo
│ │ │ │ │ ├── test_helpers.cairo
│ │ │ │ │ └── tests.cairo
│ │ │ │ ├── multiple_packages/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── crates/
│ │ │ │ │ │ ├── package1/
│ │ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ │ └── src/
│ │ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ │ └── package2/
│ │ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ │ └── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── no_casm/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ ├── no_sierra/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── virtual_workspace/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── crates/
│ │ │ │ ├── cast_addition/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── cast_fibonacci/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── files/
│ │ │ │ ├── correct_snfoundry.toml
│ │ │ │ ├── data_transformer_contract_abi.json
│ │ │ │ ├── data_transformer_contract_abi_missing_function.json
│ │ │ │ ├── data_transformer_contract_abi_missing_type.json
│ │ │ │ ├── invalid_snfoundry.toml
│ │ │ │ ├── pre_0.34.0_state_with_tx.json
│ │ │ │ ├── state_corrupt_missing_field.json
│ │ │ │ ├── state_no_txs.json
│ │ │ │ ├── state_with_tx.json
│ │ │ │ ├── state_with_txs.json
│ │ │ │ └── state_wrong_version.json
│ │ │ ├── keystore/
│ │ │ │ ├── my_account.json
│ │ │ │ ├── my_account_braavos_invalid_multisig.json
│ │ │ │ ├── my_account_braavos_multiple_signers.json
│ │ │ │ ├── my_account_braavos_undeployed_happy_case.json
│ │ │ │ ├── my_account_invalid.json
│ │ │ │ ├── my_account_oz_undeployed_happy_case.json
│ │ │ │ ├── my_account_ready_undeployed_happy_case.json
│ │ │ │ ├── my_account_undeployed.json
│ │ │ │ ├── my_account_undeployed_happy_case_other_args.json
│ │ │ │ ├── my_key.json
│ │ │ │ ├── my_key_invalid.json
│ │ │ │ ├── predeployed_account.json
│ │ │ │ └── predeployed_key.json
│ │ │ ├── ledger-app/
│ │ │ │ └── nanox#strk#0.25.13.elf
│ │ │ ├── multicall_configs/
│ │ │ │ ├── deploy_invalid.toml
│ │ │ │ ├── deploy_invoke.toml
│ │ │ │ ├── deploy_invoke_calldata_ids.toml
│ │ │ │ ├── deploy_invoke_numeric_inputs.toml
│ │ │ │ ├── deploy_invoke_numeric_overflow.toml
│ │ │ │ ├── deploy_succ_invoke_fail.toml
│ │ │ │ ├── invoke_invalid.toml
│ │ │ │ └── invoke_ledger.toml
│ │ │ └── scripts/
│ │ │ ├── call/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── invalid_address.cairo
│ │ │ │ ├── invalid_calldata.cairo
│ │ │ │ ├── invalid_entry_point.cairo
│ │ │ │ └── lib.cairo
│ │ │ ├── declare/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── fee_settings.cairo
│ │ │ │ ├── insufficient_account_balance.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── no_contract.cairo
│ │ │ │ ├── same_contract_twice.cairo
│ │ │ │ ├── time_out.cairo
│ │ │ │ ├── with_invalid_max_fee.cairo
│ │ │ │ └── with_invalid_nonce.cairo
│ │ │ ├── deploy/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── fee_settings.cairo
│ │ │ │ ├── invalid_calldata.cairo
│ │ │ │ ├── invalid_class_hash.cairo
│ │ │ │ ├── invalid_nonce.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── same_class_hash_and_salt.cairo
│ │ │ │ └── with_calldata.cairo
│ │ │ ├── invoke/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── contract_does_not_exist.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── max_fee_too_low.cairo
│ │ │ │ ├── wrong_calldata.cairo
│ │ │ │ └── wrong_function_name.cairo
│ │ │ ├── map_script/
│ │ │ │ ├── contracts/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── display_debug_traits_for_subcommand_responses.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── map_script.cairo
│ │ │ ├── misc/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── call_fail.cairo
│ │ │ │ ├── call_happy.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── using_starknet_syscall.cairo
│ │ │ ├── missing_field/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── missing_field.cairo
│ │ │ ├── old_sncast_std/
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── map_script.cairo
│ │ │ ├── packages/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── crates/
│ │ │ │ └── scripts/
│ │ │ │ ├── script1/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── script2/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ └── lib.cairo
│ │ │ ├── state_file/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── rerun_failed_tx_alpha-sepolia_state.json
│ │ │ │ └── src/
│ │ │ │ ├── all_tx_fail.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── rerun_failed_tx.cairo
│ │ │ ├── state_script/
│ │ │ │ ├── contracts/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ └── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── scripts/
│ │ │ │ ├── Scarb.toml
│ │ │ │ └── src/
│ │ │ │ ├── lib.cairo
│ │ │ │ └── state_script.cairo
│ │ │ └── tx_status/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── incorrect_transaction_hash.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── status_reverted.cairo
│ │ │ └── status_succeeded.cairo
│ │ ├── docs_snippets/
│ │ │ ├── ledger.rs
│ │ │ ├── mod.rs
│ │ │ └── validation.rs
│ │ ├── e2e/
│ │ │ ├── account/
│ │ │ │ ├── create.rs
│ │ │ │ ├── delete.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── helpers.rs
│ │ │ │ ├── import.rs
│ │ │ │ ├── list.rs
│ │ │ │ └── mod.rs
│ │ │ ├── balance.rs
│ │ │ ├── call.rs
│ │ │ ├── class_hash.rs
│ │ │ ├── class_hash_at.rs
│ │ │ ├── completions.rs
│ │ │ ├── declare.rs
│ │ │ ├── declare_from.rs
│ │ │ ├── deploy.rs
│ │ │ ├── devnet_accounts.rs
│ │ │ ├── fee.rs
│ │ │ ├── invoke.rs
│ │ │ ├── ledger/
│ │ │ │ ├── account.rs
│ │ │ │ ├── basic.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── network.rs
│ │ │ ├── main_tests.rs
│ │ │ ├── mod.rs
│ │ │ ├── multicall/
│ │ │ │ ├── execute.rs
│ │ │ │ ├── mod.rs
│ │ │ │ ├── new.rs
│ │ │ │ └── run.rs
│ │ │ ├── nonce.rs
│ │ │ ├── proof.rs
│ │ │ ├── script/
│ │ │ │ ├── call.rs
│ │ │ │ ├── declare.rs
│ │ │ │ ├── deploy.rs
│ │ │ │ ├── general.rs
│ │ │ │ ├── init.rs
│ │ │ │ ├── invoke.rs
│ │ │ │ ├── mod.rs
│ │ │ │ └── tx_status.rs
│ │ │ ├── selector.rs
│ │ │ ├── serialize.rs
│ │ │ ├── show_config.rs
│ │ │ ├── transaction.rs
│ │ │ ├── tx_status.rs
│ │ │ └── verify/
│ │ │ ├── mod.rs
│ │ │ ├── voyager.rs
│ │ │ └── walnut.rs
│ │ ├── helpers/
│ │ │ ├── constants.rs
│ │ │ ├── devnet.rs
│ │ │ ├── devnet_detection.rs
│ │ │ ├── devnet_provider.rs
│ │ │ ├── env.rs
│ │ │ ├── fixtures.rs
│ │ │ ├── mod.rs
│ │ │ ├── runner.rs
│ │ │ └── shell.rs
│ │ ├── integration/
│ │ │ ├── fee.rs
│ │ │ ├── lib_tests.rs
│ │ │ ├── mod.rs
│ │ │ └── wait_for_tx.rs
│ │ ├── main.rs
│ │ └── shell/
│ │ ├── call.sh
│ │ ├── call_unsigned.sh
│ │ ├── deploy.sh
│ │ ├── invoke.sh
│ │ └── serialize.sh
│ ├── snforge-scarb-plugin/
│ │ ├── Cargo.toml
│ │ ├── Scarb.toml
│ │ ├── clippy.toml
│ │ ├── src/
│ │ │ ├── args/
│ │ │ │ ├── named.rs
│ │ │ │ └── unnamed.rs
│ │ │ ├── args.rs
│ │ │ ├── asserts.rs
│ │ │ ├── attributes/
│ │ │ │ ├── available_gas.rs
│ │ │ │ ├── disable_predeployed_contracts.rs
│ │ │ │ ├── fork/
│ │ │ │ │ └── block_id.rs
│ │ │ │ ├── fork.rs
│ │ │ │ ├── fuzzer/
│ │ │ │ │ └── wrapper.rs
│ │ │ │ ├── fuzzer.rs
│ │ │ │ ├── ignore.rs
│ │ │ │ ├── internal_config_statement.rs
│ │ │ │ ├── should_panic/
│ │ │ │ │ └── expected.rs
│ │ │ │ ├── should_panic.rs
│ │ │ │ ├── test.rs
│ │ │ │ ├── test_case/
│ │ │ │ │ └── name.rs
│ │ │ │ └── test_case.rs
│ │ │ ├── attributes.rs
│ │ │ ├── cairo_expression.rs
│ │ │ ├── common.rs
│ │ │ ├── config_statement.rs
│ │ │ ├── external_inputs.rs
│ │ │ ├── lib.rs
│ │ │ ├── parse.rs
│ │ │ ├── types.rs
│ │ │ └── utils.rs
│ │ └── tests/
│ │ └── integration/
│ │ ├── main.rs
│ │ ├── multiple_attributes.rs
│ │ ├── single_attributes/
│ │ │ ├── available_gas.rs
│ │ │ ├── disable_predeployed_contracts.rs
│ │ │ ├── fork.rs
│ │ │ ├── fuzzer.rs
│ │ │ ├── ignore.rs
│ │ │ ├── internal_config_statement.rs
│ │ │ ├── should_panic.rs
│ │ │ ├── test.rs
│ │ │ └── test_case.rs
│ │ ├── single_attributes.rs
│ │ └── utils.rs
│ ├── testing/
│ │ └── packages_validation/
│ │ ├── Cargo.toml
│ │ └── src/
│ │ └── lib.rs
│ └── universal-sierra-compiler-api/
│ ├── Cargo.toml
│ └── src/
│ ├── command.rs
│ ├── compile.rs
│ ├── lib.rs
│ └── representation.rs
├── design_documents/
│ ├── accessing_emitted_events.md
│ ├── cairo_deployment_scripts.md
│ ├── contract_verification.md
│ ├── loading_data_from_files.md
│ ├── parametrizing_tests_with_fixed_values.md
│ ├── prepare_cheatcode.md
│ ├── sncast_interface_overhaul.md
│ ├── stark_curve_signatures.md
│ ├── state_forking/
│ │ ├── multi-forking.md
│ │ └── state_forking.md
│ ├── store_load_cheatcodes.md
│ ├── template.md
│ ├── test_design.md
│ └── transactional_testing/
│ └── transactional_testing.md
├── docs/
│ ├── .gitignore
│ ├── README.md
│ ├── book.toml
│ ├── codeSnippets.js
│ ├── count.js
│ ├── example_workflows/
│ │ ├── basic_workflow.yml
│ │ └── partitioned_workflow.yml
│ ├── listings/
│ │ ├── basic_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── basic_example.cairo
│ │ │ └── lib.cairo
│ │ ├── call/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── cheatcodes_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── l1_handler_example.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── mock_call_example.cairo
│ │ │ └── tests/
│ │ │ ├── test_l1_handler.cairo
│ │ │ └── test_mock_call.cairo
│ │ ├── declare/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── deploy/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── deployment_with_constructor_args/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── test_with_deploy_for_test.cairo
│ │ │ └── test_with_serialization.cairo
│ │ ├── detailed_resources_example/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── direct_storage_access/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── complex_structures.cairo
│ │ │ │ ├── felts_only.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── using_enums.cairo
│ │ │ └── tests/
│ │ │ ├── complex_structures.cairo
│ │ │ ├── felts_only/
│ │ │ │ ├── field.cairo
│ │ │ │ └── map_entry.cairo
│ │ │ ├── felts_only.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── storage_address.cairo
│ │ │ ├── using_enums.cairo
│ │ │ └── using_storage_address_from_base.cairo
│ │ ├── error_handling/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── error_handling.cairo
│ │ │ └── lib.cairo
│ │ ├── failing_example/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── first_test/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── fork_testing/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── explicit/
│ │ │ │ ├── block_hash.cairo
│ │ │ │ ├── block_number.cairo
│ │ │ │ └── block_tag.cairo
│ │ │ ├── explicit.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── name.cairo
│ │ │ └── overridden_name.cairo
│ │ ├── full_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── full_example.cairo
│ │ │ └── lib.cairo
│ │ ├── fuzz_testing/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ ├── basic_example.cairo
│ │ │ ├── lib.cairo
│ │ │ └── with_parameters.cairo
│ │ ├── get_nonce/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── hello_sncast/
│ │ │ ├── Scarb.toml
│ │ │ ├── accounts.json
│ │ │ ├── snfoundry.toml
│ │ │ └── src/
│ │ │ ├── constructor_contract.cairo
│ │ │ ├── data_transformer_contract.cairo
│ │ │ ├── hello_sncast.cairo
│ │ │ └── lib.cairo
│ │ ├── hello_snforge/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── hello_starknet/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_contract.cairo
│ │ ├── hello_workspaces_docs/
│ │ │ ├── Scarb.toml
│ │ │ ├── crates/
│ │ │ │ ├── addition_docs/
│ │ │ │ │ ├── Scarb.toml
│ │ │ │ │ ├── src/
│ │ │ │ │ │ └── lib.cairo
│ │ │ │ │ └── tests/
│ │ │ │ │ ├── nested/
│ │ │ │ │ │ └── test_nested.cairo
│ │ │ │ │ └── nested.cairo
│ │ │ │ └── fibonacci_docs/
│ │ │ │ ├── Scarb.toml
│ │ │ │ ├── src/
│ │ │ │ │ └── lib.cairo
│ │ │ │ └── tests/
│ │ │ │ ├── abc/
│ │ │ │ │ └── efg.cairo
│ │ │ │ ├── abc.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ └── not_collected.cairo
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── test_failing.cairo
│ │ ├── ignoring_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── invoke/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── map3/
│ │ │ ├── Scarb.toml
│ │ │ ├── snfoundry.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── panicking_test/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── parametrized_testing_advanced/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── parametrized_testing_basic/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── parametrized_testing_fuzzer/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── should_panic_example/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── snforge_library_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── data/
│ │ │ │ ├── hello_starknet.txt
│ │ │ │ └── user.json
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── test_fs_file_trait.cairo
│ │ │ ├── test_fs_parse_json.cairo
│ │ │ ├── test_fs_read_json.cairo
│ │ │ └── test_fs_read_txt.cairo
│ │ ├── testing_contract_internals/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── spying_for_events.cairo
│ │ │ │ ├── using_interact_with_state.cairo
│ │ │ │ └── using_library_calls.cairo
│ │ │ └── tests/
│ │ │ ├── interact_with_state.cairo
│ │ │ ├── lib.cairo
│ │ │ ├── mocking_the_context_info.cairo
│ │ │ ├── spying_for_events/
│ │ │ │ ├── syscall_tests.cairo
│ │ │ │ └── tests.cairo
│ │ │ ├── spying_for_events.cairo
│ │ │ └── using_library_calls.cairo
│ │ ├── testing_events/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ ├── contract.cairo
│ │ │ │ ├── lib.cairo
│ │ │ │ ├── syscall.cairo
│ │ │ │ └── syscall_dummy.cairo
│ │ │ └── tests/
│ │ │ ├── assert_base.cairo
│ │ │ ├── assert_emitted.cairo
│ │ │ ├── assert_manually.cairo
│ │ │ ├── filter.cairo
│ │ │ └── syscall.cairo
│ │ ├── testing_messages_to_l1/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── detailed.cairo
│ │ │ ├── lib.cairo
│ │ │ └── simple.cairo
│ │ ├── testing_reference/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── tests.cairo
│ │ ├── testing_smart_contracts_handling_errors/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ ├── handle_panic.cairo
│ │ │ └── panic.cairo
│ │ ├── testing_smart_contracts_safe_dispatcher/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── safe_dispatcher.cairo
│ │ ├── testing_smart_contracts_writing_tests/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── simple_contract.cairo
│ │ ├── tests_partitioning/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── example.cairo
│ │ ├── tx_status/
│ │ │ ├── Scarb.toml
│ │ │ └── src/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes_cancelling_cheat/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ ├── using_cheatcodes_cheat_address/
│ │ │ ├── Scarb.toml
│ │ │ ├── src/
│ │ │ │ └── lib.cairo
│ │ │ └── tests/
│ │ │ └── lib.cairo
│ │ └── using_cheatcodes_others/
│ │ ├── Scarb.toml
│ │ ├── src/
│ │ │ └── lib.cairo
│ │ └── tests/
│ │ ├── caller_address/
│ │ │ ├── proper_use_global.cairo
│ │ │ └── span.cairo
│ │ ├── caller_address.cairo
│ │ ├── cheat_constructor.cairo
│ │ ├── lib.cairo
│ │ ├── set_balance_custom_token.cairo
│ │ └── set_balance_strk.cairo
│ ├── src/
│ │ ├── README.md
│ │ ├── SUMMARY.md
│ │ ├── appendix/
│ │ │ ├── 0-56-0-migration-guide.md
│ │ │ ├── cheatcodes/
│ │ │ │ ├── account_contract_address.md
│ │ │ │ ├── account_deployment_data.md
│ │ │ │ ├── block_hash.md
│ │ │ │ ├── block_number.md
│ │ │ │ ├── block_timestamp.md
│ │ │ │ ├── caller_address.md
│ │ │ │ ├── chain_id.md
│ │ │ │ ├── cheat_span.md
│ │ │ │ ├── fee_data_availability_mode.md
│ │ │ │ ├── generate_arg.md
│ │ │ │ ├── generate_random_felt.md
│ │ │ │ ├── get_class_hash.md
│ │ │ │ ├── global.md
│ │ │ │ ├── interact_with_state.md
│ │ │ │ ├── l1_handler.md
│ │ │ │ ├── load.md
│ │ │ │ ├── max_fee.md
│ │ │ │ ├── mock_call.md
│ │ │ │ ├── nonce.md
│ │ │ │ ├── nonce_data_availability_mode.md
│ │ │ │ ├── paymaster_data.md
│ │ │ │ ├── proof_facts.md
│ │ │ │ ├── replace_bytecode.md
│ │ │ │ ├── resource_bounds.md
│ │ │ │ ├── sequencer_address.md
│ │ │ │ ├── set_balance.md
│ │ │ │ ├── signature.md
│ │ │ │ ├── spy_events.md
│ │ │ │ ├── spy_messages_to_l1.md
│ │ │ │ ├── store.md
│ │ │ │ ├── tip.md
│ │ │ │ ├── token.md
│ │ │ │ ├── transaction_hash.md
│ │ │ │ └── transaction_version.md
│ │ │ ├── cheatcodes.md
│ │ │ ├── inlining-optimizer.md
│ │ │ ├── scarb-toml.md
│ │ │ ├── sncast/
│ │ │ │ ├── account/
│ │ │ │ │ ├── account.md
│ │ │ │ │ ├── create.md
│ │ │ │ │ ├── delete.md
│ │ │ │ │ ├── deploy.md
│ │ │ │ │ ├── import.md
│ │ │ │ │ └── list.md
│ │ │ │ ├── balance.md
│ │ │ │ ├── call.md
│ │ │ │ ├── common.md
│ │ │ │ ├── completions.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── declare_from.md
│ │ │ │ ├── deploy.md
│ │ │ │ ├── get/
│ │ │ │ │ ├── balance.md
│ │ │ │ │ ├── class_hash_at.md
│ │ │ │ │ ├── get.md
│ │ │ │ │ ├── nonce.md
│ │ │ │ │ ├── tx-status.md
│ │ │ │ │ └── tx.md
│ │ │ │ ├── invoke.md
│ │ │ │ ├── ledger/
│ │ │ │ │ ├── app-version.md
│ │ │ │ │ ├── get-public-key.md
│ │ │ │ │ ├── ledger.md
│ │ │ │ │ └── sign-hash.md
│ │ │ │ ├── multicall/
│ │ │ │ │ ├── execute/
│ │ │ │ │ │ ├── deploy.md
│ │ │ │ │ │ └── invoke.md
│ │ │ │ │ ├── execute.md
│ │ │ │ │ ├── multicall.md
│ │ │ │ │ ├── new.md
│ │ │ │ │ └── run.md
│ │ │ │ ├── script/
│ │ │ │ │ ├── init.md
│ │ │ │ │ ├── run.md
│ │ │ │ │ └── script.md
│ │ │ │ ├── show_config.md
│ │ │ │ ├── tx-status.md
│ │ │ │ ├── utils/
│ │ │ │ │ ├── class_hash.md
│ │ │ │ │ ├── selector.md
│ │ │ │ │ ├── serialize.md
│ │ │ │ │ └── utils.md
│ │ │ │ └── verify.md
│ │ │ ├── sncast-library/
│ │ │ │ ├── call.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── deploy.md
│ │ │ │ ├── errors.md
│ │ │ │ ├── fee_settings_trait.md
│ │ │ │ ├── get_nonce.md
│ │ │ │ ├── invoke.md
│ │ │ │ └── tx_status.md
│ │ │ ├── sncast-library.md
│ │ │ ├── sncast.md
│ │ │ ├── snforge/
│ │ │ │ ├── check-requirements.md
│ │ │ │ ├── clean-cache.md
│ │ │ │ ├── clean.md
│ │ │ │ ├── completions.md
│ │ │ │ ├── new.md
│ │ │ │ ├── optimize-inlining.md
│ │ │ │ └── test.md
│ │ │ ├── snforge-library/
│ │ │ │ ├── byte_array.md
│ │ │ │ ├── contract_class.md
│ │ │ │ ├── declare.md
│ │ │ │ ├── env.md
│ │ │ │ ├── fs/
│ │ │ │ │ ├── file.md
│ │ │ │ │ ├── file_format_rules.md
│ │ │ │ │ ├── file_parser.md
│ │ │ │ │ ├── read_json.md
│ │ │ │ │ └── read_txt.md
│ │ │ │ ├── fs.md
│ │ │ │ ├── fuzzable.md
│ │ │ │ ├── get_call_trace.md
│ │ │ │ ├── signature.md
│ │ │ │ ├── testing/
│ │ │ │ │ └── get_current_vm_step.md
│ │ │ │ └── testing.md
│ │ │ ├── snforge-library.md
│ │ │ ├── snforge.md
│ │ │ ├── snfoundry-toml.md
│ │ │ └── starknet-foundry-github-action.md
│ │ ├── development/
│ │ │ ├── environment-setup.md
│ │ │ ├── shell-snippets.md
│ │ │ └── snapshot-tests.md
│ │ ├── getting-started/
│ │ │ ├── blake-hash-support.md
│ │ │ ├── first-steps.md
│ │ │ ├── installation.md
│ │ │ └── scarb.md
│ │ ├── projects/
│ │ │ └── configuration.md
│ │ ├── snforge-advanced-features/
│ │ │ ├── debugging.md
│ │ │ ├── fork-testing.md
│ │ │ ├── fuzz-testing.md
│ │ │ ├── oracles.md
│ │ │ ├── parametrized-testing.md
│ │ │ ├── profiling.md
│ │ │ ├── storage-cheatcodes.md
│ │ │ └── tests-partitioning.md
│ │ ├── starknet/
│ │ │ ├── 101.md
│ │ │ ├── account-balance.md
│ │ │ ├── account-import.md
│ │ │ ├── account.md
│ │ │ ├── block_explorer.md
│ │ │ ├── call.md
│ │ │ ├── calldata-transformation.md
│ │ │ ├── declare.md
│ │ │ ├── deploy.md
│ │ │ ├── developer.md
│ │ │ ├── eip-2645-hd-paths.md
│ │ │ ├── integration_with_devnet.md
│ │ │ ├── invoke.md
│ │ │ ├── ledger.md
│ │ │ ├── multicall.md
│ │ │ ├── script.md
│ │ │ ├── show_config.md
│ │ │ ├── sncast-overview.md
│ │ │ ├── tx-status.md
│ │ │ └── verify.md
│ │ └── testing/
│ │ ├── contract-collection/
│ │ │ ├── new-mechanism.md
│ │ │ └── old-mechanism.md
│ │ ├── contracts-collection.md
│ │ ├── contracts.md
│ │ ├── coverage.md
│ │ ├── gas-and-resource-estimation.md
│ │ ├── running-tests.md
│ │ ├── test-attributes.md
│ │ ├── test-collection.md
│ │ ├── testing-contract-internals.md
│ │ ├── testing-events.md
│ │ ├── testing-messages-to-l1.md
│ │ ├── testing-workspaces.md
│ │ ├── testing.md
│ │ └── using-cheatcodes.md
│ └── theme/
│ ├── head.hbs
│ ├── header.hbs
│ └── index.hbs
├── scripts/
│ ├── build_docs.sh
│ ├── check_snapshots.sh
│ ├── compareVersions.js
│ ├── get_scarb_versions.sh
│ ├── handle_version.sh
│ ├── install.sh
│ ├── package.json
│ ├── package.sh
│ ├── release.sh
│ ├── scarbfmt.sh
│ ├── smoke_test.sh
│ ├── snfoundryup
│ └── verify_cairo_listings.sh
├── sncast_std/
│ ├── README.md
│ ├── Scarb.lock
│ ├── Scarb.toml
│ └── src/
│ └── lib.cairo
├── snforge_std/
│ ├── README.md
│ ├── Scarb.lock
│ ├── Scarb.toml
│ └── src/
│ ├── byte_array.cairo
│ ├── cheatcode.cairo
│ ├── cheatcodes/
│ │ ├── block_hash.cairo
│ │ ├── contract_class.cairo
│ │ ├── erc20.cairo
│ │ ├── events.cairo
│ │ ├── execution_info/
│ │ │ ├── account_contract_address.cairo
│ │ │ ├── account_deployment_data.cairo
│ │ │ ├── block_number.cairo
│ │ │ ├── block_timestamp.cairo
│ │ │ ├── caller_address.cairo
│ │ │ ├── chain_id.cairo
│ │ │ ├── contract_address.cairo
│ │ │ ├── fee_data_availability_mode.cairo
│ │ │ ├── max_fee.cairo
│ │ │ ├── nonce.cairo
│ │ │ ├── nonce_data_availability_mode.cairo
│ │ │ ├── paymaster_data.cairo
│ │ │ ├── proof_facts.cairo
│ │ │ ├── resource_bounds.cairo
│ │ │ ├── sequencer_address.cairo
│ │ │ ├── signature.cairo
│ │ │ ├── tip.cairo
│ │ │ ├── transaction_hash.cairo
│ │ │ └── version.cairo
│ │ ├── execution_info.cairo
│ │ ├── generate_arg.cairo
│ │ ├── generate_random_felt.cairo
│ │ ├── l1_handler.cairo
│ │ ├── message_to_l1.cairo
│ │ └── storage.cairo
│ ├── cheatcodes.cairo
│ ├── config_types.cairo
│ ├── env/
│ │ └── env_vars.cairo
│ ├── env.cairo
│ ├── fs/
│ │ └── file_operations.cairo
│ ├── fs.cairo
│ ├── fuzzable.cairo
│ ├── lib.cairo
│ ├── signature/
│ │ ├── secp256k1_curve.cairo
│ │ ├── secp256r1_curve.cairo
│ │ └── stark_curve.cairo
│ ├── signature.cairo
│ ├── testing.cairo
│ └── trace.cairo
└── snforge_templates/
├── balance_contract/
│ ├── src/
│ │ └── lib.cairo
│ └── tests/
│ └── test_contract.cairo
├── cairo_program/
│ └── src/
│ └── lib.cairo
└── erc20_contract/
├── src/
│ ├── lib.cairo
│ ├── mock_erc20.cairo
│ └── token_sender.cairo
└── tests/
├── test_erc20.cairo
└── test_token_sender.cairo
Showing preview only (393K chars total). Download the full file or copy to clipboard to get everything.
SYMBOL INDEX (4184 symbols across 551 files)
FILE: crates/cheatnet/src/constants.rs
constant TEST_ERC20_CONTRACT_CLASS_HASH (line 22) | pub const TEST_ERC20_CONTRACT_CLASS_HASH: &str = "0x1010";
function contract_class_no_entrypoints (line 24) | fn contract_class_no_entrypoints() -> ContractClass {
function contract_class (line 45) | pub fn contract_class(raw_casm: &str, sierra_version: SierraVersion) -> ...
function build_testing_state (line 56) | pub fn build_testing_state() -> DictStateReader {
function build_test_entry_point (line 83) | pub fn build_test_entry_point() -> ExecutableCallEntryPoint {
function get_current_sierra_version (line 100) | pub fn get_current_sierra_version() -> SierraVersion {
FILE: crates/cheatnet/src/forking/cache.rs
function cache_version (line 20) | pub fn cache_version() -> String {
type ForkCacheContent (line 25) | pub struct ForkCacheContent {
method from_str (line 48) | fn from_str(serialized: &str) -> Self {
method extend (line 62) | fn extend(&mut self, other: &Self) {
method compiled_contract_class_map (line 82) | fn compiled_contract_class_map(&self) -> &HashMap<ClassHash, ContractC...
method default (line 35) | fn default() -> Self {
method to_string (line 89) | fn to_string(&self) -> String {
type ForkCache (line 95) | pub struct ForkCache {
method load_or_new (line 119) | pub(crate) fn load_or_new(
method save (line 150) | fn save(&self) {
method get_storage_at (line 180) | pub(crate) fn get_storage_at(
method cache_get_storage_at (line 192) | pub(crate) fn cache_get_storage_at(
method get_nonce_at (line 205) | pub(crate) fn get_nonce_at(&self, address: &ContractAddress) -> Option...
method cache_get_nonce_at (line 209) | pub(crate) fn cache_get_nonce_at(&mut self, contract_address: Contract...
method get_class_hash_at (line 216) | pub fn get_class_hash_at(&self, contract_address: &ContractAddress) ->...
method compiled_contract_class_map (line 224) | pub fn compiled_contract_class_map(&self) -> &HashMap<ClassHash, Contr...
method cache_get_class_hash_at (line 228) | pub(crate) fn cache_get_class_hash_at(
method get_compiled_contract_class (line 238) | pub(crate) fn get_compiled_contract_class(
method insert_compiled_contract_class (line 247) | pub(crate) fn insert_compiled_contract_class(
method get_block_info (line 258) | pub(crate) fn get_block_info(&self) -> Option<BlockInfo> {
method cache_get_block_info (line 262) | pub(crate) fn cache_get_block_info(&mut self, block_info: BlockInfo) {
method drop (line 101) | fn drop(&mut self) {
type FileTruncateExtension (line 106) | trait FileTruncateExtension {
method clear (line 107) | fn clear(&mut self) -> Result<()>;
method clear (line 111) | fn clear(&mut self) -> Result<()> {
function cache_file_path_from_fork_config (line 267) | fn cache_file_path_from_fork_config(
FILE: crates/cheatnet/src/forking/data.rs
type ForkData (line 8) | pub struct ForkData {
method new (line 16) | pub fn new(fork_compiled_contract_class: &HashMap<ClassHash, ContractC...
FILE: crates/cheatnet/src/forking/state.rs
type ForkStateReader (line 35) | pub struct ForkStateReader {
method new (line 41) | pub fn new(url: Url, block_number: BlockNumber, cache_dir: &Utf8Path) ...
method chain_id (line 51) | pub fn chain_id(&self) -> Result<ChainId> {
method compiled_contract_class_map (line 57) | pub fn compiled_contract_class_map(
function other_provider_error (line 67) | fn other_provider_error<T>(boxed: impl ToString) -> Result<T, StateError> {
method get_block_info (line 80) | fn get_block_info(&mut self) -> StateResult<BlockInfo> {
method get_storage_at (line 117) | fn get_storage_at(
method get_nonce_at (line 152) | fn get_nonce_at(&self, contract_address: ContractAddress) -> StateResult...
method get_class_hash_at (line 178) | fn get_class_hash_at(&self, contract_address: ContractAddress) -> StateR...
method get_compiled_class (line 204) | fn get_compiled_class(&self, class_hash: ClassHash) -> StateResult<Runna...
method get_compiled_class_hash (line 275) | fn get_compiled_class_hash(&self, _class_hash: ClassHash) -> StateResult...
FILE: crates/cheatnet/src/predeployment/erc20/constructor_data.rs
type ERC20ConstructorData (line 3) | pub struct ERC20ConstructorData {
FILE: crates/cheatnet/src/predeployment/erc20/eth.rs
constant ETH_CONTRACT_ADDRESS (line 8) | pub const ETH_CONTRACT_ADDRESS: &str =
function eth_predeployed_contract (line 12) | pub fn eth_predeployed_contract() -> PredeployedContract {
FILE: crates/cheatnet/src/predeployment/erc20/predeployed_contract.rs
method erc20 (line 19) | pub fn erc20(
FILE: crates/cheatnet/src/predeployment/erc20/strk.rs
constant STRK_CONTRACT_ADDRESS (line 8) | pub const STRK_CONTRACT_ADDRESS: &str =
function strk_predeployed_contract (line 12) | pub fn strk_predeployed_contract() -> PredeployedContract {
FILE: crates/cheatnet/src/predeployment/predeployed_contract.rs
type PredeployedContract (line 9) | pub struct PredeployedContract {
method new (line 18) | pub fn new(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/cairo1_execution.rs
function execute_entry_point_call_cairo1 (line 30) | pub(crate) fn execute_entry_point_call_cairo1(
function cheatable_run_entry_point (line 148) | pub fn cheatable_run_entry_point(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/calls.rs
function execute_inner_call (line 23) | pub fn execute_inner_call(
function execute_library_call (line 71) | pub fn execute_library_call(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/cheated_syscalls.rs
function get_execution_info_syscall (line 53) | pub fn get_execution_info_syscall(
function convert_deploy_failure_to_revert (line 72) | fn convert_deploy_failure_to_revert(
function deploy_syscall (line 94) | pub fn deploy_syscall(
function execute_deployment (line 181) | pub fn execute_deployment(
function library_call_syscall (line 212) | pub fn library_call_syscall(
function call_contract_syscall (line 245) | pub fn call_contract_syscall(
function meta_tx_v0_syscall (line 290) | pub fn meta_tx_v0_syscall(
function meta_tx_v0 (line 320) | fn meta_tx_v0(
function get_block_hash_syscall (line 437) | pub fn get_block_hash_syscall(
function storage_read (line 457) | pub fn storage_read(
function storage_write (line 482) | pub fn storage_write(
function maybe_modify_storage_address (line 508) | fn maybe_modify_storage_address(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/deprecated/cairo0_execution.rs
function execute_entry_point_call_cairo0 (line 23) | pub(crate) fn execute_entry_point_call_cairo0(
function cheatable_run_entry_point (line 92) | pub fn cheatable_run_entry_point(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/entry_point.rs
type ContractClassEntryPointExecutionResult (line 44) | pub(crate) type ContractClassEntryPointExecutionResult =
type CallInfoWithExecutionData (line 47) | pub(crate) struct CallInfoWithExecutionData {
type ExecuteCallEntryPointExtraOptions (line 54) | pub struct ExecuteCallEntryPointExtraOptions {
function execute_call_entry_point (line 60) | pub fn execute_call_entry_point(
function non_reverting_execute_call_entry_point (line 260) | pub fn non_reverting_execute_call_entry_point(
function execute_constructor_entry_point (line 319) | pub fn execute_constructor_entry_point(
function get_mocked_function_cheat_status (line 365) | fn get_mocked_function_cheat_status<'a>(
function mocked_call_info (line 379) | fn mocked_call_info(
function extract_trace_and_register_errors (line 406) | pub(crate) fn extract_trace_and_register_errors(
function clear_handled_errors (line 424) | pub(crate) fn clear_handled_errors(root_call: &CallInfo, cheatnet_state:...
function get_contracts_with_matching_error (line 439) | fn get_contracts_with_matching_error(root_call: &CallInfo) -> HashSet<Cl...
function get_inner_calls_with_matching_panic_data (line 456) | fn get_inner_calls_with_matching_panic_data<'a>(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/execution_info.rs
function get_cheated_block_info_ptr (line 10) | fn get_cheated_block_info_ptr(
function get_cheated_tx_info_ptr (line 37) | fn get_cheated_tx_info_ptr(
function get_cheated_exec_info_ptr (line 130) | pub fn get_cheated_exec_info_ptr(
function add_vec_memory_segment (line 177) | fn add_vec_memory_segment(vector: &[Felt], vm: &mut VirtualMachine) -> (...
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/execution_utils.rs
function resolve_cheated_data_for_call (line 14) | pub(crate) fn resolve_cheated_data_for_call(
function update_trace_data (line 38) | pub(crate) fn update_trace_data(
function clear_events_and_messages_from_reverted_call (line 77) | pub(crate) fn clear_events_and_messages_from_reverted_call(reverted_call...
function exit_error_call (line 93) | pub(crate) fn exit_error_call(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/syscall_hooks.rs
type SyscallHintProcessorExt (line 13) | pub trait SyscallHintProcessorExt {
method contract_address (line 14) | fn contract_address(&self) -> ContractAddress;
method last_event (line 15) | fn last_event(&self) -> &OrderedEvent;
method last_l2_to_l1_message (line 16) | fn last_l2_to_l1_message(&self) -> &OrderedL2ToL1Message;
method contract_address (line 20) | fn contract_address(&self) -> ContractAddress {
method last_event (line 26) | fn last_event(&self) -> &OrderedEvent {
method last_l2_to_l1_message (line 29) | fn last_l2_to_l1_message(&self) -> &OrderedL2ToL1Message {
method contract_address (line 35) | fn contract_address(&self) -> ContractAddress {
method last_event (line 38) | fn last_event(&self) -> &OrderedEvent {
method last_l2_to_l1_message (line 42) | fn last_l2_to_l1_message(&self) -> &OrderedL2ToL1Message {
function emit_event_hook (line 47) | pub fn emit_event_hook(
function send_message_to_l1_syscall_hook (line 58) | pub fn send_message_to_l1_syscall_hook(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/mod.rs
type CallToBlockifierExtension (line 40) | pub struct CallToBlockifierExtension<'a> {
type CallToBlockifierRuntime (line 44) | pub type CallToBlockifierRuntime<'a> = ExtendedRuntime<CallToBlockifierE...
type Runtime (line 47) | type Runtime = CheatableStarknetRuntime<'a>;
method override_system_call (line 49) | fn override_system_call(
function call_contract_syscall (line 109) | fn call_contract_syscall(
function library_call_syscall (line 142) | fn library_call_syscall(
function execute_syscall (line 178) | fn execute_syscall<Request, Response, ExecuteCallback, Error>(
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/panic_parser.rs
type PanicDataFormat (line 21) | enum PanicDataFormat {
function from (line 28) | fn from(value: PanicDataFormat) -> Self {
function parse_byte_array (line 37) | fn parse_byte_array(s: &str) -> Option<PanicDataFormat> {
function parse_felts (line 47) | fn parse_felts(s: &str) -> Option<PanicDataFormat> {
function parse_entrypoint (line 65) | fn parse_entrypoint(s: &str) -> Option<PanicDataFormat> {
function try_extract_panic_data (line 78) | pub fn try_extract_panic_data(err: &str) -> Option<Vec<Felt>> {
function extracting_plain_panic_data (line 129) | fn extracting_plain_panic_data(data: &str, expected: Option<&Vec<Felt>>) {
function extracting_string_panic_data (line 188) | fn extracting_string_panic_data(data: &str, expected: Option<Vec<Felt>>) {
FILE: crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/rpc.rs
type UsedResources (line 37) | pub struct UsedResources {
type CallSuccess (line 44) | pub struct CallSuccess {
method from (line 49) | fn from(value: CallFailure) -> Self {
type CallResult (line 65) | pub type CallResult = Result<CallSuccess, CallFailure>;
type CallFailure (line 71) | pub enum CallFailure {
method from_execution_error (line 84) | pub fn from_execution_error(
type AddressOrClassHash (line 76) | pub enum AddressOrClassHash {
function from_non_error (line 158) | pub fn from_non_error(call_info: &CallInfo) -> Result<CallSuccess, CallF...
function from_error (line 172) | pub fn from_error(
function call_l1_handler (line 179) | pub fn call_l1_handler(
function call_entry_point (line 209) | pub fn call_entry_point(
function build_failed_call_info (line 267) | fn build_failed_call_info(
FILE: crates/cheatnet/src/runtime_extensions/cheatable_starknet_runtime_extension.rs
type CheatableStarknetRuntimeExtension (line 25) | pub struct CheatableStarknetRuntimeExtension<'a> {
type CheatableStarknetRuntime (line 29) | pub type CheatableStarknetRuntime<'a> = ExtendedRuntime<CheatableStarkne...
type Runtime (line 32) | type Runtime = StarknetRuntime<'a>;
method override_system_call (line 34) | fn override_system_call(
method handle_system_call_signal (line 140) | fn handle_system_call_signal(
function felt_from_ptr_immutable (line 162) | pub fn felt_from_ptr_immutable(
type CheatableStarknetRuntimeError (line 170) | pub trait CheatableStarknetRuntimeError: TryExtractRevert + From<Syscall...
function execute_syscall (line 179) | fn execute_syscall<Request, Response, ExecuteCallback, Error>(
FILE: crates/cheatnet/src/runtime_extensions/common.rs
function create_execute_calldata (line 10) | pub fn create_execute_calldata(calldata: &[Felt]) -> Calldata {
function sum_syscall_usage (line 15) | pub fn sum_syscall_usage(mut a: SyscallUsageMap, b: &SyscallUsageMap) ->...
function get_syscalls_gas_consumed (line 24) | pub fn get_syscalls_gas_consumed(
function get_relocated_vm_trace (line 60) | pub fn get_relocated_vm_trace(cairo_runner: &mut CairoRunner) -> Vec<Rel...
FILE: crates/cheatnet/src/runtime_extensions/deprecated_cheatable_starknet_extension/mod.rs
type SingleSegmentResponse (line 44) | pub struct SingleSegmentResponse {
method write (line 49) | fn write(self, vm: &mut VirtualMachine, ptr: &mut Relocatable) -> WriteR...
type DeprecatedCheatableStarknetRuntimeExtension (line 56) | pub struct DeprecatedCheatableStarknetRuntimeExtension<'a> {
type DeprecatedCheatableStarknetRuntime (line 60) | pub type DeprecatedCheatableStarknetRuntime<'a> =
type Runtime (line 64) | type Runtime = DeprecatedStarknetRuntime<'a>;
method override_system_call (line 67) | fn override_system_call(
method post_syscall_hook (line 214) | fn post_syscall_hook(
function execute_syscall (line 237) | fn execute_syscall<Request, Response, ExecuteCallback>(
function increment_syscall_count (line 263) | fn increment_syscall_count(
function deploy (line 275) | fn deploy(
function call_contract (line 328) | fn call_contract(
function delegate_call (line 368) | fn delegate_call(
function library_call (line 394) | fn library_call(
function execute_inner_call (line 418) | fn execute_inner_call(
function execute_library_call (line 451) | fn execute_library_call(
FILE: crates/cheatnet/src/runtime_extensions/deprecated_cheatable_starknet_extension/runtime.rs
type DeprecatedStarknetRuntime (line 27) | pub struct DeprecatedStarknetRuntime<'a> {
method get_mut_syscall_ptr (line 32) | fn get_mut_syscall_ptr(&mut self) -> &mut Relocatable {
method consumed (line 38) | fn consumed(&self) -> bool {
method consume_step (line 42) | fn consume_step(&mut self) {
method get_n_steps (line 46) | fn get_n_steps(&self) -> Option<usize> {
method run_resources (line 50) | fn run_resources(&self) -> &RunResources {
method execute_hint (line 56) | fn execute_hint(
method compile_hint (line 65) | fn compile_hint(
type DeprecatedExtendedRuntime (line 85) | pub struct DeprecatedExtendedRuntime<Extension: DeprecatedExtensionLogic> {
method execute_hint (line 93) | fn execute_hint(
method compile_hint (line 116) | fn compile_hint(
function execute_syscall_hint (line 137) | fn execute_syscall_hint(
method get_mut_syscall_ptr (line 170) | fn get_mut_syscall_ptr(&mut self) -> &mut Relocatable {
method consumed (line 176) | fn consumed(&self) -> bool {
method consume_step (line 180) | fn consume_step(&mut self) {
method get_n_steps (line 184) | fn get_n_steps(&self) -> Option<usize> {
method run_resources (line 188) | fn run_resources(&self) -> &RunResources {
type DeprecatedExtensionLogic (line 193) | pub trait DeprecatedExtensionLogic {
method override_system_call (line 196) | fn override_system_call(
method post_syscall_hook (line 205) | fn post_syscall_hook(
FILE: crates/cheatnet/src/runtime_extensions/forge_config_extension.rs
type ForgeConfigExtension (line 8) | pub struct ForgeConfigExtension<'a> {
type Runtime (line 14) | type Runtime = StarknetRuntime<'a>;
method handle_cheatcode (line 16) | fn handle_cheatcode(
FILE: crates/cheatnet/src/runtime_extensions/forge_config_extension/config.rs
type RawAvailableResourceBoundsConfig (line 14) | pub struct RawAvailableResourceBoundsConfig {
method to_gas_vector (line 22) | pub fn to_gas_vector(&self) -> GasVector {
method is_zero (line 31) | pub fn is_zero(&self) -> bool {
type BlockId (line 39) | pub enum BlockId {
method deserialize (line 46) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type InlineForkConfig (line 109) | pub struct InlineForkConfig {
type OverriddenForkConfig (line 115) | pub struct OverriddenForkConfig {
type RawForkConfig (line 121) | pub enum RawForkConfig {
type RawFuzzerConfig (line 130) | pub struct RawFuzzerConfig {
type Expected (line 138) | pub enum Expected {
type RawShouldPanicConfig (line 146) | pub struct RawShouldPanicConfig {
type RawIgnoreConfig (line 153) | pub struct RawIgnoreConfig {
type RawPredeployedContractsConfig (line 160) | pub struct RawPredeployedContractsConfig {
type RawForgeConfig (line 167) | pub struct RawForgeConfig {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_account_contract_address.rs
method cheat_account_contract_address (line 10) | pub fn cheat_account_contract_address(
method start_cheat_account_contract_address (line 29) | pub fn start_cheat_account_contract_address(
method stop_cheat_account_contract_address (line 41) | pub fn stop_cheat_account_contract_address(&mut self, target: ContractAd...
method start_cheat_account_contract_address_global (line 51) | pub fn start_cheat_account_contract_address_global(
method stop_cheat_account_contract_address_global (line 64) | pub fn stop_cheat_account_contract_address_global(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_hash.rs
method cheat_block_hash (line 15) | pub fn cheat_block_hash(&mut self, block_number: u64, operation: Operati...
method start_cheat_block_hash (line 53) | pub fn start_cheat_block_hash(
method stop_cheat_block_hash (line 69) | pub fn stop_cheat_block_hash(&mut self, contract_address: ContractAddres...
method start_cheat_block_hash_global (line 73) | pub fn start_cheat_block_hash_global(&mut self, block_number: u64, block...
method stop_cheat_block_hash_global (line 77) | pub fn stop_cheat_block_hash_global(&mut self, block_number: u64) {
method get_cheated_block_hash_for_contract (line 81) | pub fn get_cheated_block_hash_for_contract(
method get_block_hash_for_contract (line 123) | pub fn get_block_hash_for_contract(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_number.rs
method cheat_block_number (line 9) | pub fn cheat_block_number(
method start_cheat_block_number_global (line 28) | pub fn start_cheat_block_number_global(&mut self, block_number: u64) {
method start_cheat_block_number (line 38) | pub fn start_cheat_block_number(
method stop_cheat_block_number (line 46) | pub fn stop_cheat_block_number(&mut self, contract_address: ContractAddr...
method stop_cheat_block_number_global (line 56) | pub fn stop_cheat_block_number_global(&mut self) {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_timestamp.rs
method cheat_block_timestamp (line 9) | pub fn cheat_block_timestamp(
method start_cheat_block_timestamp_global (line 28) | pub fn start_cheat_block_timestamp_global(&mut self, timestamp: u64) {
method start_cheat_block_timestamp (line 38) | pub fn start_cheat_block_timestamp(
method stop_cheat_block_timestamp (line 46) | pub fn stop_cheat_block_timestamp(&mut self, contract_address: ContractA...
method stop_cheat_block_timestamp_global (line 56) | pub fn stop_cheat_block_timestamp_global(&mut self) {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_caller_address.rs
method cheat_caller_address (line 7) | pub fn cheat_caller_address(
method start_cheat_caller_address_global (line 23) | pub fn start_cheat_caller_address_global(&mut self, caller_address: Cont...
method start_cheat_caller_address (line 30) | pub fn start_cheat_caller_address(
method stop_cheat_caller_address (line 38) | pub fn stop_cheat_caller_address(&mut self, target: ContractAddress) {
method stop_cheat_caller_address_global (line 45) | pub fn stop_cheat_caller_address_global(&mut self) {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_execution_info.rs
type CheatArguments (line 10) | pub struct CheatArguments<T> {
type Operation (line 17) | pub enum Operation<T> {
type ResourceBounds (line 27) | pub struct ResourceBounds {
type TxInfoMock (line 34) | pub struct TxInfoMock {
type BlockInfoMock (line 52) | pub struct BlockInfoMock {
type ExecutionInfoMock (line 59) | pub struct ExecutionInfoMock {
type TxInfoMockOperations (line 67) | pub struct TxInfoMockOperations {
type BlockInfoMockOperations (line 85) | pub struct BlockInfoMockOperations {
type ExecutionInfoMockOperations (line 92) | pub struct ExecutionInfoMockOperations {
method get_cheated_execution_info_for_contract (line 126) | pub fn get_cheated_execution_info_for_contract(
method cheat_execution_info (line 135) | pub fn cheat_execution_info(&mut self, execution_info_mock: ExecutionInf...
method progress_cheated_execution_info (line 176) | pub fn progress_cheated_execution_info(&mut self, address: ContractAddre...
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_sequencer_address.rs
method cheat_sequencer_address (line 9) | pub fn cheat_sequencer_address(
method start_cheat_sequencer_address (line 28) | pub fn start_cheat_sequencer_address(
method start_cheat_sequencer_address_global (line 36) | pub fn start_cheat_sequencer_address_global(&mut self, sequencer_address...
method stop_cheat_sequencer_address (line 46) | pub fn stop_cheat_sequencer_address(&mut self, contract_address: Contrac...
method stop_cheat_sequencer_address_global (line 56) | pub fn stop_cheat_sequencer_address_global(&mut self) {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/declare.rs
type DeclareResult (line 18) | pub enum DeclareResult {
function declare (line 23) | pub fn declare(
function get_class_hash (line 66) | pub fn get_class_hash(sierra_class: &SierraClass) -> Result<ClassHash> {
function get_contract_class (line 70) | fn get_contract_class(contract_artifact: &StarknetContractArtifacts) -> ...
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/generate_random_felt.rs
function generate_random_felt (line 5) | pub fn generate_random_felt() -> Felt {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/get_class_hash.rs
function get_class_hash (line 8) | pub fn get_class_hash(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/l1_handler_execute.rs
function l1_handler_execute (line 9) | pub fn l1_handler_execute(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/mock_call.rs
method mock_call (line 8) | pub fn mock_call(
method start_mock_call (line 23) | pub fn start_mock_call(
method stop_mock_call (line 37) | pub fn stop_mock_call(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/mod.rs
type CheatcodeError (line 26) | pub enum CheatcodeError {
method from (line 32) | fn from(error: EnhancedHintError) -> Self {
method from (line 38) | fn from(value: CallFailure) -> Self {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/precalculate_address.rs
method precalculate_address (line 10) | pub fn precalculate_address(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/replace_bytecode.rs
method replace_class_for_contract (line 6) | pub fn replace_class_for_contract(
type ReplaceBytecodeError (line 17) | pub enum ReplaceBytecodeError {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/spy_events.rs
type Event (line 10) | pub struct Event {
method from_ordered_event (line 18) | pub fn from_ordered_event(
method get_events (line 42) | pub fn get_events(&mut self, event_offset: usize) -> Vec<Event> {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/spy_messages_to_l1.rs
type MessageToL1 (line 8) | pub struct MessageToL1 {
method from_ordered_message (line 16) | pub fn from_ordered_message(
method get_messages_to_l1 (line 38) | pub fn get_messages_to_l1(&self, message_offset: usize) -> Vec<MessageTo...
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/storage.rs
function store (line 21) | pub fn store(
function load (line 40) | pub fn load(
function normalize_storage_address (line 54) | fn normalize_storage_address(address: Felt) -> Felt {
function calculate_variable_address (line 60) | pub fn calculate_variable_address(selector: Felt, key: Option<&[Felt]>) ...
function variable_address (line 74) | pub fn variable_address(var_name: &str) -> Felt {
function selector_from_name (line 79) | pub fn selector_from_name(name: &str) -> EntryPointSelector {
function storage_key (line 84) | pub fn storage_key(storage_address: Felt) -> Result<StorageKey, anyhow::...
function map_entry_address (line 91) | pub fn map_entry_address(var_name: &str, key: &[Felt]) -> Felt {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/contracts_data.rs
type ContractName (line 15) | type ContractName = String;
type FunctionName (line 16) | type FunctionName = String;
type ContractsData (line 19) | pub struct ContractsData {
method try_from (line 33) | pub fn try_from(
method get_artifacts (line 78) | pub fn get_artifacts(&self, contract_name: &str) -> Option<&StarknetCo...
method get_class_hash (line 85) | pub fn get_class_hash(&self, contract_name: &str) -> Option<&ClassHash> {
method get_source_sierra_path (line 92) | pub fn get_source_sierra_path(&self, contract_name: &str) -> Option<&U...
method get_contract_name (line 99) | pub fn get_contract_name(&self, class_hash: &ClassHash) -> Option<&Con...
method get_function_name (line 104) | pub fn get_function_name(
method is_fork_class_hash (line 112) | pub fn is_fork_class_hash(&self, class_hash: &ClassHash) -> bool {
type ContractData (line 26) | pub struct ContractData {
function build_name_selector_map (line 122) | pub fn build_name_selector_map(abi: Vec<AbiEntry>) -> HashMap<EntryPoint...
function add_simple_abi_entry_to_mapping (line 137) | fn add_simple_abi_entry_to_mapping(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/file_operations.rs
function read_txt (line 12) | pub(super) fn read_txt(path: String) -> Result<Vec<Felt>, EnhancedHintEr...
function read_json (line 25) | pub(super) fn read_json(path: String) -> Result<Vec<Felt>, EnhancedHintE...
function value_into_vec (line 44) | fn value_into_vec(value: &Value, output: &mut Vec<Felt>) -> Result<()> {
function create_file (line 81) | fn create_file(content: impl AsRef<[u8]>) -> (TempDir, String) {
function test_json_values_sorted_by_keys (line 91) | fn test_json_values_sorted_by_keys() {
function test_json_values_sorted_by_keys_invalid_data (line 128) | fn test_json_values_sorted_by_keys_invalid_data() {
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/fuzzer.rs
function generate_arg (line 7) | pub(crate) fn generate_arg(
FILE: crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs
type ForgeRuntime (line 59) | pub type ForgeRuntime<'a> = ExtendedRuntime<ForgeExtension<'a>>;
type ForgeExtension (line 61) | pub struct ForgeExtension<'a> {
type Runtime (line 70) | type Runtime = CallToBlockifierRuntime<'a>;
method handle_cheatcode (line 75) | fn handle_cheatcode(
method override_system_call (line 590) | fn override_system_call(
type SignError (line 606) | enum SignError {
function handle_declare_result (line 611) | fn handle_declare_result<T: CairoSerialize>(
function add_resources_to_top_call (line 623) | pub fn add_resources_to_top_call(
function update_top_call_resources (line 662) | pub fn update_top_call_resources(
function get_nested_calls_syscalls_vm_resources (line 717) | pub fn get_nested_calls_syscalls_vm_resources(trace: &Rc<RefCell<CallTra...
function get_nested_calls_syscalls_sierra_gas (line 730) | pub fn get_nested_calls_syscalls_sierra_gas(trace: &Rc<RefCell<CallTrace...
function get_l1_handlers_payloads_lengths (line 743) | fn get_l1_handlers_payloads_lengths(inner_calls: &[CallInfo]) -> Vec<usi...
function update_top_call_l1_resources (line 755) | pub fn update_top_call_l1_resources(runtime: &mut ForgeRuntime) {
function update_top_call_vm_trace (line 779) | pub fn update_top_call_vm_trace(runtime: &mut ForgeRuntime, cairo_runner...
function compute_and_store_execution_summary (line 793) | pub fn compute_and_store_execution_summary(trace: &Rc<RefCell<CallTrace>...
function get_execution_summary_without_nested_calls (line 826) | fn get_execution_summary_without_nested_calls(trace: &Rc<RefCell<CallTra...
function add_sierra_gas_resources (line 852) | fn add_sierra_gas_resources(top_call: &Rc<RefCell<CallTrace>>) -> u64 {
function add_execution_resources (line 863) | fn add_execution_resources(top_call: Rc<RefCell<CallTrace>>) -> Extended...
function get_all_used_resources (line 877) | pub fn get_all_used_resources(
function calculate_vm_steps_from_calls (line 898) | fn calculate_vm_steps_from_calls(top_call: &Rc<RefCell<CallTrace>>) -> u...
FILE: crates/cheatnet/src/runtime_extensions/native/call.rs
function execute_inner_call (line 15) | pub fn execute_inner_call(
FILE: crates/cheatnet/src/runtime_extensions/native/deploy.rs
function deploy (line 13) | pub fn deploy(
FILE: crates/cheatnet/src/runtime_extensions/native/execution.rs
function execute_entry_point_call_native (line 28) | pub(crate) fn execute_entry_point_call_native(
function execute_entry_point_call (line 54) | fn execute_entry_point_call(
function create_callinfo (line 126) | fn create_callinfo(
function builtin_stats_to_primitive_counters (line 211) | fn builtin_stats_to_primitive_counters(stats: BuiltinStats) -> CairoPrim...
FILE: crates/cheatnet/src/runtime_extensions/native/native_syscall_handler.rs
type CheatableNativeSyscallHandler (line 29) | pub struct CheatableNativeSyscallHandler<'a> {
type BaseSyscallResult (line 34) | pub type BaseSyscallResult<T> = Result<T, SyscallExecutionError>;
function unrecoverable_error (line 38) | pub fn unrecoverable_error(&mut self) -> Option<SyscallExecutionError> {
function pre_execute_syscall (line 45) | fn pre_execute_syscall(
function execute_inner_call (line 103) | fn execute_inner_call(
function handle_error (line 141) | fn handle_error(&mut self, remaining_gas: &mut u64, error: SyscallExecut...
method get_block_hash (line 172) | fn get_block_hash(
method get_execution_info (line 206) | fn get_execution_info(&mut self, remaining_gas: &mut u64) -> SyscallResu...
method get_execution_info_v2 (line 212) | fn get_execution_info_v2(&mut self, remaining_gas: &mut u64) -> SyscallR...
method get_execution_info_v3 (line 339) | fn get_execution_info_v3(&mut self, remaining_gas: &mut u64) -> SyscallR...
method deploy (line 467) | fn deploy(
method replace_class (line 505) | fn replace_class(&mut self, class_hash: Felt, remaining_gas: &mut u64) -...
method library_call (line 511) | fn library_call(
method call_contract (line 566) | fn call_contract(
method storage_read (line 641) | fn storage_read(
method storage_write (line 651) | fn storage_write(
method emit_event (line 662) | fn emit_event(
method send_message_to_l1 (line 694) | fn send_message_to_l1(
method keccak (line 726) | fn keccak(&mut self, input: &[u64], remaining_gas: &mut u64) -> SyscallR...
method secp256k1_new (line 730) | fn secp256k1_new(
method secp256k1_add (line 740) | fn secp256k1_add(
method secp256k1_mul (line 750) | fn secp256k1_mul(
method secp256k1_get_point_from_x (line 760) | fn secp256k1_get_point_from_x(
method secp256k1_get_xy (line 770) | fn secp256k1_get_xy(
method secp256r1_new (line 779) | fn secp256r1_new(
method secp256r1_add (line 789) | fn secp256r1_add(
method secp256r1_mul (line 799) | fn secp256r1_mul(
method secp256r1_get_point_from_x (line 809) | fn secp256r1_get_point_from_x(
method secp256r1_get_xy (line 819) | fn secp256r1_get_xy(
method sha256_process_block (line 828) | fn sha256_process_block(
method get_class_hash_at (line 838) | fn get_class_hash_at(
method meta_tx_v0 (line 848) | fn meta_tx_v0(
FILE: crates/cheatnet/src/state.rs
type CheatSpan (line 37) | pub enum CheatSpan {
type ExtendedStateReader (line 43) | pub struct ExtendedStateReader {
method predeploy_contracts (line 49) | pub fn predeploy_contracts(&mut self) {
method predeploy_contract (line 60) | fn predeploy_contract(&mut self, contract: PredeployedContract) {
method get_chain_id (line 158) | pub fn get_chain_id(&self) -> anyhow::Result<Option<ChainId>> {
type BlockInfoReader (line 82) | pub trait BlockInfoReader {
method get_block_info (line 83) | fn get_block_info(&mut self) -> StateResult<BlockInfo>;
method get_block_info (line 87) | fn get_block_info(&mut self) -> StateResult<BlockInfo> {
method get_storage_at (line 97) | fn get_storage_at(
method get_nonce_at (line 113) | fn get_nonce_at(&self, contract_address: ContractAddress) -> StateResult...
method get_class_hash_at (line 125) | fn get_class_hash_at(&self, contract_address: ContractAddress) -> StateR...
method get_compiled_class (line 137) | fn get_compiled_class(&self, class_hash: ClassHash) -> StateResult<Runna...
method get_compiled_class_hash (line 149) | fn get_compiled_class_hash(&self, class_hash: ClassHash) -> StateResult<...
type CheatStatus (line 167) | pub enum CheatStatus<T> {
function decrement_cheat_span (line 174) | pub fn decrement_cheat_span(&mut self) {
function as_value (line 187) | pub fn as_value(&self) -> Option<T>
type CheatedTxInfo (line 199) | pub struct CheatedTxInfo {
method is_mocked (line 218) | pub fn is_mocked(&self) -> bool {
type CheatedData (line 224) | pub struct CheatedData {
type CheatnetState (line 233) | pub struct CheatnetState {
method create_cheated_data (line 289) | pub fn create_cheated_data(&mut self, contract_address: ContractAddres...
method get_cheated_data (line 326) | pub fn get_cheated_data(&mut self, contract_address: ContractAddress) ...
method increment_deploy_salt_base (line 338) | pub fn increment_deploy_salt_base(&mut self) {
method set_next_deploy_at_address (line 342) | pub fn set_next_deploy_at_address(&mut self, address: ContractAddress) {
method next_address_for_deployment (line 346) | pub fn next_address_for_deployment(&mut self) -> Option<ContractAddres...
method set_next_syscall_from_cheatcode (line 350) | pub fn set_next_syscall_from_cheatcode(&mut self) {
method take_next_syscall_from_cheatcode (line 354) | pub fn take_next_syscall_from_cheatcode(&mut self) -> bool {
method get_salt (line 359) | pub fn get_salt(&self) -> ContractAddressSalt {
method get_cheated_block_number (line 364) | pub fn get_cheated_block_number(&mut self, address: ContractAddress) -...
method get_cheated_block_timestamp (line 372) | pub fn get_cheated_block_timestamp(&mut self, address: ContractAddress...
method get_cheated_sequencer_address (line 380) | pub fn get_cheated_sequencer_address(
method get_cheated_caller_address (line 391) | pub fn get_cheated_caller_address(
method update_cheats (line 400) | pub fn update_cheats(&mut self, address: &ContractAddress) {
method update_fuzzer_args (line 404) | pub fn update_fuzzer_args(&mut self, arg: String) {
method register_error (line 408) | pub fn register_error(&mut self, class_hash: ClassHash, pcs: Vec<usize...
method clear_error (line 412) | pub fn clear_error(&mut self, class_hash: ClassHash) {
type EncounteredErrors (line 253) | pub type EncounteredErrors = IndexMap<ClassHash, Vec<usize>>;
method default (line 256) | fn default() -> Self {
FILE: crates/cheatnet/src/sync_client.rs
type SyncClient (line 12) | pub struct SyncClient {
method new (line 20) | pub fn new(url: Url, block_number: BlockNumber) -> Self {
method chain_id (line 28) | pub fn chain_id(&self) -> Result<Felt, ProviderError> {
method get_block_with_tx_hashes (line 32) | pub fn get_block_with_tx_hashes(
method get_storage_at (line 38) | pub fn get_storage_at(&self, contract_address: Felt, key: Felt) -> Res...
method get_nonce (line 51) | pub fn get_nonce(&self, contract_address: Felt) -> Result<Felt, Provid...
method get_class_hash_at (line 55) | pub fn get_class_hash_at(&self, contract_address: Felt) -> Result<Felt...
method get_class (line 62) | pub fn get_class(&self, class_hash: Felt) -> Result<ContractClass, Pro...
method sync (line 66) | fn sync<F: Future>(&self, future: F) -> F::Output {
FILE: crates/cheatnet/src/trace_data.rs
type TraceData (line 24) | pub struct TraceData {
method enter_nested_call (line 75) | pub fn enter_nested_call(&mut self, entry_point: CallEntryPoint, cheat...
method set_class_hash_for_current_call (line 90) | pub fn set_class_hash_for_current_call(&mut self, class_hash: ClassHas...
method set_vm_trace_for_current_call (line 95) | pub fn set_vm_trace_for_current_call(&mut self, vm_trace: Vec<Relocate...
method update_current_call_result (line 100) | pub fn update_current_call_result(&mut self, result: CallResult) {
method clear_current_call_events_and_messages (line 105) | pub fn clear_current_call_events_and_messages(&mut self) {
method update_current_call (line 116) | pub fn update_current_call(
method exit_nested_call (line 145) | pub fn exit_nested_call(&mut self) {
method add_deploy_without_constructor_node (line 149) | pub fn add_deploy_without_constructor_node(&mut self) {
type NotEmptyCallStack (line 30) | pub struct NotEmptyCallStack(Vec<CallStackElement>);
method from (line 160) | pub fn from(elem: Rc<RefCell<CallTrace>>) -> Self {
method push (line 167) | pub fn push(&mut self, elem: Rc<RefCell<CallTrace>>, cheated_data: Che...
method top (line 174) | pub fn top(&mut self) -> Rc<RefCell<CallTrace>> {
method top_cheated_data (line 179) | pub fn top_cheated_data(&mut self) -> CheatedData {
method pop (line 184) | fn pop(&mut self) -> CallStackElement {
method size (line 190) | pub fn size(&self) -> usize {
method borrow_full_trace (line 195) | pub fn borrow_full_trace(&self) -> Ref<'_, CallTrace> {
type CallStackElement (line 33) | struct CallStackElement {
type CallTrace (line 40) | pub struct CallTrace {
method default_successful_call (line 201) | pub(crate) fn default_successful_call() -> Self {
method get_total_used_syscalls (line 219) | pub fn get_total_used_syscalls(&self) -> SyscallUsageMap {
type CallTraceNode (line 63) | pub enum CallTraceNode {
method extract_entry_point_call (line 229) | pub fn extract_entry_point_call(&self) -> Option<&Rc<RefCell<CallTrace...
type GasReportData (line 69) | pub struct GasReportData {
method new (line 240) | pub fn new(execution_summary: ExecutionSummary) -> Self {
method get_gas (line 247) | pub fn get_gas(&self) -> GasVector {
method serialize (line 258) | fn serialize(&self, output: &mut BufferWriter) {
FILE: crates/cheatnet/tests/builtins/panic_call.rs
function call_contract_failed (line 15) | fn call_contract_failed() {
function call_contract_panic (line 42) | fn call_contract_panic() {
function call_proxied_contract_bytearray_panic (line 72) | fn call_proxied_contract_bytearray_panic() {
function call_proxied_contract_felts_panic (line 118) | fn call_proxied_contract_felts_panic(input: &[Felt], expected_panic: &[F...
FILE: crates/cheatnet/tests/builtins/segment_arena.rs
function segment_arena_simple (line 8) | fn segment_arena_simple() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_account_contract_address.rs
type CheatAccountContractAddressTrait (line 8) | trait CheatAccountContractAddressTrait {
method cheat_account_contract_address (line 9) | fn cheat_account_contract_address(
method start_cheat_account_contract_address (line 15) | fn start_cheat_account_contract_address(&mut self, target: ContractAdd...
method stop_cheat_account_contract_address (line 16) | fn stop_cheat_account_contract_address(&mut self, target: ContractAddr...
method cheat_account_contract_address (line 20) | fn cheat_account_contract_address(
method start_cheat_account_contract_address (line 33) | fn start_cheat_account_contract_address(&mut self, target: ContractAdd...
method stop_cheat_account_contract_address (line 38) | fn stop_cheat_account_contract_address(&mut self, target: ContractAddr...
function cheat_account_contract_address_simple (line 45) | fn cheat_account_contract_address_simple() {
function cheat_account_contract_address_stop (line 60) | fn cheat_account_contract_address_stop() {
function cheat_account_contract_address_simple_with_span (line 81) | fn cheat_account_contract_address_simple_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_block_hash.rs
constant DEFAULT_BLOCK_HASH (line 13) | const DEFAULT_BLOCK_HASH: u64 = 0;
constant BLOCK_NUMBER (line 14) | const BLOCK_NUMBER: u64 = 123;
type CheatBlockHashTrait (line 16) | trait CheatBlockHashTrait {
method cheat_block_hash (line 17) | fn cheat_block_hash(
method start_cheat_block_hash (line 24) | fn start_cheat_block_hash(
method stop_cheat_block_hash (line 30) | fn stop_cheat_block_hash(&mut self, contract_address: ContractAddress,...
method cheat_block_hash (line 34) | fn cheat_block_hash(
method start_cheat_block_hash (line 51) | fn start_cheat_block_hash(
method stop_cheat_block_hash (line 61) | fn stop_cheat_block_hash(&mut self, contract_address: ContractAddress,...
function cheat_block_hash_simple (line 68) | fn cheat_block_hash_simple() {
function cheat_block_hash_in_constructor (line 85) | fn cheat_block_hash_in_constructor() {
function cheat_block_hash_stop (line 103) | fn cheat_block_hash_stop() {
function cheat_block_hash_double (line 124) | fn cheat_block_hash_double() {
function cheat_block_hash_proxy (line 146) | fn cheat_block_hash_proxy() {
function cheat_block_hash_library_call (line 177) | fn cheat_block_hash_library_call() {
function cheat_block_hash_all_simple (line 209) | fn cheat_block_hash_all_simple() {
function cheat_block_hash_all_then_one (line 224) | fn cheat_block_hash_all_then_one() {
function cheat_block_hash_one_then_all (line 241) | fn cheat_block_hash_one_then_all() {
function cheat_block_hash_all_stop (line 258) | fn cheat_block_hash_all_stop() {
function cheat_block_hash_multiple (line 292) | fn cheat_block_hash_multiple() {
function cheat_block_hash_simple_with_span (line 339) | fn cheat_block_hash_simple_with_span() {
function cheat_block_hash_proxy_with_span (line 366) | fn cheat_block_hash_proxy_with_span() {
function cheat_block_hash_in_constructor_with_span (line 390) | fn cheat_block_hash_in_constructor_with_span() {
function cheat_block_hash_no_constructor_with_span (line 423) | fn cheat_block_hash_no_constructor_with_span() {
function cheat_block_hash_override_span (line 452) | fn cheat_block_hash_override_span() {
function cheat_block_hash_library_call_with_span (line 494) | fn cheat_block_hash_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_block_number.rs
type CheatBlockNumberTrait (line 11) | trait CheatBlockNumberTrait {
method cheat_block_number (line 12) | fn cheat_block_number(
method start_cheat_block_number (line 18) | fn start_cheat_block_number(&mut self, contract_address: ContractAddre...
method stop_cheat_block_number (line 19) | fn stop_cheat_block_number(&mut self, contract_address: ContractAddress);
method cheat_block_number (line 23) | fn cheat_block_number(
method start_cheat_block_number (line 33) | fn start_cheat_block_number(&mut self, contract_address: ContractAddre...
method stop_cheat_block_number (line 38) | fn stop_cheat_block_number(&mut self, contract_address: ContractAddres...
function cheat_block_number_simple (line 45) | fn cheat_block_number_simple() {
function cheat_block_number_with_other_syscall (line 57) | fn cheat_block_number_with_other_syscall() {
function cheat_block_number_in_constructor (line 69) | fn cheat_block_number_in_constructor() {
function cheat_block_number_stop (line 86) | fn cheat_block_number_stop() {
function cheat_block_number_double (line 107) | fn cheat_block_number_double() {
function cheat_block_number_proxy (line 129) | fn cheat_block_number_proxy() {
function cheat_block_number_library_call (line 153) | fn cheat_block_number_library_call() {
function cheat_block_number_all_simple (line 177) | fn cheat_block_number_all_simple() {
function cheat_block_number_all_then_one (line 189) | fn cheat_block_number_all_then_one() {
function cheat_block_number_one_then_all (line 202) | fn cheat_block_number_one_then_all() {
function cheat_block_number_all_stop (line 215) | fn cheat_block_number_all_stop() {
function cheat_block_number_multiple (line 244) | fn cheat_block_number_multiple() {
function cheat_block_number_simple_with_span (line 287) | fn cheat_block_number_simple_with_span() {
function cheat_block_number_proxy_with_span (line 313) | fn cheat_block_number_proxy_with_span() {
function cheat_block_number_in_constructor_with_span (line 336) | fn cheat_block_number_in_constructor_with_span() {
function cheat_block_number_no_constructor_with_span (line 368) | fn cheat_block_number_no_constructor_with_span() {
function cheat_block_number_override_span (line 396) | fn cheat_block_number_override_span() {
function cheat_block_number_library_call_with_span (line 432) | fn cheat_block_number_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_block_timestamp.rs
constant DEFAULT_BLOCK_TIMESTAMP (line 10) | const DEFAULT_BLOCK_TIMESTAMP: u64 = 0;
type CheatBlockTimestampTrait (line 12) | trait CheatBlockTimestampTrait {
method cheat_block_timestamp (line 13) | fn cheat_block_timestamp(
method start_cheat_block_timestamp (line 19) | fn start_cheat_block_timestamp(&mut self, contract_address: ContractAd...
method stop_cheat_block_timestamp (line 20) | fn stop_cheat_block_timestamp(&mut self, contract_address: ContractAdd...
method cheat_block_timestamp (line 24) | fn cheat_block_timestamp(
method start_cheat_block_timestamp (line 34) | fn start_cheat_block_timestamp(&mut self, contract_address: ContractAd...
method stop_cheat_block_timestamp (line 39) | fn stop_cheat_block_timestamp(&mut self, contract_address: ContractAdd...
function cheat_block_timestamp_simple (line 46) | fn cheat_block_timestamp_simple() {
function cheat_block_timestamp_with_other_syscall (line 58) | fn cheat_block_timestamp_with_other_syscall() {
function cheat_block_timestamp_in_constructor (line 71) | fn cheat_block_timestamp_in_constructor() {
function cheat_block_timestamp_stop (line 89) | fn cheat_block_timestamp_stop() {
function cheat_block_timestamp_double (line 110) | fn cheat_block_timestamp_double() {
function cheat_block_timestamp_proxy (line 132) | fn cheat_block_timestamp_proxy() {
function cheat_block_timestamp_library_call (line 155) | fn cheat_block_timestamp_library_call() {
function cheat_block_timestamp_all_simple (line 179) | fn cheat_block_timestamp_all_simple() {
function cheat_block_timestamp_all_then_one (line 193) | fn cheat_block_timestamp_all_then_one() {
function cheat_block_timestamp_one_then_all (line 209) | fn cheat_block_timestamp_one_then_all() {
function cheat_block_timestamp_all_stop (line 225) | fn cheat_block_timestamp_all_stop() {
function cheat_block_timestamp_multiple (line 258) | fn cheat_block_timestamp_multiple() {
function cheat_block_timestamp_simple_with_span (line 301) | fn cheat_block_timestamp_simple_with_span() {
function cheat_block_timestamp_proxy_with_span (line 327) | fn cheat_block_timestamp_proxy_with_span() {
function cheat_block_timestamp_in_constructor_with_span (line 350) | fn cheat_block_timestamp_in_constructor_with_span() {
function cheat_block_timestamp_no_constructor_with_span (line 382) | fn cheat_block_timestamp_no_constructor_with_span() {
function cheat_block_timestamp_override_span (line 410) | fn cheat_block_timestamp_override_span() {
function cheat_block_timestamp_library_call_with_span (line 446) | fn cheat_block_timestamp_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_caller_address.rs
type CheatCallerAddressTrait (line 17) | trait CheatCallerAddressTrait {
method cheat_caller_address (line 18) | fn cheat_caller_address(
method start_cheat_caller_address (line 24) | fn start_cheat_caller_address(&mut self, contract_address: ContractAdd...
method stop_cheat_caller_address (line 25) | fn stop_cheat_caller_address(&mut self, contract_address: ContractAddr...
method cheat_caller_address (line 29) | fn cheat_caller_address(
method start_cheat_caller_address (line 42) | fn start_cheat_caller_address(&mut self, contract_address: ContractAdd...
method stop_cheat_caller_address (line 47) | fn stop_cheat_caller_address(&mut self, contract_address: ContractAddr...
function cheat_caller_address_simple (line 54) | fn cheat_caller_address_simple() {
function cheat_caller_address_with_other_syscall (line 68) | fn cheat_caller_address_with_other_syscall() {
function cheat_caller_address_in_constructor (line 82) | fn cheat_caller_address_in_constructor() {
function cheat_caller_address_stop (line 101) | fn cheat_caller_address_stop() {
function cheat_caller_address_double (line 122) | fn cheat_caller_address_double() {
function cheat_caller_address_proxy (line 144) | fn cheat_caller_address_proxy() {
function cheat_caller_address_library_call (line 167) | fn cheat_caller_address_library_call() {
function cheat_caller_address_all (line 191) | fn cheat_caller_address_all() {
function cheat_caller_address_multiple (line 223) | fn cheat_caller_address_multiple() {
function cheat_caller_address_all_then_one (line 262) | fn cheat_caller_address_all_then_one() {
function cheat_caller_address_one_then_all (line 279) | fn cheat_caller_address_one_then_all() {
function cheat_caller_address_cairo0_callback (line 296) | fn cheat_caller_address_cairo0_callback() {
function cheat_caller_address_simple_with_span (line 340) | fn cheat_caller_address_simple_with_span() {
function cheat_caller_address_proxy_with_span (line 366) | fn cheat_caller_address_proxy_with_span() {
function cheat_caller_address_override_span (line 390) | fn cheat_caller_address_override_span() {
function cheat_caller_address_constructor_with_span (line 426) | fn cheat_caller_address_constructor_with_span() {
function cheat_caller_address_library_call_with_span (line 457) | fn cheat_caller_address_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_execution_info.rs
type CheatTransactionHashTrait (line 14) | trait CheatTransactionHashTrait {
method cheat_transaction_hash (line 15) | fn cheat_transaction_hash(
method start_cheat_transaction_hash (line 21) | fn start_cheat_transaction_hash(
method stop_cheat_transaction_hash (line 26) | fn stop_cheat_transaction_hash(&mut self, contract_address: ContractAd...
method start_cheat_transaction_hash_global (line 27) | fn start_cheat_transaction_hash_global(&mut self, transaction_hash: Fe...
method stop_cheat_transaction_hash_global (line 28) | fn stop_cheat_transaction_hash_global(&mut self);
method cheat_transaction_hash (line 31) | fn cheat_transaction_hash(
method start_cheat_transaction_hash (line 49) | fn start_cheat_transaction_hash(
method stop_cheat_transaction_hash (line 66) | fn stop_cheat_transaction_hash(&mut self, contract_address: ContractAd...
method start_cheat_transaction_hash_global (line 75) | fn start_cheat_transaction_hash_global(&mut self, transaction_hash: Fe...
method stop_cheat_transaction_hash_global (line 83) | fn stop_cheat_transaction_hash_global(&mut self) {
type CheatTransactionInfoTrait (line 93) | trait CheatTransactionInfoTrait {
method cheat_transaction_info (line 94) | fn cheat_transaction_info(&mut self, tx_info_mock: TxInfoMockOperations);
method cheat_transaction_info (line 98) | fn cheat_transaction_info(&mut self, tx_info_mock: TxInfoMockOperation...
type TxInfoTrait (line 109) | trait TxInfoTrait {
method assert_tx_info (line 110) | fn assert_tx_info(&mut self, contract_address: &ContractAddress, expec...
method get_tx_info (line 111) | fn get_tx_info(&mut self, contract_address: &ContractAddress) -> TxInfo;
method assert_tx_info (line 115) | fn assert_tx_info(&mut self, contract_address: &ContractAddress, expec...
method get_tx_info (line 120) | fn get_tx_info(&mut self, contract_address: &ContractAddress) -> TxInfo {
type TxInfo (line 128) | struct TxInfo {
method apply_mock_fields (line 146) | fn apply_mock_fields(tx_info_mock: &TxInfoMockOperations, tx_info: &Se...
method deserialize (line 180) | fn deserialize(data: &[Felt]) -> Self {
function cheat_transaction_hash_simple (line 186) | fn cheat_transaction_hash_simple() {
function start_cheat_execution_info_multiple_times (line 204) | fn start_cheat_execution_info_multiple_times() {
function cheat_transaction_hash_start_stop (line 306) | fn cheat_transaction_hash_start_stop() {
function cheat_transaction_hash_stop_no_effect (line 328) | fn cheat_transaction_hash_stop_no_effect() {
function cheat_transaction_hash_with_other_syscall (line 341) | fn cheat_transaction_hash_with_other_syscall() {
function cheat_transaction_hash_in_constructor (line 356) | fn cheat_transaction_hash_in_constructor() {
function cheat_transaction_hash_proxy (line 377) | fn cheat_transaction_hash_proxy() {
function cheat_transaction_hash_library_call (line 401) | fn cheat_transaction_hash_library_call() {
function cheat_transaction_hash_all_simple (line 423) | fn cheat_transaction_hash_all_simple() {
function cheat_transaction_hash_all_then_one (line 441) | fn cheat_transaction_hash_all_then_one() {
function cheat_transaction_hash_one_then_all (line 461) | fn cheat_transaction_hash_one_then_all() {
function cheat_transaction_hash_all_stop (line 481) | fn cheat_transaction_hash_all_stop() {
function cheat_transaction_hash_multiple (line 499) | fn cheat_transaction_hash_multiple() {
function cheat_transaction_hash_simple_with_span (line 533) | fn cheat_transaction_hash_simple_with_span() {
function cheat_transaction_hash_proxy_with_span (line 556) | fn cheat_transaction_hash_proxy_with_span() {
function cheat_transaction_hash_in_constructor_with_span (line 579) | fn cheat_transaction_hash_in_constructor_with_span() {
function cheat_transaction_hash_no_constructor_with_span (line 611) | fn cheat_transaction_hash_no_constructor_with_span() {
function cheat_transaction_hash_override_span (line 639) | fn cheat_transaction_hash_override_span() {
function cheat_transaction_hash_library_call_with_span (line 669) | fn cheat_transaction_hash_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/cheat_sequencer_address.rs
type CheatSequencerAddressTrait (line 11) | trait CheatSequencerAddressTrait {
method cheat_sequencer_address (line 12) | fn cheat_sequencer_address(
method start_cheat_sequencer_address (line 18) | fn start_cheat_sequencer_address(
method stop_cheat_sequencer_address (line 23) | fn stop_cheat_sequencer_address(&mut self, contract_address: ContractA...
method cheat_sequencer_address (line 27) | fn cheat_sequencer_address(
method start_cheat_sequencer_address (line 40) | fn start_cheat_sequencer_address(
method stop_cheat_sequencer_address (line 51) | fn stop_cheat_sequencer_address(&mut self, contract_address: ContractA...
function cheat_sequencer_address_simple (line 58) | fn cheat_sequencer_address_simple() {
function cheat_sequencer_address_with_other_syscall (line 72) | fn cheat_sequencer_address_with_other_syscall() {
function cheat_sequencer_address_in_constructor (line 86) | fn cheat_sequencer_address_in_constructor() {
function cheat_sequencer_address_stop (line 106) | fn cheat_sequencer_address_stop() {
function cheat_sequencer_address_double (line 129) | fn cheat_sequencer_address_double() {
function cheat_sequencer_address_proxy (line 151) | fn cheat_sequencer_address_proxy() {
function cheat_sequencer_address_library_call (line 174) | fn cheat_sequencer_address_library_call() {
function cheat_sequencer_address_all_simple (line 199) | fn cheat_sequencer_address_all_simple() {
function cheat_sequencer_address_all_then_one (line 215) | fn cheat_sequencer_address_all_then_one() {
function cheat_sequencer_address_one_then_all (line 233) | fn cheat_sequencer_address_one_then_all() {
function cheat_sequencer_address_all_stop (line 250) | fn cheat_sequencer_address_all_stop() {
function cheat_sequencer_address_multiple (line 284) | fn cheat_sequencer_address_multiple() {
function cheat_sequencer_address_simple_with_span (line 323) | fn cheat_sequencer_address_simple_with_span() {
function cheat_sequencer_address_proxy_with_span (line 349) | fn cheat_sequencer_address_proxy_with_span() {
function cheat_sequencer_address_in_constructor_with_span (line 378) | fn cheat_sequencer_address_in_constructor_with_span() {
function cheat_sequencer_address_no_constructor_with_span (line 412) | fn cheat_sequencer_address_no_constructor_with_span() {
function cheat_sequencer_address_override_span (line 442) | fn cheat_sequencer_address_override_span() {
function cheat_sequencer_address_library_call_with_span (line 478) | fn cheat_sequencer_address_library_call_with_span() {
FILE: crates/cheatnet/tests/cheatcodes/declare.rs
function declare_simple (line 10) | fn declare_simple() {
function declare_multiple (line 26) | fn declare_multiple() {
function declare_same_contract (line 43) | fn declare_same_contract() {
function declare_non_existent (line 64) | fn declare_non_existent() {
FILE: crates/cheatnet/tests/cheatcodes/generate_random_felt.rs
function test_generate_random_felt_range_and_uniqueness (line 7) | fn test_generate_random_felt_range_and_uniqueness() {
FILE: crates/cheatnet/tests/cheatcodes/get_class_hash.rs
function get_class_hash_simple (line 12) | fn get_class_hash_simple() {
function get_class_hash_upgrade (line 29) | fn get_class_hash_upgrade() {
FILE: crates/cheatnet/tests/cheatcodes/library_call.rs
function global_cheat_works_with_library_call_from_test (line 12) | fn global_cheat_works_with_library_call_from_test() {
function cheat_with_finite_span_works_with_library_call_from_test (line 42) | fn cheat_with_finite_span_works_with_library_call_from_test() {
function cheat_with_indefinite_span_works_with_library_call_from_test (line 78) | fn cheat_with_indefinite_span_works_with_library_call_from_test() {
function global_cheat_works_with_library_call_from_actual_contract (line 112) | fn global_cheat_works_with_library_call_from_actual_contract() {
function cheat_with_finite_span_works_with_library_call_from_actual_contract (line 143) | fn cheat_with_finite_span_works_with_library_call_from_actual_contract() {
function cheat_with_indefinite_span_works_with_library_call_from_actual_contract (line 175) | fn cheat_with_indefinite_span_works_with_library_call_from_actual_contra...
FILE: crates/cheatnet/tests/cheatcodes/load.rs
type LoadTrait (line 10) | trait LoadTrait {
method load (line 11) | fn load(&mut self, target: ContractAddress, storage_address: Felt) -> ...
method load (line 15) | fn load(&mut self, target: ContractAddress, storage_address: Felt) -> ...
function load_simple_state (line 21) | fn load_simple_state() {
function load_state_map_simple_value (line 42) | fn load_state_map_simple_value() {
FILE: crates/cheatnet/tests/cheatcodes/meta_tx_v0.rs
function meta_tx_v0_with_cheat_caller_address (line 9) | fn meta_tx_v0_with_cheat_caller_address() {
function meta_tx_v0_with_cheat_block_number (line 35) | fn meta_tx_v0_with_cheat_block_number() {
function meta_tx_v0_with_cheat_block_timestamp (line 61) | fn meta_tx_v0_with_cheat_block_timestamp() {
function meta_tx_v0_with_cheat_sequencer_address (line 87) | fn meta_tx_v0_with_cheat_sequencer_address() {
function meta_tx_v0_with_cheat_block_hash (line 113) | fn meta_tx_v0_with_cheat_block_hash() {
function meta_tx_v0_verify_tx_context_modification (line 145) | fn meta_tx_v0_verify_tx_context_modification() {
FILE: crates/cheatnet/tests/cheatcodes/mock_call.rs
type MockCallTrait (line 19) | trait MockCallTrait {
method mock_call (line 20) | fn mock_call(
method stop_mock_call (line 27) | fn stop_mock_call(&mut self, contract_address: &ContractAddress, funct...
method mock_call (line 31) | fn mock_call(
method stop_mock_call (line 48) | fn stop_mock_call(&mut self, contract_address: &ContractAddress, funct...
function mock_call_simple (line 56) | fn mock_call_simple() {
function mock_call_stop (line 84) | fn mock_call_stop() {
function mock_call_stop_no_start (line 124) | fn mock_call_stop_no_start() {
function mock_call_double (line 151) | fn mock_call_double() {
function mock_call_double_call (line 194) | fn mock_call_double_call() {
function mock_call_proxy (line 232) | fn mock_call_proxy() {
function mock_call_proxy_with_other_syscall (line 276) | fn mock_call_proxy_with_other_syscall() {
function mock_call_inner_call_no_effect (line 320) | fn mock_call_inner_call_no_effect() {
function mock_call_library_call_no_effect (line 360) | fn mock_call_library_call_no_effect() {
function mock_call_before_deployment (line 403) | fn mock_call_before_deployment() {
function mock_call_not_implemented (line 444) | fn mock_call_not_implemented() {
function mock_call_in_constructor (line 476) | fn mock_call_in_constructor() {
function mock_call_two_methods (line 518) | fn mock_call_two_methods() {
function mock_call_nonexisting_contract (line 563) | fn mock_call_nonexisting_contract() {
function mock_call_simple_with_span (line 586) | fn mock_call_simple_with_span() {
function mock_call_proxy_with_span (line 613) | fn mock_call_proxy_with_span() {
function mock_call_in_constructor_with_span (line 649) | fn mock_call_in_constructor_with_span() {
function mock_call_twice_in_function (line 686) | fn mock_call_twice_in_function() {
function mock_call_override_span (line 721) | fn mock_call_override_span() {
FILE: crates/cheatnet/tests/cheatcodes/multiple_writes_same_storage.rs
type StoreTrait (line 11) | trait StoreTrait {
method store (line 12) | fn store(&mut self, target: ContractAddress, storage_address: Felt, va...
method load (line 13) | fn load(&mut self, target: ContractAddress, storage_address: Felt) -> ...
method store (line 17) | fn store(&mut self, target: ContractAddress, storage_address: Felt, va...
method load (line 27) | fn load(&mut self, target: ContractAddress, storage_address: Felt) -> ...
function same_storage_access_call_contract (line 33) | fn same_storage_access_call_contract() {
function same_storage_access_store (line 62) | fn same_storage_access_store() {
FILE: crates/cheatnet/tests/cheatcodes/precalculate_address.rs
function precalculate_address_simple (line 4) | fn precalculate_address_simple() {
function precalculate_address_calldata (line 22) | fn precalculate_address_calldata() {
FILE: crates/cheatnet/tests/cheatcodes/replace_bytecode.rs
type ReplaceBytecodeTrait (line 12) | trait ReplaceBytecodeTrait {
method replace_class_for_contract (line 13) | fn replace_class_for_contract(
method replace_class_for_contract (line 21) | fn replace_class_for_contract(
function fork (line 32) | fn fork() {
function override_entrypoint (line 59) | fn override_entrypoint() {
function keep_storage (line 79) | fn keep_storage() {
function allow_setting_original_class (line 103) | fn allow_setting_original_class() {
FILE: crates/cheatnet/tests/cheatcodes/spy_events.rs
type SpyTrait (line 15) | trait SpyTrait {
method get_events (line 16) | fn get_events(&mut self, id: usize) -> Vec<Event>;
method get_events (line 20) | fn get_events(&mut self, events_offset: usize) -> Vec<Event> {
function spy_events_zero_offset (line 26) | fn spy_events_zero_offset() {
function spy_events_some_offset (line 57) | fn spy_events_some_offset() {
function check_events_order (line 98) | fn check_events_order() {
function library_call_emits_event (line 150) | fn library_call_emits_event() {
function event_emitted_in_constructor (line 180) | fn event_emitted_in_constructor() {
function test_nested_calls (line 200) | fn test_nested_calls() {
function use_multiple_spies (line 254) | fn use_multiple_spies() {
function test_emitted_by_emit_events_syscall (line 317) | fn test_emitted_by_emit_events_syscall() {
function capture_cairo0_event (line 345) | fn capture_cairo0_event() {
FILE: crates/cheatnet/tests/cheatcodes/store.rs
type StoreTrait (line 11) | trait StoreTrait {
method store (line 12) | fn store(&mut self, target: ContractAddress, storage_address: Felt, va...
method store (line 16) | fn store(&mut self, target: ContractAddress, storage_address: Felt, va...
function store_simple_state (line 28) | fn store_simple_state() {
function store_state_map_simple_value (line 45) | fn store_state_map_simple_value() {
FILE: crates/cheatnet/tests/cheatcodes/test_environment.rs
type TestEnvironment (line 14) | pub struct TestEnvironment {
method new (line 20) | pub fn new() -> Self {
method declare (line 29) | pub fn declare(&mut self, contract_name: &str, contracts_data: &Contra...
method deploy (line 35) | pub fn deploy(&mut self, contract_name: &str, calldata: &[Felt]) -> Co...
method deploy_wrapper (line 44) | pub fn deploy_wrapper(&mut self, class_hash: &ClassHash, calldata: &[F...
method call_contract (line 53) | pub fn call_contract(
method library_call_contract (line 68) | pub fn library_call_contract(
method precalculate_address (line 83) | pub fn precalculate_address(
FILE: crates/cheatnet/tests/common/assertions.rs
function assert_success (line 10) | pub fn assert_success(call_contract_output: CallResult, expected_data: &...
function assert_panic (line 19) | pub fn assert_panic(call_contract_output: CallResult, expected_data: &[F...
function assert_error (line 30) | pub fn assert_error(call_contract_output: CallResult, expected_data: imp...
type ClassHashAssert (line 40) | pub trait ClassHashAssert {
method unwrap_success (line 41) | fn unwrap_success(self) -> ClassHash;
method unwrap_success (line 45) | fn unwrap_success(self) -> ClassHash {
FILE: crates/cheatnet/tests/common/cache.rs
function read_cache (line 7) | pub fn read_cache(file_pattern: &str) -> Map<String, Value> {
function purge_cache (line 25) | pub fn purge_cache(directory: &str) {
FILE: crates/cheatnet/tests/common/mod.rs
type CallResultExtended (line 49) | pub struct CallResultExtended {
function build_syscall_hint_processor (line 54) | fn build_syscall_hint_processor<'a>(
function recover_data (line 75) | pub fn recover_data(output: CallResult) -> Vec<Felt> {
function get_contracts (line 85) | pub fn get_contracts() -> ContractsData {
function deploy_contract (line 106) | pub fn deploy_contract(
function deploy (line 143) | pub fn deploy(
function deploy_helper (line 174) | fn deploy_helper(
function call_contract (line 211) | pub fn call_contract(
function library_call_contract (line 244) | pub fn library_call_contract(
function call_contract_extended_result (line 273) | pub fn call_contract_extended_result(
function call_entry_point_extended_result (line 302) | fn call_entry_point_extended_result(
function execute_entry_point_without_revert (line 340) | pub fn execute_entry_point_without_revert(
function selector_from_name (line 384) | pub fn selector_from_name(name: &str) -> EntryPointSelector {
FILE: crates/cheatnet/tests/common/state.rs
function create_cached_state (line 8) | pub fn create_cached_state() -> CachedState<ExtendedStateReader> {
function create_fork_cached_state (line 15) | pub fn create_fork_cached_state(cache_dir: &str) -> CachedState<Extended...
function create_fork_cached_state_at (line 19) | pub fn create_fork_cached_state_at(
FILE: crates/cheatnet/tests/main.rs
function init (line 11) | fn init() {
FILE: crates/cheatnet/tests/starknet/block.rs
function check_block (line 11) | fn check_block(
function block_does_not_decrease (line 75) | fn block_does_not_decrease() {
FILE: crates/cheatnet/tests/starknet/cheat_fork.rs
constant CAIRO0_TESTER_ADDRESS (line 12) | const CAIRO0_TESTER_ADDRESS: &str =
function cheat_caller_address_cairo0_contract (line 17) | fn cheat_caller_address_cairo0_contract(selector: &str) {
function cheat_block_number_cairo0_contract (line 72) | fn cheat_block_number_cairo0_contract(selector: &str) {
function cheat_block_timestamp_cairo0_contract (line 126) | fn cheat_block_timestamp_cairo0_contract(selector: &str) {
FILE: crates/cheatnet/tests/starknet/execution.rs
function test_state_reverted_in_nested_call (line 19) | fn test_state_reverted_in_nested_call() {
function test_state_not_reverted_in_top_call_when_raw_execution (line 57) | fn test_state_not_reverted_in_top_call_when_raw_execution() {
function test_state_reverted_in_top_call_when_call_entry_point (line 91) | fn test_state_reverted_in_top_call_when_call_entry_point() {
function test_state_reverted_only_in_failed_nested_call_when_raw_execution (line 129) | fn test_state_reverted_only_in_failed_nested_call_when_raw_execution() {
function test_state_reverted_in_top_and_nested_calls_when_call_entry_point (line 183) | fn test_state_reverted_in_top_and_nested_calls_when_call_entry_point() {
function test_tracked_resources (line 249) | fn test_tracked_resources() {
FILE: crates/cheatnet/tests/starknet/forking.rs
function fork_simple (line 23) | fn fork_simple() {
function try_calling_nonexistent_contract (line 65) | fn try_calling_nonexistent_contract() {
function test_forking_at_block_number (line 88) | fn test_forking_at_block_number() {
function call_forked_contract_from_other_contract (line 134) | fn call_forked_contract_from_other_contract() {
function library_call_on_forked_class_hash (line 162) | fn library_call_on_forked_class_hash() {
function call_forked_contract_from_constructor (line 209) | fn call_forked_contract_from_constructor() {
function call_forked_contract_get_block_info_via_proxy (line 242) | fn call_forked_contract_get_block_info_via_proxy() {
function call_forked_contract_get_block_info_via_libcall (line 301) | fn call_forked_contract_get_block_info_via_libcall() {
function using_specified_block_nb_is_cached (line 361) | fn using_specified_block_nb_is_cached() {
function test_cache_merging (line 442) | fn test_cache_merging() {
function test_cached_block_info_merging (line 553) | fn test_cached_block_info_merging() {
function test_calling_nonexistent_url (line 621) | fn test_calling_nonexistent_url() {
FILE: crates/cheatnet/tests/starknet/nonce.rs
function check_nonce (line 16) | fn check_nonce(
function nonce_transactions (line 34) | fn nonce_transactions() {
function nonce_declare_deploy (line 48) | fn nonce_declare_deploy() {
FILE: crates/cheatnet/tests/starknet/timestamp.rs
function check_timestamp (line 12) | fn check_timestamp(
function timestamp_does_not_decrease (line 35) | fn timestamp_does_not_decrease() {
FILE: crates/configuration/src/core.rs
function resolve_env_variables (line 6) | fn resolve_env_variables(config: serde_json::Value) -> anyhow::Result<se...
function resolve_env_variable (line 29) | fn resolve_env_variable(var: &str) -> anyhow::Result<serde_json::Value> {
function get_with_ownership (line 46) | fn get_with_ownership(config: serde_json::Value, key: &str) -> Option<se...
function get_profile (line 53) | fn get_profile(
type Profile (line 65) | pub enum Profile {
function load_config (line 71) | pub fn load_config<T: Config + Default>(
FILE: crates/configuration/src/lib.rs
constant CONFIG_FILENAME (line 11) | pub const CONFIG_FILENAME: &str = "snfoundry.toml";
type Config (line 14) | pub trait Config {
method tool_name (line 16) | fn tool_name() -> &'static str;
method from_raw (line 18) | fn from_raw(config: serde_json::Value) -> Result<Self>
method tool_name (line 159) | fn tool_name() -> &'static str {
method from_raw (line 163) | fn from_raw(config: serde_json::Value) -> Result<Self> {
method tool_name (line 248) | fn tool_name() -> &'static str {
method from_raw (line 252) | fn from_raw(config: serde_json::Value) -> Result<Self> {
function resolve_config_file (line 24) | pub fn resolve_config_file() -> Utf8PathBuf {
function load_config (line 34) | pub fn load_config<T: Config + Default>(
function search_config_upwards_relative_to (line 62) | pub fn search_config_upwards_relative_to(current_dir: &Utf8PathBuf) -> R...
function find_config_file (line 74) | pub fn find_config_file() -> Result<Utf8PathBuf> {
function find_config_in_current_dir (line 90) | fn find_config_in_current_dir() {
function find_config_in_parent_dir (line 100) | fn find_config_in_parent_dir() {
function find_config_in_parent_dir_two_levels (line 111) | fn find_config_in_parent_dir_two_levels() {
function find_config_in_parent_dir_available_in_multiple_parents (line 125) | fn find_config_in_parent_dir_available_in_multiple_parents() {
function no_config_in_current_nor_parent_dir (line 141) | fn no_config_in_current_nor_parent_dir() {
type StubConfig (line 153) | pub struct StubConfig {
function load_config_happy_case_with_profile (line 168) | fn load_config_happy_case_with_profile() {
function load_config_happy_case_default_profile (line 183) | fn load_config_happy_case_default_profile() {
function load_config_invalid_url (line 197) | fn load_config_invalid_url() {
function load_config_not_found (line 212) | fn load_config_not_found() {
type StubComplexConfig (line 225) | pub struct StubComplexConfig {
type StubComplexConfigNested (line 235) | pub struct StubComplexConfigNested {
function empty_config_works (line 258) | fn empty_config_works() {
function resolve_env_vars (line 271) | fn resolve_env_vars() {
FILE: crates/configuration/src/test_utils.rs
function copy_config_to_tempdir (line 6) | pub fn copy_config_to_tempdir(src_path: &str, additional_path: Option<&s...
FILE: crates/conversions/cairo-serde-macros/src/cairo_deserialize.rs
function derive_deserialize (line 8) | pub fn derive_deserialize(item: proc_macro::TokenStream) -> proc_macro::...
function add_trait_bounds (line 32) | fn add_trait_bounds(generics: &mut Generics) {
function call_trait_on_field (line 43) | fn call_trait_on_field(fields: &Fields) -> TokenStream {
function create_func_body (line 74) | fn create_func_body(data: &Data, span: &TokenStream) -> TokenStream {
FILE: crates/conversions/cairo-serde-macros/src/cairo_serialize.rs
function derive_serialize (line 8) | pub fn derive_serialize(item: proc_macro::TokenStream) -> proc_macro::To...
function add_trait_bounds (line 32) | fn add_trait_bounds(generics: &mut Generics) {
type Item (line 43) | enum Item {
method get_prefix (line 49) | fn get_prefix(self) -> TokenStream {
function call_trait_on_field (line 58) | fn call_trait_on_field(fields: &Fields, item: Item) -> TokenStream {
function destruct_fields (line 102) | fn destruct_fields(fields: &Fields) -> TokenStream {
function create_func_body (line 135) | fn create_func_body(data: &Data, span: &TokenStream) -> TokenStream {
FILE: crates/conversions/cairo-serde-macros/src/lib.rs
function derive_deserialize (line 5) | pub fn derive_deserialize(item: proc_macro::TokenStream) -> proc_macro::...
function derive_serialize (line 10) | pub fn derive_serialize(item: proc_macro::TokenStream) -> proc_macro::To...
FILE: crates/conversions/src/byte_array.rs
type ByteArray (line 10) | pub struct ByteArray {
method from (line 17) | fn from(value: &str) -> Self {
method serialize_with_magic (line 35) | pub fn serialize_with_magic(&self) -> Vec<Felt> {
method deserialize_with_magic (line 46) | pub fn deserialize_with_magic(value: &[Felt]) -> BufferReadResult<Byte...
method fmt (line 67) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
function extend_full_word_bytes (line 56) | fn extend_full_word_bytes(out: &mut Vec<u8>, word: &Felt) {
function extend_pending_word_bytes (line 61) | fn extend_pending_word_bytes(out: &mut Vec<u8>, word: &Felt, len: usize) {
function test_fmt_empty (line 99) | fn test_fmt_empty() {
function test_fmt_single_word (line 105) | fn test_fmt_single_word() {
function test_fmt_multiple_words (line 111) | fn test_fmt_multiple_words() {
function test_fmt_with_pending_word (line 117) | fn test_fmt_with_pending_word() {
function test_fmt_special_chars (line 123) | fn test_fmt_special_chars() {
function test_fmt_escaping_non_printable_bytes (line 139) | fn test_fmt_escaping_non_printable_bytes(input: &str, expected: &str) {
function test_fmt_mixed_ascii (line 146) | fn test_fmt_mixed_ascii() {
function test_fmt_with_newlines (line 153) | fn test_fmt_with_newlines() {
function test_fmt_multiple_newlines (line 160) | fn test_fmt_multiple_newlines() {
FILE: crates/conversions/src/class_hash.rs
method from_ (line 7) | fn from_(value: Felt) -> ClassHash {
FILE: crates/conversions/src/contract_address.rs
method from_ (line 8) | fn from_(value: Felt) -> ContractAddress {
FILE: crates/conversions/src/entrypoint_selector.rs
method from_ (line 6) | fn from_(value: Felt) -> EntryPointSelector {
FILE: crates/conversions/src/eth_address.rs
method from_ (line 6) | fn from_(value: Felt) -> EthAddress {
method from_ (line 12) | fn from_(value: EthAddress) -> Felt {
FILE: crates/conversions/src/felt.rs
method from_ (line 15) | fn from_(value: ClassHash) -> Felt {
method from_ (line 21) | fn from_(value: ContractAddress) -> Felt {
method from_ (line 27) | fn from_(value: ContractAddressSalt) -> Felt {
method from_ (line 33) | fn from_(value: Nonce) -> Felt {
method from_ (line 39) | fn from_(value: EntryPointSelector) -> Felt {
method from_ (line 45) | fn from_(value: PaddedFelt) -> Felt {
method try_from_dec_str (line 54) | fn try_from_dec_str(value: &str) -> Result<T> {
method try_from_hex_str (line 69) | fn try_from_hex_str(value: &str) -> Result<T> {
type FromShortString (line 80) | pub trait FromShortString<T>: Sized {
method from_short_string (line 81) | fn from_short_string(short_string: &str) -> Result<T>;
method from_short_string (line 85) | fn from_short_string(short_string: &str) -> Result<Felt> {
type ToStrErr (line 95) | pub struct ToStrErr;
type ToShortString (line 97) | pub trait ToShortString<T>: Sized {
method to_short_string (line 98) | fn to_short_string(&self) -> Result<String, ToStrErr>;
method to_short_string (line 102) | fn to_short_string(&self) -> Result<String, ToStrErr> {
type TryInferFormat (line 120) | pub trait TryInferFormat: Sized {
method infer_format_and_parse (line 122) | fn infer_format_and_parse(value: &str) -> Result<Vec<Self>>;
method infer_format_and_parse (line 130) | fn infer_format_and_parse(value: &str) -> Result<Vec<Self>> {
function resolve (line 125) | fn resolve(value: &str) -> String {
function short_string_happy_case (line 151) | fn short_string_happy_case() {
function short_string_31_characters (line 157) | fn short_string_31_characters() {
function short_string_too_long (line 168) | fn short_string_too_long() {
function short_string_empty (line 176) | fn short_string_empty() {
function short_string_with_whitespace (line 182) | fn short_string_with_whitespace() {
function short_string_special_chars (line 188) | fn short_string_special_chars() {
function short_string_with_numbers (line 194) | fn short_string_with_numbers() {
function short_string_non_ascii (line 200) | fn short_string_non_ascii() {
function short_string_null_byte (line 206) | fn short_string_null_byte() {
function short_string_null_byte_middle (line 212) | fn short_string_null_byte_middle() {
function short_string_null_byte_end (line 218) | fn short_string_null_byte_end() {
FILE: crates/conversions/src/lib.rs
type FromConv (line 20) | pub trait FromConv<T>: Sized {
method from_ (line 21) | fn from_(value: T) -> Self;
method from_ (line 25) | fn from_(value: T) -> Self {
type IntoConv (line 30) | pub trait IntoConv<T>: Sized {
method into_ (line 31) | fn into_(self) -> T;
method into_ (line 40) | fn into_(self: T) -> U {
type TryFromConv (line 45) | pub trait TryFromConv<T>: Sized {
method try_from_ (line 48) | fn try_from_(value: T) -> Result<Self, Self::Error>;
type TryIntoConv (line 51) | pub trait TryIntoConv<T>: Sized {
method try_into_ (line 54) | fn try_into_(self) -> Result<T, Self::Error>;
type Error (line 62) | type Error = U::Error;
method try_into_ (line 65) | fn try_into_(self) -> Result<U, U::Error> {
type Error (line 76) | type Error = Infallible;
method try_from_ (line 79) | fn try_from_(value: U) -> Result<Self, Self::Error> {
FILE: crates/conversions/src/non_zero_felt.rs
method from_ (line 6) | fn from_(value: NonZeroU64) -> Self {
method from_ (line 16) | fn from_(value: NonZeroU128) -> Self {
FILE: crates/conversions/src/non_zero_u128.rs
type Error (line 6) | type Error = String;
method try_from_ (line 7) | fn try_from_(value: NonZeroFelt) -> Result<Self, Self::Error> {
FILE: crates/conversions/src/non_zero_u64.rs
type Error (line 6) | type Error = String;
method try_from_ (line 7) | fn try_from_(value: NonZeroFelt) -> Result<Self, Self::Error> {
FILE: crates/conversions/src/nonce.rs
method from_ (line 6) | fn from_(value: Felt) -> Nonce {
FILE: crates/conversions/src/padded_felt.rs
type PaddedFelt (line 11) | pub struct PaddedFelt(pub Felt);
method from_ (line 14) | fn from_(value: Felt) -> Self {
method serialize (line 20) | fn serialize<S>(&self, serializer: S) -> Result<S::Ok, S::Error>
method fmt (line 29) | fn fmt(&self, f: &mut Formatter<'_>) -> fmt::Result {
FILE: crates/conversions/src/primitive.rs
type PrimitiveConversionError (line 6) | pub enum PrimitiveConversionError {
FILE: crates/conversions/src/serde/deserialize.rs
type BufferReadError (line 9) | pub enum BufferReadError {
type BufferReadResult (line 16) | pub type BufferReadResult<T> = Result<T, BufferReadError>;
type BufferReader (line 18) | pub struct BufferReader<'a> {
type CairoDeserialize (line 22) | pub trait CairoDeserialize: Sized {
method deserialize (line 23) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self>;
function new (line 28) | pub fn new(buffer: &'a [Felt]) -> Self {
function read_felt (line 32) | pub fn read_felt(&mut self) -> BufferReadResult<Felt> {
function into_remaining (line 41) | pub fn into_remaining(self) -> &'a [Felt] {
function read (line 45) | pub fn read<T>(&mut self) -> BufferReadResult<T>
FILE: crates/conversions/src/serde/deserialize/deserialize_impl.rs
method deserialize (line 10) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 17) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 26) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 44) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 57) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 70) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
method deserialize (line 82) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
FILE: crates/conversions/src/serde/serialize.rs
type BufferWriter (line 7) | pub struct BufferWriter {
method new (line 12) | fn new() -> Self {
method write_felt (line 16) | pub fn write_felt(&mut self, felt: Felt) {
method write (line 20) | pub fn write<T>(&mut self, serializable: T)
method to_vec (line 28) | pub fn to_vec(self) -> Vec<Felt> {
type CairoSerialize (line 33) | pub trait CairoSerialize {
method serialize (line 34) | fn serialize(&self, output: &mut BufferWriter);
type SerializeToFeltVec (line 37) | pub trait SerializeToFeltVec {
method serialize_to_vec (line 38) | fn serialize_to_vec(&self) -> Vec<Felt>;
method serialize_to_vec (line 45) | fn serialize_to_vec(&self) -> Vec<Felt> {
FILE: crates/conversions/src/serde/serialize/serialize_impl.rs
method serialize (line 20) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 31) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 38) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 57) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 64) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 70) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 76) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 86) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 95) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 108) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 117) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 126) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 135) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 144) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 154) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 169) | fn serialize(&self, output: &mut BufferWriter) {
method serialize (line 184) | fn serialize(&self, output: &mut BufferWriter) {
FILE: crates/conversions/src/serde/serialized_value.rs
type SerializedValue (line 9) | pub struct SerializedValue<T>(pub Vec<T>)
function new (line 18) | pub fn new(vec: Vec<T>) -> Self {
method serialize (line 27) | fn serialize(&self, output: &mut BufferWriter) {
method deserialize (line 35) | fn deserialize(reader: &mut BufferReader<'_>) -> BufferReadResult<Self> {
FILE: crates/conversions/src/string.rs
type TryFromDecStr (line 5) | pub trait TryFromDecStr {
method try_from_dec_str (line 6) | fn try_from_dec_str(str: &str) -> Result<Self>
type TryFromHexStr (line 11) | pub trait TryFromHexStr {
method try_from_hex_str (line 12) | fn try_from_hex_str(str: &str) -> Result<Self>
type IntoDecStr (line 16) | pub trait IntoDecStr {
method into_dec_string (line 17) | fn into_dec_string(self) -> String;
method into_dec_string (line 32) | fn into_dec_string(self) -> String {
type IntoHexStr (line 20) | pub trait IntoHexStr {
method into_hex_string (line 21) | fn into_hex_string(self) -> String;
method into_hex_string (line 41) | fn into_hex_string(self) -> String {
type IntoPaddedHexStr (line 24) | pub trait IntoPaddedHexStr {
method into_padded_hex_str (line 25) | fn into_padded_hex_str(self) -> String;
method into_padded_hex_str (line 50) | fn into_padded_hex_str(self) -> String {
FILE: crates/conversions/tests/derive_cairo_deserialize.rs
function work_on_struct (line 15) | fn work_on_struct() {
function work_on_empty_struct (line 27) | fn work_on_empty_struct() {
function work_on_tuple_struct (line 37) | fn work_on_tuple_struct() {
function work_on_empty_tuple_struct (line 47) | fn work_on_empty_tuple_struct() {
function work_on_unit_struct (line 57) | fn work_on_unit_struct() {
function work_on_enum (line 67) | fn work_on_enum() {
function fail_on_empty_enum (line 88) | fn fail_on_empty_enum() {
function work_with_nested (line 96) | fn work_with_nested() {
function fail_on_too_short_data (line 121) | fn fail_on_too_short_data() {
FILE: crates/conversions/tests/derive_cairo_serialize.rs
function work_on_struct (line 15) | fn work_on_struct() {
function work_on_empty_struct (line 30) | fn work_on_empty_struct() {
function work_on_tuple_struct (line 40) | fn work_on_tuple_struct() {
function work_on_empty_tuple_struct (line 50) | fn work_on_empty_tuple_struct() {
function work_on_unit_struct (line 60) | fn work_on_unit_struct() {
function work_on_enum (line 70) | fn work_on_enum() {
function work_on_empty_enum (line 92) | fn work_on_empty_enum() {
function work_with_nested (line 99) | fn work_with_nested() {
FILE: crates/conversions/tests/e2e/class_hash.rs
function test_class_hash_conversions_happy_case (line 12) | fn test_class_hash_conversions_happy_case() {
function test_class_hash_conversions_zero (line 30) | fn test_class_hash_conversions_zero() {
function test_class_hash_conversions_limit (line 48) | fn test_class_hash_conversions_limit() {
function test_class_hash_conversions_out_of_range (line 73) | fn test_class_hash_conversions_out_of_range() {
FILE: crates/conversions/tests/e2e/contract_address.rs
function test_contract_address_conversions_happy_case (line 12) | fn test_contract_address_conversions_happy_case() {
function test_contract_address_conversions_zero (line 33) | fn test_contract_address_conversions_zero() {
function test_contract_address_conversions_limit (line 54) | fn test_contract_address_conversions_limit() {
function test_contract_address_conversions_out_of_range (line 80) | fn test_contract_address_conversions_out_of_range() {
FILE: crates/conversions/tests/e2e/entrypoint_selector.rs
function test_entrypoint_selector_conversions_happy_case (line 11) | fn test_entrypoint_selector_conversions_happy_case() {
function test_entrypoint_selector_conversions_zero (line 47) | fn test_entrypoint_selector_conversions_zero() {
function test_entrypoint_selector_conversions_limit (line 83) | fn test_entrypoint_selector_conversions_limit() {
function test_entrypoint_selector_conversions_out_of_range (line 126) | fn test_entrypoint_selector_conversions_out_of_range() {
FILE: crates/conversions/tests/e2e/felt.rs
function test_felt_conversions_happy_case (line 15) | fn test_felt_conversions_happy_case() {
function test_felt_conversions_zero (line 32) | fn test_felt_conversions_zero() {
function test_felt_conversions_limit (line 49) | fn test_felt_conversions_limit() {
function test_felt_try_from_string_out_of_range (line 74) | fn test_felt_try_from_string_out_of_range() {
function test_decimal_string (line 79) | fn test_decimal_string() {
function test_from_short_string (line 86) | fn test_from_short_string() {
function test_from_short_string_too_long (line 93) | fn test_from_short_string_too_long() {
function test_result_to_felt_vec (line 101) | fn test_result_to_felt_vec() {
FILE: crates/conversions/tests/e2e/field_elements.rs
function test_field_elements_conversions_happy_case (line 11) | fn test_field_elements_conversions_happy_case() {
function test_field_elements_conversions_zero (line 31) | fn test_field_elements_conversions_zero() {
function test_field_element_conversions_out_of_range (line 51) | fn test_field_element_conversions_out_of_range() {
FILE: crates/conversions/tests/e2e/non_zero_felt.rs
function test_happy_case (line 9) | fn test_happy_case() {
FILE: crates/conversions/tests/e2e/non_zero_u128.rs
function test_happy_case (line 8) | fn test_happy_case() {
function test_limit (line 18) | fn test_limit() {
function test_felt_too_large (line 28) | fn test_felt_too_large() {
FILE: crates/conversions/tests/e2e/non_zero_u64.rs
function test_happy_case (line 8) | fn test_happy_case() {
function test_limit (line 18) | fn test_limit() {
function test_felt_too_large (line 28) | fn test_felt_too_large() {
FILE: crates/conversions/tests/e2e/nonce.rs
function test_nonce_conversions_happy_case (line 11) | fn test_nonce_conversions_happy_case() {
function test_nonce_conversions_zero (line 29) | fn test_nonce_conversions_zero() {
function test_nonce_conversions_limit (line 47) | fn test_nonce_conversions_limit() {
function test_nonce_conversions_out_of_range (line 72) | fn test_nonce_conversions_out_of_range() {
FILE: crates/conversions/tests/e2e/padded_felt.rs
function test_padded_felt_lower_hex (line 9) | fn test_padded_felt_lower_hex() {
function test_padded_felt_max (line 20) | fn test_padded_felt_max() {
function test_padded_felt_conversions_happy_case (line 31) | fn test_padded_felt_conversions_happy_case() {
function test_padded_felt_serialize (line 40) | fn test_padded_felt_serialize() {
FILE: crates/conversions/tests/e2e/string.rs
function test_short_strings_conversions_happy_case (line 7) | fn test_short_strings_conversions_happy_case() {
function test_short_strings_conversions_zero (line 41) | fn test_short_strings_conversions_zero() {
function test_short_string_conversions_limit (line 75) | fn test_short_string_conversions_limit() {
FILE: crates/data-transformer/src/cairo_types/bytes31.rs
type CairoBytes31 (line 7) | pub struct CairoBytes31 {
constant MAX (line 12) | pub const MAX: CairoBytes31 = CairoBytes31 {
type ParseBytes31Error (line 20) | pub enum ParseBytes31Error {
method from (line 28) | fn from(_value: FromStrError) -> Self {
type Err (line 34) | type Err = ParseBytes31Error;
method from_str (line 36) | fn from_str(input: &str) -> Result<Self, Self::Err> {
method from (line 48) | fn from(value: CairoBytes31) -> Self {
FILE: crates/data-transformer/src/cairo_types/helpers.rs
type RadixInput (line 5) | pub enum RadixInput {
type Error (line 19) | type Error = ParseRadixError;
method try_from (line 21) | fn try_from(bytes: &'input [u8]) -> Result<Self, Self::Error> {
type ParseRadixError (line 11) | pub enum ParseRadixError {
type Error (line 56) | type Error = ParseRadixError;
method try_from (line 58) | fn try_from(value: RadixInput) -> Result<Self, Self::Error> {
FILE: crates/data-transformer/src/cairo_types/u256.rs
type CairoU256 (line 11) | pub struct CairoU256 {
method from_bytes (line 18) | pub fn from_bytes(bytes: &[u8; 32]) -> Self {
method to_be_bytes (line 26) | pub fn to_be_bytes(&self) -> [u8; 32] {
method fmt (line 37) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type ParseCairoU256Error (line 44) | pub enum ParseCairoU256Error {
type Err (line 53) | type Err = ParseCairoU256Error;
method from_str (line 55) | fn from_str(input: &str) -> Result<Self, Self::Err> {
constant BIG_NUMBER_HEX (line 77) | const BIG_NUMBER_HEX: &str =
constant BIG_NUMBER_DEC (line 79) | const BIG_NUMBER_DEC: &str =
constant BIG_NUMBER_BYTES (line 82) | const BIG_NUMBER_BYTES: [u8; 32] = [
constant BIG_NUMBER_LIMBS (line 87) | const BIG_NUMBER_LIMBS: [u128; 2] = [
function test_happy_case_from_bytes (line 94) | fn test_happy_case_from_bytes(bytes: &[u8; 32], expected_limbs: [u128; 2...
function test_happy_case_from_str (line 107) | fn test_happy_case_from_str(encoded: &str, expected_limbs: [u128; 2]) ->...
function test_display (line 118) | fn test_display(limbs: [u128; 2], expected: &str) {
FILE: crates/data-transformer/src/cairo_types/u384.rs
type CairoU384 (line 10) | pub struct CairoU384 {
method from_bytes (line 19) | pub fn from_bytes(bytes: &[u8; 48]) -> Self {
method to_be_bytes (line 35) | pub fn to_be_bytes(&self) -> [u8; 48] {
method fmt (line 48) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type ParseCairoU384Error (line 55) | pub enum ParseCairoU384Error {
type Err (line 63) | type Err = ParseCairoU384Error;
method from_str (line 65) | fn from_str(input: &str) -> Result<Self, Self::Err> {
FILE: crates/data-transformer/src/cairo_types/u512.rs
type CairoU512 (line 10) | pub struct CairoU512 {
method from_bytes (line 19) | pub fn from_bytes(bytes: &[u8; 64]) -> Self {
method to_be_bytes (line 29) | pub fn to_be_bytes(&self) -> [u8; 64] {
method fmt (line 42) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type ParseCairoU512Error (line 49) | pub enum ParseCairoU512Error {
type Err (line 57) | type Err = ParseCairoU512Error;
method from_str (line 59) | fn from_str(input: &str) -> Result<Self, Self::Err> {
constant BIG_NUMBER_HEX (line 81) | const BIG_NUMBER_HEX: &str = "0xec6710e3f6607d8528d37b2b7110c1a65d6482a9...
constant BIG_NUMBER_DEC (line 82) | const BIG_NUMBER_DEC: &str = "123814088857775476075393480038330635912384...
constant BIG_NUMBER_BYTES (line 84) | const BIG_NUMBER_BYTES: [u8; 64] = [
constant BIG_NUMBER_LIMBS (line 91) | const BIG_NUMBER_LIMBS: [u128; 4] = [
function test_happy_case_from_bytes (line 100) | fn test_happy_case_from_bytes(bytes: &[u8; 64], expected_limbs: [u128; 4...
function test_happy_case_from_str (line 116) | fn test_happy_case_from_str(encoded: &str, expected_limbs: [u128; 4]) ->...
function test_display (line 130) | fn test_display(limbs: [u128; 4], expected: &str) {
FILE: crates/data-transformer/src/cairo_types/u96.rs
type CairoU96 (line 11) | pub struct CairoU96 {
method fmt (line 16) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
constant MAX_VALUE (line 21) | const MAX_VALUE: u128 = (2 << 96) - 1;
method from (line 24) | fn from(value: CairoU96) -> Self {
type ParseCairoU96Error (line 30) | pub enum ParseCairoU96Error {
type Err (line 38) | type Err = ParseCairoU96Error;
method from_str (line 40) | fn from_str(input: &str) -> Result<Self, Self::Err> {
FILE: crates/data-transformer/src/reverse_transformer/mod.rs
type ReverseTransformError (line 11) | pub enum ReverseTransformError {
function reverse_transform_input (line 19) | pub fn reverse_transform_input(
function reverse_transform_output (line 35) | pub fn reverse_transform_output(
function reverse_transform (line 50) | fn reverse_transform(
FILE: crates/data-transformer/src/reverse_transformer/transform.rs
type TransformationError (line 14) | pub enum TransformationError {
type PrimitiveError (line 34) | enum PrimitiveError {
type ReverseTransformer (line 41) | pub struct ReverseTransformer<'a> {
function new (line 48) | pub fn new(inputs: &'a [Felt], abi: &'a [AbiEntry]) -> Self {
function parse_and_transform (line 56) | pub fn parse_and_transform(
function transform_expr (line 66) | fn transform_expr(
function transform_tuple (line 79) | fn transform_tuple(
function transform_path (line 94) | fn transform_path(
function transform_generic_path (line 113) | fn transform_generic_path(
function transform_simple_path (line 142) | fn transform_simple_path(
function transform_struct (line 170) | fn transform_struct(
function transform_enum (line 202) | fn transform_enum(
function transform_primitive_type (line 236) | fn transform_primitive_type(&mut self, type_str: &str) -> Result<Primiti...
type AbiStructOrEnum (line 265) | enum AbiStructOrEnum<'a> {
function find_item (line 270) | fn find_item<'a>(items_from_abi: &'a [AbiEntry], path: &[String]) -> Opt...
FILE: crates/data-transformer/src/reverse_transformer/types.rs
type Type (line 9) | pub enum Type {
method fmt (line 18) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type Primitive (line 31) | pub enum Primitive {
method fmt (line 57) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type Tuple (line 89) | pub struct Tuple(pub Vec<Type>);
method fmt (line 92) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type StructField (line 102) | pub struct StructField {
type Struct (line 108) | pub struct Struct {
method fmt (line 114) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type Enum (line 124) | pub struct Enum {
method fmt (line 131) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
type SequenceType (line 145) | pub enum SequenceType {
type Sequence (line 151) | pub struct Sequence {
method fmt (line 157) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
FILE: crates/data-transformer/src/shared/extraction.rs
function extract_function_from_selector (line 5) | pub fn extract_function_from_selector(
function default_constructor (line 20) | fn default_constructor() -> AbiFunction {
function search_for_function (line 29) | fn search_for_function(abi: &[AbiEntry], searched_selector: Felt) -> Opt...
FILE: crates/data-transformer/src/shared/parsing.rs
type ParseError (line 9) | pub enum ParseError {
function parse_expression (line 14) | pub fn parse_expression<'a>(
FILE: crates/data-transformer/src/shared/path.rs
type PathSplitError (line 8) | pub enum PathSplitError {
type SplitResult (line 17) | pub enum SplitResult {
function split (line 38) | pub fn split(path: &ExprPath, db: &SimpleParserDatabase) -> Result<Split...
function extract_generic_args (line 68) | fn extract_generic_args(
FILE: crates/data-transformer/src/transformer/mod.rs
function transform (line 15) | pub fn transform(calldata: &str, abi: &[AbiEntry], function_selector: &F...
function split_expressions (line 30) | fn split_expressions<'a>(input: &'a str, db: &'a SimpleParserDatabase) -...
function process (line 43) | fn process(
function convert_to_tuple (line 69) | fn convert_to_tuple(calldata: &str) -> String {
FILE: crates/data-transformer/src/transformer/sierra_abi/binary.rs
method transform (line 12) | fn transform(
function assert_is_span (line 52) | fn assert_is_span(expr: &ExprFunctionCall, db: &SimpleParserDatabase) ->...
FILE: crates/data-transformer/src/transformer/sierra_abi/complex_types.rs
type EnumOrStruct (line 20) | pub trait EnumOrStruct {
constant VARIANT (line 21) | const VARIANT: &'static str;
constant VARIANT_CAPITALIZED (line 22) | const VARIANT_CAPITALIZED: &'static str;
method name (line 23) | fn name(&self) -> String;
constant VARIANT (line 27) | const VARIANT: &'static str = "struct";
constant VARIANT_CAPITALIZED (line 28) | const VARIANT_CAPITALIZED: &'static str = "Struct";
method name (line 30) | fn name(&self) -> String {
constant VARIANT (line 36) | const VARIANT: &'static str = "enum";
constant VARIANT_CAPITALIZED (line 37) | const VARIANT_CAPITALIZED: &'static str = "Enum";
method name (line 39) | fn name(&self) -> String {
function validate_path_argument (line 44) | fn validate_path_argument(
function split (line 57) | fn split(path: &ExprPath, db: &SimpleParserDatabase) -> Result<Vec<Strin...
function find_all_structs (line 66) | fn find_all_structs(abi: &[AbiEntry]) -> Vec<&AbiStruct> {
function find_enum_variant_position (line 75) | fn find_enum_variant_position<'a>(
function find_item_with_path (line 109) | fn find_item_with_path<'item, T: EnumOrStruct>(
function get_struct_arguments_with_values (line 152) | fn get_struct_arguments_with_values<'a>(
method transform (line 190) | fn transform(
method transform (line 262) | fn transform(
method transform (line 291) | fn transform(
method transform (line 323) | fn transform(
FILE: crates/data-transformer/src/transformer/sierra_abi/data_representation.rs
function neat_parsing_error_message (line 11) | fn neat_parsing_error_message(value: &str, parsing_type: &str, reason: O...
function parse_with_type (line 19) | fn parse_with_type<T: FromStr>(value: &str) -> anyhow::Result<T>
type AllowedCalldataArgument (line 30) | pub enum AllowedCalldataArgument {
method serialize (line 39) | fn serialize(&self, output: &mut BufferWriter) {
type CalldataPrimitive (line 51) | pub enum CalldataPrimitive {
method try_from_str_with_type (line 72) | pub(crate) fn try_from_str_with_type(
method serialize (line 127) | fn serialize(&self, output: &mut BufferWriter) {
type CalldataTuple (line 151) | pub struct CalldataTuple(Vec<AllowedCalldataArgument>);
method new (line 154) | pub fn new(arguments: Vec<AllowedCalldataArgument>) -> Self {
method serialize (line 160) | fn serialize(&self, output: &mut BufferWriter) {
type CalldataStructField (line 166) | pub struct CalldataStructField(AllowedCalldataArgument);
method new (line 169) | pub fn new(value: AllowedCalldataArgument) -> Self {
type CalldataStruct (line 175) | pub struct CalldataStruct(Vec<CalldataStructField>);
method new (line 178) | pub fn new(arguments: Vec<CalldataStructField>) -> Self {
method serialize (line 185) | fn serialize(&self, output: &mut BufferWriter) {
type CalldataEnum (line 191) | pub struct CalldataEnum {
method new (line 197) | pub fn new(position: usize, argument: Option<Box<AllowedCalldataArgume...
method serialize (line 204) | fn serialize(&self, output: &mut BufferWriter) {
type CalldataArrayMacro (line 213) | pub struct CalldataArrayMacro(Vec<AllowedCalldataArgument>);
method new (line 216) | pub fn new(arguments: Vec<AllowedCalldataArgument>) -> Self {
FILE: crates/data-transformer/src/transformer/sierra_abi/literals.rs
method transform (line 14) | fn transform(
method transform (line 36) | fn transform(
method transform (line 85) | fn transform(
method transform (line 108) | fn transform(
method transform (line 125) | fn transform(
method transform (line 140) | fn transform(
FILE: crates/data-transformer/src/transformer/sierra_abi/macros.rs
method transform (line 14) | fn transform(
FILE: crates/data-transformer/src/transformer/sierra_abi/mod.rs
type SupportedCalldataKind (line 15) | trait SupportedCalldataKind {
method transform (line 16) | fn transform(
function build_representation (line 26) | pub(crate) fn build_representation(
FILE: crates/data-transformer/src/transformer/sierra_abi/parsing.rs
function modifier_syntax_token (line 10) | fn modifier_syntax_token(item: &Modifier) -> &'static str {
function parse_argument_list (line 17) | pub fn parse_argument_list<'a>(
function parse_inline_macro (line 59) | pub fn parse_inline_macro<'a>(
FILE: crates/data-transformer/tests/integration/identity.rs
function test_check_for_identity (line 27) | async fn test_check_for_identity(calldata: &str, selector: &str) {
FILE: crates/data-transformer/tests/integration/mod.rs
constant TEST_CLASS_HASH (line 14) | const TEST_CLASS_HASH: Felt =
constant NO_CONSTRUCTOR_CLASS_HASH (line 18) | const NO_CONSTRUCTOR_CLASS_HASH: Felt =
function init_class (line 23) | async fn init_class(class_hash: Felt) -> ContractClass {
function get_abi (line 34) | async fn get_abi() -> Vec<AbiEntry> {
FILE: crates/data-transformer/tests/integration/reverse_transformer.rs
function assert_reverse_transformation (line 10) | async fn assert_reverse_transformation(
function test_unsigned (line 33) | async fn test_unsigned() {
function test_felt (line 44) | async fn test_felt() {
function test_u256_max (line 55) | async fn test_u256_max() {
function test_u256 (line 69) | async fn test_u256() {
function test_signed (line 83) | async fn test_signed() {
function test_u32_max (line 88) | async fn test_u32_max() {
function test_tuple_enum (line 99) | async fn test_tuple_enum() {
function test_tuple_enum_nested_struct (line 114) | async fn test_tuple_enum_nested_struct() {
function test_happy_case_complex_function_cairo_expressions_input (line 131) | async fn test_happy_case_complex_function_cairo_expressions_input() {
function test_simple_struct (line 164) | async fn test_simple_struct() {
function test_nested_struct (line 175) | async fn test_nested_struct() {
function test_span (line 189) | async fn test_span() {
function test_span_empty (line 205) | async fn test_span_empty() {
function test_enum (line 210) | async fn test_enum() {
function test_enum_tuple (line 215) | async fn test_enum_tuple() {
function test_enum_nested_struct (line 229) | async fn test_enum_nested_struct() {
function test_complex_struct (line 244) | async fn test_complex_struct() {
function test_external_type (line 280) | async fn test_external_type() {
function test_constructor (line 302) | async fn test_constructor() {
function test_multiple_signed (line 313) | async fn test_multiple_signed() {
function test_multiple_signed_min (line 324) | async fn test_multiple_signed_min() {
function test_multiple_signed_max (line 335) | async fn test_multiple_signed_max() {
function test_no_argument_function (line 346) | async fn test_no_argument_function() {
function test_implicit_contract_constructor (line 351) | async fn test_implicit_contract_constructor() {
FILE: crates/data-transformer/tests/integration/transformer.rs
type Contains (line 16) | trait Contains<T: fmt::Debug + Eq> {
method assert_contains (line 17) | fn assert_contains(&self, value: T);
function assert_contains (line 21) | fn assert_contains(&self, value: &str) {
function run_transformer (line 29) | async fn run_transformer(input: &str, selector: &str) -> anyhow::Result<...
function test_function_not_found (line 40) | async fn test_function_not_found() {
function test_happy_case_numeric_type_suffix (line 54) | async fn test_happy_case_numeric_type_suffix() {
function test_invalid_numeric_type_suffix (line 63) | async fn test_invalid_numeric_type_suffix() {
function test_invalid_cairo_expression (line 72) | async fn test_invalid_cairo_expression() {
function test_invalid_argument_number (line 81) | async fn test_invalid_argument_number() {
function test_happy_case_simple_cairo_expressions_input (line 90) | async fn test_happy_case_simple_cairo_expressions_input() {
function test_happy_case_u256_function_cairo_expressions_input_decimal (line 99) | async fn test_happy_case_u256_function_cairo_expressions_input_decimal() {
function test_happy_case_u256_function_cairo_expressions_input_hex (line 113) | async fn test_happy_case_u256_function_cairo_expressions_input_hex() {
function test_happy_case_signed_function_cairo_expressions_input (line 125) | async fn test_happy_case_signed_function_cairo_expressions_input() {
function test_signed_fn_overflow (line 139) | async fn test_signed_fn_overflow() {
function test_signed_fn_overflow_with_type_suffix (line 148) | async fn test_signed_fn_overflow_with_type_suffix() {
function test_happy_case_unsigned_function_cairo_expressions_input (line 157) | async fn test_happy_case_unsigned_function_cairo_expressions_input() {
function test_happy_case_tuple_function_cairo_expression_input (line 168) | async fn test_happy_case_tuple_function_cairo_expression_input() {
function test_happy_case_tuple_function_with_nested_struct_cairo_expression_input (line 183) | async fn test_happy_case_tuple_function_with_nested_struct_cairo_express...
function test_happy_case_complex_function_cairo_expressions_input (line 200) | async fn test_happy_case_complex_function_cairo_expressions_input() {
function test_happy_case_simple_struct_function_cairo_expression_input (line 243) | async fn test_happy_case_simple_struct_function_cairo_expression_input() {
function test_simple_struct_function_invalid_struct_argument (line 254) | async fn test_simple_struct_function_invalid_struct_argument() {
function test_simple_struct_function_invalid_struct_name (line 263) | async fn test_simple_struct_function_invalid_struct_name() {
function test_simple_struct_function_cairo_expression_input_invalid_argument_type (line 279) | async fn test_simple_struct_function_cairo_expression_input_invalid_argu...
function test_happy_case_nested_struct_function_cairo_expression_input (line 289) | async fn test_happy_case_nested_struct_function_cairo_expression_input() {
function test_happy_case_span_function_cairo_expression_input (line 306) | async fn test_happy_case_span_function_cairo_expression_input() {
function test_happy_case_empty_span_function_cairo_expression_input (line 322) | async fn test_happy_case_empty_span_function_cairo_expression_input() {
function test_span_function_array_input (line 331) | async fn test_span_function_array_input() {
function test_span_function_unsupported_method (line 340) | async fn test_span_function_unsupported_method() {
function test_span_function_unsupported_operator (line 349) | async fn test_span_function_unsupported_operator() {
function test_span_function_unsupported_right_hand_side (line 358) | async fn test_span_function_unsupported_right_hand_side() {
function test_span_function_unsupported_left_hand_side (line 367) | async fn test_span_function_unsupported_left_hand_side() {
function test_happy_case_enum_function_empty_variant_cairo_expression_input (line 376) | async fn test_happy_case_enum_function_empty_variant_cairo_expression_in...
function test_happy_case_enum_function_one_argument_variant_cairo_expression_input (line 385) | async fn test_happy_case_enum_function_one_argument_variant_cairo_expres...
function test_happy_case_enum_function_nested_struct_variant_cairo_expression_input (line 402) | async fn test_happy_case_enum_function_nested_struct_variant_cairo_expre...
function test_enum_function_invalid_variant_cairo_expression_input (line 420) | async fn test_enum_function_invalid_variant_cairo_expression_input() {
function test_happy_case_complex_struct_function_cairo_expression_input (line 429) | async fn test_happy_case_complex_struct_function_cairo_expression_input() {
function test_external_struct_function_ambiguous_struct_name_cairo_expression_input (line 482) | async fn test_external_struct_function_ambiguous_struct_name_cairo_expre...
function test_happy_case_external_struct_function_cairo_expression_input (line 496) | async fn test_happy_case_external_struct_function_cairo_expression_input...
function test_external_struct_function_invalid_path_to_external_struct (line 519) | async fn test_external_struct_function_invalid_path_to_external_struct() {
function test_happy_case_contract_constructor (line 535) | async fn test_happy_case_contract_constructor() {
function test_happy_case_no_argument_function (line 544) | async fn test_happy_case_no_argument_function() {
function test_happy_case_implicit_contract_constructor (line 553) | async fn test_happy_case_implicit_contract_constructor() {
function test_external_enum_function_ambiguous_enum_name_cairo_expression_input (line 569) | async fn test_external_enum_function_ambiguous_enum_name_cairo_expressio...
FILE: crates/data-transformer/tests/unit/bytes31.rs
function test_happy_case (line 11) | fn test_happy_case() {
function test_max_value (line 20) | fn test_max_value() {
function test_overflow (line 30) | fn test_overflow() {
function test_invalid_string (line 39) | fn test_invalid_string(input: &str) {
function test_felt_conversion (line 45) | fn test_felt_conversion() {
function test_zero_value (line 52) | fn test_zero_value() {
function test_leading_zeros (line 58) | fn test_leading_zeros() {
FILE: crates/data-transformer/tests/unit/u384.rs
function test_from_bytes (line 9) | fn test_from_bytes() {
function test_valid_decimal (line 22) | fn test_valid_decimal() {
function test_valid_hex (line 33) | fn test_valid_hex() {
function test_overflow (line 45) | fn test_overflow() {
function test_zero_value (line 52) | fn test_zero_value() {
function test_max_value (line 60) | fn test_max_value() {
FILE: crates/data-transformer/tests/unit/u96.rs
constant U96_MAX (line 9) | const U96_MAX: u128 = (2u128 << 96) - 1;
function test_valid_numbers (line 16) | fn test_valid_numbers(input: &str, expected: u128) {
function test_max_value (line 26) | fn test_max_value() {
function test_invalid_input (line 37) | fn test_invalid_input(input: &str) {
function test_felt_conversion (line 49) | fn test_felt_conversion(input: &str, expected: u128) {
FILE: crates/debugging/src/contracts_data_store.rs
type ContractsDataStore (line 14) | pub struct ContractsDataStore {
method new (line 24) | pub fn new(contracts_data: &ContractsData, fork_data: &ForkData) -> Se...
method get_contract_name (line 83) | pub fn get_contract_name(&self, class_hash: &ClassHash) -> Option<&Con...
method get_abi (line 88) | pub fn get_abi(&self, class_hash: &ClassHash) -> Option<&[AbiEntry]> {
method get_selector (line 94) | pub fn get_selector(&self, entry_point_selector: &EntryPointSelector) ...
method get_program_artifact (line 100) | pub fn get_program_artifact(&self, class_hash: &ClassHash) -> Option<&...
FILE: crates/debugging/src/trace/collect.rs
type Collector (line 16) | pub struct Collector<'a> {
function new (line 24) | pub fn new(call_trace: &'a CallTrace, context: &'a Context) -> Collector...
function collect_trace (line 31) | pub fn collect_trace(&self, test_name: String) -> Trace {
function collect_contract_trace (line 38) | fn collect_contract_trace(&self) -> ContractTrace {
function collect_nested_calls (line 64) | fn collect_nested_calls(&self) -> Vec<ContractTrace> {
function collect_contract_name (line 84) | fn collect_contract_name(&self) -> ContractName {
function collect_selector (line 91) | fn collect_selector(&self) -> &Selector {
function collect_abi (line 97) | fn collect_abi(&self) -> &[AbiEntry] {
function collect_transformed_calldata (line 103) | fn collect_transformed_calldata(&self, abi: &[AbiEntry]) -> TransformedC...
function collect_transformed_call_result (line 114) | fn collect_transformed_call_result(&self, abi: &[AbiEntry]) -> Transform...
function collect_gas (line 136) | fn collect_gas(&self) -> Gas {
function class_hash (line 146) | fn class_hash(&self) -> &ClassHash {
function contracts_data_store (line 154) | fn contracts_data_store(&self) -> &ContractsDataStore {
function format_result_message (line 159) | fn format_result_message(tag: &str, message: &str) -> String {
FILE: crates/debugging/src/trace/components.rs
type Components (line 10) | pub struct Components {
method new (line 17) | pub fn new(components: HashSet<Component>) -> Self {
method contains (line 23) | pub fn contains(&self, component: &Component) -> bool {
type Component (line 30) | pub enum Component {
FILE: crates/debugging/src/trace/context.rs
type Context (line 7) | pub struct Context {
method new (line 15) | pub fn new(
method contracts_data_store (line 29) | pub fn contracts_data_store(&self) -> &ContractsDataStore {
method components (line 35) | pub fn components(&self) -> &Components {
FILE: crates/debugging/src/trace/types.rs
type Trace (line 15) | pub struct Trace {
method new (line 66) | pub fn new(call_trace: &CallTrace, context: &Context, test_name: Strin...
type ContractTrace (line 21) | pub struct ContractTrace {
type TraceInfo (line 27) | pub struct TraceInfo {
type TransformedCallResult (line 40) | pub struct TransformedCallResult(pub String);
type TransformedCalldata (line 43) | pub struct TransformedCalldata(pub String);
type Selector (line 46) | pub struct Selector(pub String);
type TestName (line 49) | pub struct TestName(pub String);
type ContractName (line 52) | pub struct ContractName(pub String);
type ContractAddress (line 55) | pub struct ContractAddress(pub ApiContractAddress);
type CallerAddress (line 58) | pub struct CallerAddress(pub ApiContractAddress);
type Gas (line 61) | pub struct Gas(pub ApiGasAmount);
method fmt (line 72) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
FILE: crates/debugging/src/tree/building/builder.rs
type TreeBuilderWithGuard (line 5) | pub struct TreeBuilderWithGuard {
method new (line 11) | pub fn new() -> Self {
method begin_child (line 18) | pub fn begin_child(&mut self, text: String) {
method add_empty_child (line 23) | pub fn add_empty_child(&mut self, text: String) {
method end_child (line 28) | pub fn end_child(&mut self) {
method build (line 33) | pub fn build(mut self) -> StringItem {
function extract_guard (line 40) | fn extract_guard(mut string_item: StringItem) -> StringItem {
function test_happy_path (line 53) | fn test_happy_path() {
function test_two_guards (line 64) | fn test_two_guards() {
FILE: crates/debugging/src/tree/building/node.rs
type Node (line 9) | pub struct Node<'a> {
method drop (line 14) | fn drop(&mut self) {
function new (line 21) | pub fn new(builder: &'a mut TreeBuilderWithGuard) -> Self {
function as_tree_node (line 27) | pub fn as_tree_node(&mut self, tree_item: &impl AsTreeNode) {
function child_node (line 33) | pub fn child_node(&mut self, tree_item: &impl NodeDisplay) -> Node<'_> {
function leaf (line 39) | pub fn leaf(&mut self, tree_item: &impl NodeDisplay) {
function leaf_optional (line 44) | pub fn leaf_optional(&mut self, tree_item: Option<&impl NodeDisplay>) {
FILE: crates/debugging/src/tree/mod.rs
type TreeSerialize (line 10) | pub trait TreeSerialize {
method serialize (line 11) | fn serialize(&self) -> String;
method serialize (line 15) | fn serialize(&self) -> String {
function write_to_string (line 24) | fn write_to_string(string_item: &StringItem) -> String {
FILE: crates/debugging/src/tree/ui/as_tree_node.rs
type AsTreeNode (line 7) | pub trait AsTreeNode {
method as_tree_node (line 8) | fn as_tree_node(&self, parent: &mut Node);
method as_tree_node (line 12) | fn as_tree_node(&self, parent: &mut Node) {
method as_tree_node (line 21) | fn as_tree_node(&self, parent: &mut Node) {
method as_tree_node (line 29) | fn as_tree_node(&self, parent: &mut Node) {
FILE: crates/debugging/src/tree/ui/display.rs
type NodeDisplay (line 13) | pub trait NodeDisplay {
constant TAG (line 14) | const TAG: &'static str;
method string_pretty (line 15) | fn string_pretty(&self) -> String;
method display (line 17) | fn display(&self) -> String {
constant TAG (line 25) | const TAG: &'static str = "test name";
method string_pretty (line 26) | fn string_pretty(&self) -> String {
constant TAG (line 32) | const TAG: &'static str = "contract name";
method string_pretty (line 33) | fn string_pretty(&self) -> String {
constant TAG (line 39) | const TAG: &'static str = "selector";
method string_pretty (line 40) | fn string_pretty(&self) -> String {
constant TAG (line 46) | const TAG: &'static str = "entry point type";
method string_pretty (line 47) | fn string_pretty(&self) -> String {
constant TAG (line 53) | const TAG: &'static str = "calldata";
method string_pretty (line 54) | fn string_pretty(&self) -> String {
constant TAG (line 60) | const TAG: &'static str = "contract address";
method string_pretty (line 61) | fn string_pretty(&self) -> String {
constant TAG (line 67) | const TAG: &'static str = "caller address";
method string_pretty (line 68) | fn string_pretty(&self) -> String {
constant TAG (line 74) | const TAG: &'static str = "call type";
method string_pretty (line 75) | fn string_pretty(&self) -> String {
constant TAG (line 81) | const TAG: &'static str = "call result";
method string_pretty (line 82) | fn string_pretty(&self) -> String {
constant TAG (line 88) | const TAG: &'static str = "L2 gas";
method string_pretty (line 89) | fn string_pretty(&self) -> String {
function string_hex (line 96) | fn string_hex(data: impl Into<Felt>) -> String {
function string_debug (line 102) | fn string_debug(data: impl Debug) -> String {
FILE: crates/docs/src/snippet.rs
type SnippetType (line 17) | pub struct SnippetType(String);
method forge (line 21) | pub fn forge() -> Self {
method sncast (line 26) | pub fn sncast() -> Self {
method as_str (line 31) | pub fn as_str(&self) -> &str {
method get_re (line 36) | pub fn get_re(&self) -> &'static Regex {
type SnippetConfig (line 60) | pub struct SnippetConfig {
method check_scarb_compatibility (line 108) | fn check_scarb_compatibility(&mut self) {
method deserialize (line 120) | fn deserialize<D>(deserializer: D) -> Result<Self, D::Error>
type SnippetConfigProxy (line 72) | struct SnippetConfigProxy {
method default (line 82) | fn default() -> Self {
method default (line 95) | fn default() -> Self {
type Snippet (line 142) | pub struct Snippet {
method to_command_args (line 153) | pub fn to_command_args(&self) -> Vec<String> {
method capture_package_from_output (line 169) | pub fn capture_package_from_output(&self) -> Option<String> {
FILE: crates/docs/src/utils.rs
function get_nth_ancestor (line 9) | pub fn get_nth_ancestor(levels_up: usize) -> PathBuf {
function assert_valid_snippet (line 22) | pub fn assert_valid_snippet(condition: bool, snippet: &Snippet, err_mess...
function print_snippets_validation_summary (line 33) | pub fn print_snippets_validation_summary(snippets: &[Snippet], tool_name...
function print_ignored_snippet_message (line 45) | pub fn print_ignored_snippet_message(snippet: &Snippet) {
function get_canonical_path (line 54) | fn get_canonical_path(relative_path: &str) -> Result<String> {
function update_scarb_toml_dependencies (line 62) | pub fn update_scarb_toml_dependencies(temp: &TempDir) -> Result<(), Box<...
FILE: crates/docs/src/validation.rs
constant EXTENSION (line 6) | const EXTENSION: Option<&str> = Some("md");
function extract_snippets_from_file (line 8) | pub fn extract_snippets_from_file(
function extract_snippets_from_directory (line 61) | pub fn extract_snippets_from_directory(
FILE: crates/forge-runner/src/backtrace/data.rs
type ContractBacktraceDataMapping (line 21) | pub struct ContractBacktraceDataMapping(HashMap<ClassHash, ContractOrigi...
method new (line 24) | pub fn new(contracts_data: &ContractsData, class_hashes: HashSet<Class...
method render_backtrace (line 36) | pub fn render_backtrace(&self, pcs: &[usize], class_hash: &ClassHash) ...
type ContractOrigin (line 44) | enum ContractOrigin {
method new (line 50) | fn new(class_hash: &ClassHash, contracts_data: &ContractsData) -> Resu...
method render_backtrace (line 60) | fn render_backtrace(&self, pcs: &[usize]) -> Result<String> {
type ContractBacktraceData (line 68) | struct ContractBacktraceData {
method new (line 76) | fn new(class_hash: &ClassHash, contracts_data: &ContractsData) -> Resu...
method backtrace_from (line 129) | fn backtrace_from(&self, pc: usize) -> Result<Vec<Backtrace<'_>>> {
method render_backtrace (line 175) | fn render_backtrace(&self, pcs: &[usize]) -> Result<String> {
FILE: crates/forge-runner/src/backtrace/display.rs
type Backtrace (line 7) | pub struct Backtrace<'a> {
type BacktraceStack (line 13) | pub struct BacktraceStack<'a> {
method fmt (line 19) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
method fmt (line 34) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
function render_fork_backtrace (line 44) | pub fn render_fork_backtrace(contract_class_hash: &ClassHash) -> String {
FILE: crates/forge-runner/src/backtrace/mod.rs
constant BACKTRACE_ENV (line 9) | const BACKTRACE_ENV: &str = "SNFORGE_BACKTRACE";
function add_backtrace_footer (line 12) | pub fn add_backtrace_footer(
function get_backtrace (line 31) | pub fn get_backtrace(
function is_backtrace_enabled (line 49) | pub fn is_backtrace_enabled() -> bool {
FILE: crates/forge-runner/src/build_trace_data.rs
constant TRACE_DIR (line 39) | pub const TRACE_DIR: &str = "snfoundry_trace";
constant TEST_CODE_CONTRACT_NAME (line 41) | pub const TEST_CODE_CONTRACT_NAME: &str = "SNFORGE_TEST_CODE";
constant TEST_CODE_FUNCTION_NAME (line 42) | pub const TEST_CODE_FUNCTION_NAME: &str = "SNFORGE_TEST_CODE_FUNCTION";
function build_profiler_call_trace (line 44) | pub fn build_profiler_call_trace(
function build_cairo_execution_info (line 90) | fn build_cairo_execution_info(
function get_source_sierra_path (line 111) | fn get_source_sierra_path(
function build_profiler_call_trace_node (line 125) | fn build_profiler_call_trace_node(
function build_profiler_execution_resources (line 140) | pub fn build_profiler_execution_resources(
function build_profiler_call_entry_point (line 189) | pub fn build_profiler_call_entry_point(
function get_contract_name (line 225) | fn get_contract_name(
function get_function_name (line 238) | fn get_function_name(
function build_profiler_entry_point_type (line 259) | fn build_profiler_entry_point_type(value: EntryPointType) -> ProfilerEnt...
function build_profiler_deprecated_syscall_selector (line 267) | fn build_profiler_deprecated_syscall_selector(
function build_profiler_syscall_usage (line 344) | fn build_profiler_syscall_usage(
function build_profiler_call_type (line 356) | fn build_profiler_call_type(value: CallType) -> ProfilerCallType {
function build_profiler_trace_entry (line 363) | fn build_profiler_trace_entry(value: &RelocatedTraceEntry) -> ProfilerTr...
function save_trace_data (line 371) | pub fn save_trace_data(
function to_summed_up_events (line 386) | fn to_summed_up_events(events: &[OrderedEvent]) -> Vec<SummedUpEvent> {
FILE: crates/forge-runner/src/coverage_api.rs
constant COVERAGE_DIR (line 9) | pub const COVERAGE_DIR: &str = "coverage";
constant OUTPUT_FILE_NAME (line 10) | pub const OUTPUT_FILE_NAME: &str = "coverage.lcov";
function run_coverage (line 12) | pub fn run_coverage(saved_trace_data_paths: &[PathBuf], coverage_args: &...
FILE: crates/forge-runner/src/debugging/args.rs
type TraceArgs (line 8) | pub struct TraceArgs {
method to_components (line 21) | pub fn to_components(&self) -> Option<Components> {
function build_components (line 33) | fn build_components<'a>(iter: impl IntoIterator<Item = &'a Component>) -...
FILE: crates/forge-runner/src/debugging/component.rs
type Component (line 7) | pub enum Component {
method verbosity (line 28) | pub fn verbosity(&self) -> TraceVerbosity {
function from (line 42) | fn from(component: &Component) -> Self {
FILE: crates/forge-runner/src/debugging/mod.rs
function build_debugging_trace (line 13) | pub fn build_debugging_trace(
FILE: crates/forge-runner/src/debugging/trace_verbosity.rs
type TraceVerbosity (line 7) | pub enum TraceVerbosity {
method to_components_vec (line 19) | pub fn to_components_vec(&self) -> Vec<&Component> {
FILE: crates/forge-runner/src/expected_result.rs
type ExpectedPanicValue (line 8) | pub enum ExpectedPanicValue {
method from (line 16) | fn from(value: PanicExpectation) -> Self {
type ExpectedTestResult (line 26) | pub enum ExpectedTestResult {
method from (line 34) | fn from(value: TestExpectation) -> Self {
FILE: crates/forge-runner/src/filtering.rs
type FilterResult (line 5) | pub enum FilterResult {
type ExcludeReason (line 14) | pub enum ExcludeReason {
type TestCaseFilter (line 21) | pub trait TestCaseFilter {
method filter (line 22) | fn filter<T>(&self, test_case: &TestCase<T>) -> FilterResult
type TestCaseIsIgnored (line 27) | pub trait TestCaseIsIgnored {
method is_ignored (line 28) | fn is_ignored(&self) -> bool;
FILE: crates/forge-runner/src/forge_config.rs
type ForgeConfig (line 13) | pub struct ForgeConfig {
type TestRunnerConfig (line 20) | pub struct TestRunnerConfig {
type OutputConfig (line 35) | pub struct OutputConfig {
type ExecutionDataToSave (line 43) | pub struct ExecutionDataToSave {
method from_flags (line 68) | pub fn from_flags(
method is_vm_trace_needed (line 82) | pub fn is_vm_trace_needed(&self) -> bool {
type ForgeTrackedResource (line 51) | pub enum ForgeTrackedResource {
method from (line 58) | fn from(m: &ForgeTrackedResource) -> Self {
type RuntimeConfig (line 89) | pub struct RuntimeConfig<'a> {
function from (line 101) | pub fn from(value: &'a TestRunnerConfig) -> RuntimeConfig<'a> {
FILE: crates/forge-runner/src/gas.rs
function calculate_used_gas (line 20) | pub fn calculate_used_gas(
function get_state_resources (line 47) | fn get_state_resources(
function check_available_gas (line 70) | pub fn check_available_gas(
FILE: crates/forge-runner/src/gas/report.rs
type ContractName (line 13) | type ContractName = String;
type Selector (line 14) | type Selector = String;
type ContractId (line 17) | pub enum ContractId {
type SingleTestGasInfo (line 23) | pub struct SingleTestGasInfo {
method new (line 46) | pub(crate) fn new(gas_used: GasVector) -> Self {
method get_with_report_data (line 53) | pub(crate) fn get_with_report_data(
type ReportData (line 29) | pub struct ReportData(BTreeMap<ContractId, ContractInfo>);
method update_entry (line 92) | fn update_entry(&mut self, contract_id: ContractId, selector: Selector...
method finalize (line 105) | fn finalize(&mut self) {
type ContractInfo (line 32) | pub struct ContractInfo {
type SelectorReportData (line 38) | pub struct SelectorReportData {
method fmt (line 115) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
method fmt (line 132) | fn fmt(&self, f: &mut fmt::Formatter<'_>) -> fmt::Result {
function get_contract_id (line 146) | fn get_contract_id(contracts_data: &ContractsDataStore, class_hash: Clas...
function get_selector (line 153) | fn get_selector(contracts_data: &ContractsDataStore, selector: EntryPoin...
function format_table_output (line 161) | pub fn format_table_output(contract_info: &ContractInfo, contract_id: &C...
FILE: crates/forge-runner/src/gas/resources.rs
type GasCalculationResources (line 10) | pub struct GasCalculationResources {
method from_used_resources (line 20) | pub fn from_used_resources(r: &UsedResources) -> Self {
method to_computation_resources (line 35) | pub fn to_computation_resources(&self) -> ComputationResources {
method to_message_resources (line 51) | pub fn to_message_resources(&self) -> MessageResources {
method to_archival_resources (line 81) | pub fn to_archival_resources(&self) -> ArchivalDataResources {
method format_for_display (line 94) | pub fn format_for_display(&self, tracked_resource: ForgeTrackedResourc...
function format_syscalls (line 126) | fn format_syscalls(syscalls: &SyscallUsageMap) -> String {
function format_vm_resources (line 138) | fn format_vm_resources(execution_resources: &ExtendedExecutionResources)...
function format_events (line 154) | fn format_events(events: &EventSummary) -> String {
function format_messages (line 161) | fn format_messages(l2_to_l1: &[usize], l1_handler: &[usize]) -> String {
function sort_by_value (line 169) | fn sort_by_value<'a, K, V, M>(map: M) -> Vec<(&'a K, &'a V)>
function format_items (line 179) | fn format_items<K, V>(items: &[(K, V)]) -> String
FILE: crates/forge-runner/src/gas/stats.rs
type GasStats (line 4) | pub struct GasStats {
method new (line 13) | pub fn new(gas_usages: &[u64]) -> Self {
function mean (line 25) | fn mean(values: &[u64]) -> f64 {
function std_deviation (line 35) | fn std_deviation(mean: f64, values: &[u64]) -> f64 {
constant FLOAT_ERROR (line 52) | const FLOAT_ERROR: f64 = 0.01;
function test_mean_basic (line 55) | fn test_mean_basic() {
function test_mean_single_element (line 62) | fn test_mean_single_element() {
function test_std_deviation_basic (line 69) | fn test_std_deviation_basic() {
function test_std_deviation_single_element (line 77) | fn test_std_deviation_single_element() {
FILE: crates/forge-runner/src/gas/utils.rs
function shorten_felt (line 3) | pub(super) fn shorten_felt(felt: Felt) -> String {
function test_long (line 15) | fn test_long() {
function test_short (line 23) | fn test_short() {
FILE: crates/forge-runner/src/lib.rs
constant CACHE_DIR (line 45) | pub const CACHE_DIR: &str = ".snfoundry_cache";
constant BUILTINS (line 47) | const BUILTINS: [&str; 11] = [
function maybe_save_trace_and_profile (line 61) | pub fn maybe_save_trace_and_profile(
function maybe_generate_coverage (line 82) | pub fn maybe_generate_coverage(
function run_for_test_case (line 106) | pub fn run_for_test_case(
function run_with_fuzzing (line 144) | fn run_with_fuzzing(
function function_args (line 230) | pub fn function_args(
FILE: crates/forge-runner/src/messages.rs
type TestResultStatus (line 11) | enum TestResultStatus {
method from (line 20) | fn from(test_result: &AnyTestCaseSummary) -> Self {
type TestResultMessage (line 39) | pub struct TestResultMessage {
method new (line 51) | pub fn new(
method result_message (line 126) | fn result_message(&self) -> String {
method result_header (line 139) | fn result_header(&self) -> String {
method text (line 157) | fn text(&self) -> String {
method json (line 174) | fn json(&self) -> Value {
function format_detailed_resources (line 179) | fn format_detailed_resources(
FILE: crates/forge-runner/src/package_tests.rs
constant BUILTIN_ORDER (line 30) | const BUILTIN_ORDER: [(BuiltinName, GenericTypeId); 9] = [
type TestTargetLocation (line 43) | pub enum TestTargetLocation {
type TestDetails (line 51) | pub struct TestDetails {
method builtins (line 58) | pub fn builtins(&self) -> Vec<BuiltinName> {
method try_into_program (line 68) | pub fn try_into_program(&self, casm_program: &RawCasmProgram) -> Resul...
type TestTarget (line 97) | pub struct TestTarget<C> {
type TestCase (line 106) | pub struct TestCase<C> {
FILE: crates/forge-runner/src/package_tests/raw.rs
type TestTargetRaw (line 7) | pub struct TestTargetRaw {
FILE: crates/forge-runner/src/package_tests/with_config.rs
type TestTargetWithConfig (line 12) | pub type TestTargetWithConfig = TestTarget<TestCaseConfig>;
type TestCaseWithConfig (line 14) | pub type TestCaseWithConfig = TestCase<TestCaseConfig>;
type TestCaseConfig (line 19) | pub struct TestCaseConfig {
method from (line 35) | fn from(value: RawForgeConfig) -> Self {
method is_ignored (line 29) | fn is_ignored(&self) -> bool {
method from (line 50) | fn from(value: Option<RawShouldPanicConfig>) -> Self {
FILE: crates/forge-runner/src/package_tests/with_config_resolved.rs
type TestTargetWithResolvedConfig (line 14) | pub type TestTargetWithResolvedConfig = TestTarget<TestCaseResolvedConfig>;
type TestCaseWithResolvedConfig (line 16) | pub type TestCaseWithResolvedConfig = TestCase<TestCaseResolvedConfig>;
method new (line 27) | pub fn new(name: &str, test_details: TestDetails, config: TestCaseReso...
method try_into_program (line 35) | pub fn try_into_program(&self, casm_program: &RawCasmProgram) -> Resul...
function sanitize_test_case_name (line 19) | pub fn sanitize_test_case_name(name: &str) -> String {
type ResolvedForkConfig (line 41) | pub struct ResolvedForkConfig {
type TestCaseResolvedConfig (line 50) | pub struct TestCaseResolvedConfig {
method is_ignored (line 60) | fn is_ignored(&self) -> bool {
FILE: crates/forge-runner/src/partition.rs
type PartitionConfig (line 20) | pub enum PartitionConfig {
method new (line 30) | pub fn new(
type Partition (line 46) | pub struct Partition {
method index (line 55) | pub fn index(&self) -> NonZeroUsize {
method total (line 60) | pub fn total(&self) -> NonZeroUsize {
type Err (line 66) | type Err = String;
method from_str (line 68) | fn from_str(s: &str) -> std::result::Result<Self, Self::Err> {
type PartitionMap (line 94) | pub struct PartitionMap(HashMap<String, NonZeroUsize>);
method build (line 100) | pub fn build(
method get_assigned_index (line 145) | pub fn get_assigned_index(&self, test_full_path: &str) -> Option<NonZe...
method included_tests_count (line 151) | pub fn included_tests_count(&self, run_partition: NonZeroUsize) -> usi...
method total_tests_count (line 160) | pub fn total_tests_count(&self) -> usize {
function collect_test_full_paths (line 166) | fn collect_test_full_paths(test_target_raw: &TestTargetRaw) -> Result<Ve...
function test_happy_case (line 192) | fn test_happy_case(partition: &str, expected_index: usize, expected_tota...
function test_invalid_format (line 207) | fn test_invalid_format(partition: &str) {
function test_invalid_integer (line 216) | fn test_invalid_integer(partition: &str, invalid_part: &str) {
function test_out_of_bounds (line 224) | fn test_out_of_bounds(partition: &str) {
FILE: crates/forge-runner/src/profiler_api.rs
constant PROFILE_DIR (line 7) | pub const PROFILE_DIR: &str = "profile";
function run_profiler (line 9) | pub fn run_profiler(
FILE: crates/forge-runner/src/running.rs
function run_test (line 66) | pub fn run_test(
function run_fuzz_test (line 102) | pub(crate) fn run_fuzz_test(
type RunStatus (line 139) | pub enum RunStatus {
type RunCompleted (line 144) | pub struct RunCompleted {
type RunError (line 154) | pub struct RunError {
type RunResult (line 162) | pub enum RunResult {
function run_test_case (line 169) | pub fn run_test_case(
function extract_test_case_summary (line 403) | fn extract_test_case_summary(
function get_fork_state_reader (line 465) | fn get_fork_state_reader(
function get_context (line 476) | fn get_context<'a>(runtime: &'a ForgeRuntime) -> &'a EntryPointExecution...
function get_call_trace_ref (line 486) | fn get_call_trace_ref(runtime: &mut ForgeRuntime) -> Rc<RefCell<CallTrac...
FILE: crates/forge-runner/src/running/config_run.rs
type PhantomStateReader (line 24) | struct PhantomStateReader;
method get_storage_at (line 27) | fn get_storage_at(
method get_nonce_at (line 34) | fn get_nonce_at(
method get_class_hash_at (line 40) | fn get_class_hash_at(
method get_compiled_class (line 46) | fn get_compiled_class(
method get_compiled_class_hash (line 54) | fn get_compiled_class_hash(
function run_config_pass (line 63) | pub fn run_config_pass(
FILE: crates/forge-runner/src/running/execution.rs
function finalize_execution (line 12) | pub fn finalize_execution(
FILE: crates/forge-runner/src/running/hints.rs
function hints_by_representation (line 6) | pub fn hints_by_representation(assembled_program: &AssembledCairoProgram...
function hints_to_params (line 16) | pub fn hints_to_params(
FILE: crates/forge-runner/src/running/setup.rs
type VmExecutionContext (line 23) | pub struct VmExecutionContext<'a> {
function initialize_execution_context (line 34) | pub fn initialize_execution_context<'a>(
function builtins_from_program (line 84) | fn builtins_from_program(program: &Program) -> Vec<BuiltinName> {
function entry_point_initial_budget (line 88) | pub fn entry_point_initial_budget(syscall_hint_processor: &SyscallHintPr...
function build_test_call_and_entry_point (line 97) | pub fn build_test_call_and_entry_point(
FILE: crates/forge-runner/src/running/syscall_handler.rs
function has_segment_arena (line 5) | pub fn has_segment_arena(test_param_types: &[(GenericTypeId, i16)]) -> b...
function syscall_handler_offset (line 12) | pub fn syscall_handler_offset(builtins_len: usize, has_segment_arena: bo...
FILE: crates/forge-runner/src/running/target.rs
function prepare_test_target (line 21) | pub fn prepare_test_target(
function build_test_details (line 80) | fn build_test_details(
FILE: crates/forge-runner/src/scarb.rs
function load_test_artifacts (line 10) | pub fn load_test_artifacts(
FILE: crates/forge-runner/src/test_case_summary.rs
type GasFuzzingInfo (line 25) | pub struct GasFuzzingInfo {
method fmt (line 32) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
method new (line 53) | pub fn new(gas_usages: &[GasVector]) -> Self {
method fmt (line 42) | fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
type FuzzingStatistics (line 67) | pub struct FuzzingStatistics {
type TestType (line 71) | pub trait TestType {
type GasInfo (line 80) | type GasInfo = GasFuzzingInfo;
type TestStatistics (line 81) | type TestStatistics = FuzzingStatistics;
type TraceData (line 82) | type TraceData = ();
type GasInfo (line 88) | type GasInfo = SingleTestGasInfo;
type TestStatistics (line 89) | type TestStatistics = ();
type TraceData (line 90) | type TraceData = VersionedProfilerCallTrace;
type Fuzzing (line 78) | pub struct Fuzzing;
type Single (line 86) | pub struct Single;
type TestCaseSummary (line 96) | pub enum TestCaseSummary<T: TestType> {
type AnyTestCaseSummary (line 141) | pub enum AnyTestCaseSummary {
method name (line 432) | pub fn name(&self) -> Option<&str> {
method msg (line 440) | pub fn msg(&self) -> Option<&str> {
method debugging_trace (line 448) | pub fn debugging_trace(&self) -> Option<&debugging::Trace> {
method is_passed (line 456) | pub fn is_passed(&self) -> bool {
method is_failed (line 465) | pub fn is_failed(&self) -> bool {
method is_interrupted (line 474) | pub fn is_interrupted(&self) -> bool {
method is_ignored (line 483) | pub fn is_ignored(&self) -> bool {
method is_excluded_from_partition (line 492) | pub fn is_excluded_from_partition(&self) -> bool {
function name (line 148) | pub fn name(&self) -> Option<&str> {
function msg (line 160) | pub fn msg(&self) -> Option<&str> {
function debugging_trace (line 169) | pub fn debugging_trace(&self) -> Option<&debugging::Trace> {
function from (line 184) | pub fn from(results: Vec<TestCaseSummary<Single>>) -> Self {
function build_expected_panic_message (line 242) | fn build_expected_panic_message(expected_panic_value: &ExpectedPanicValu...
function check_if_matching_and_get_message (line 255) | fn check_if_matching_and_get_message(
function from_run_completed (line 287) | pub(crate) fn from_run_completed(
function join_short_strings (line 395) | fn join_short_strings(data: &[Felt]) -> String {
function is_matching_should_panic_data (line 402) | fn is_matching_should_panic_data(data: &[Felt], pattern: &[Felt]) -> bool {
function convert_felts_to_byte_array_string (line 424) | fn convert_felts_to_byte_array_string(data: &[Felt]) -> Option<String> {
constant FLOAT_ERROR (line 506) | const FLOAT_ERROR: f64 = 0.01;
function test_gas_statistics_new (line 509) | fn test_gas_statistics_new() {
function test_is_matching_should_panic_data_entrypoint_failed (line 548) | fn test_is_matching_should_panic_data_entrypoint_failed() {
FILE: crates/forge-runner/src/test_target_summary.rs
type TestTargetSummary (line 5) | pub struct TestTargetSummary {
method count_passed (line 12) | pub fn count_passed(&self) -> usize {
method count_failed (line 20) | pub fn count_failed(&self) -> usize {
method count_interrupted (line 28) | pub fn count_interrupted(&self) -> usize {
method count_ignored (line 36) | pub fn count_ignored(&self) -> usize {
FILE: crates/forge-runner/src/tests_summary.rs
type TestsSummary (line 6) | pub struct TestsSummary {
method new (line 16) | pub fn new(summaries: &[TestTargetSummary], filtered: Option<usize>) -...
method format_summary_message (line 35) | pub fn format_summary_message(&self) -> String {
FILE: crates/forge/src/block_number_map.rs
type BlockNumberMap (line 16) | pub struct BlockNumberMap {
method get_latest_block_number (line 22) | pub async fn get_latest_block_number(&self, url: Url) -> Result<BlockN...
method get_block_number_for_hash (line 38) | pub async fn get_block_number_for_hash(&self, url: Url, hash: Felt) ->...
method get_url_to_latest_block_number (line 53) | pub fn get_url_to_latest_block_number(&self) -> HashMap<Url, BlockNumb...
function fetch_latest_block_number (line 58) | async fn fetch_latest_block_number(url: Url) -> Result<BlockNumber> {
function fetch_block_number_for_hash (line 67) | async fn fetch_block_number_for_hash(url: Url, block_hash: Felt) -> Resu...
FILE: crates/forge/src/clean.rs
constant COVERAGE_DIR (line 8) | const COVERAGE_DIR: &str = "coverage";
constant PROFILE_DIR (line 9) | const PROFILE_DIR: &str = "profile";
constant CACHE_DIR (line 10) | const CACHE_DIR: &str = ".snfoundry_cache";
constant TRACE_DIR (line 11) | const TRACE_DIR: &str = "snfoundry_trace";
function clean (line 13) | pub fn clean(args: CleanArgs, ui: &UI) -> Result<()> {
function clean_dirs (line 54) | fn clean_dirs(root_dirs: &[Utf8PathBuf], dir_name: &str, ui: &UI) -> Res...
function clean_dir (line 60) | fn clean_dir(dir: &Utf8PathBuf, dir_name: &str, ui: &UI) -> Result<()> {
FILE: crates/forge/src/combine_configs.rs
function combine_configs (line 13) | pub fn combine_configs(
function fuzzer_default_seed (line 72) | fn fuzzer_default_seed() {
function runner_config_default_arguments (line 96) | fn runner_config_default_arguments() {
function runner_config_just_scarb_arguments (line 131) | fn runner_config_just_scarb_arguments() {
function runner_config_argument_precedence (line 187) | fn runner_config_argument_precedence() {
FILE: crates/forge/src/compatibility_check.rs
type VersionParser (line 9) | type VersionParser<'a> = dyn Fn(&str) -> Result<Version> + 'a;
type Requirement (line 11) | pub struct Requirement<'a> {
function validate_and_get_output (line 23) | fn validate_and_get_output(&self) -> (bool, String) {
function get_version (line 82) | fn get_version(&self) -> Result<Version> {
function version_satisfies_min (line 91) | fn version_satisfies_min(version: &Version, required: &Version) -> bool {
function version_satisfies_max (line 95) | fn version_satisfies_max(version: &Version, required: &Version) -> bool {
type RequirementsChecker (line 100) | pub struct RequirementsChecker<'a> {
function new (line 106) | pub(crate) fn new(output_on_success: bool) -> Self {
function add_requirement (line 113) | pub fn add_requirement(&mut self, requirement: Requirement<'a>) {
function check (line 117) | pub fn check(&self, ui: &UI) -> Result<()> {
function check_and_prepare_output (line 131) | fn check_and_prepare_output(&self) -> (String, bool) {
function create_version_parser (line 147) | pub fn create_version_parser<'a>(name: &'a str, pattern: &'a str) -> Box...
function happy_case (line 172) | fn happy_case() {
function failing_requirements (line 226) | fn failing_requirements() {
function warning_requirements (line 253) | fn warning_requirements() {
function failing_requirements_on_both_minimal_versions_defined (line 280) | fn failing_requirements_on_both_minimal_versions_defined() {
function failing_tool_not_installed (line 305) | fn failing_tool_not_installed() {
function warning_maximal_version (line 357) | fn warning_maximal_version() {
function test_version_satisfies_min (line 384) | fn test_version_satisfies_min() {
function test_version_satisfies_max (line 397) | fn test_version_satisfies_max() {
FILE: crates/forge/src/lib.rs
constant CAIRO_EDITION (line 42) | pub const CAIRO_EDITION: &str = "2024_07";
constant MINIMAL_SCARB_VERSION (line 44) | const MINIMAL_SCARB_VERSION: Version = Version::new(2, 12, 0);
constant MINIMAL_RECOMMENDED_SCARB_VERSION (line 45) | const MINIMAL_RECOMMENDED_SCARB_VERSION: Version = Version::new(2, 15, 2);
constant MAXIMAL_RECOMMENDED_SCARB_VERSION (line 46) | const MAXIMAL_RECOMMENDED_SCARB_VERSION: Version = Version::new(2, 17, 0);
constant MINIMAL_USC_VERSION (line 47) | const MINIMAL_USC_VERSION: Version = Version::new(2, 0, 0);
constant MINIMAL_SNFORGE_STD_VERSION (line 48) | const MINIMAL_SNFORGE_STD_VERSION: Version = Version::new(0, 50, 0);
type Cli (line 82) | pub struct Cli {
type ForgeSubcommand (line 88) | enum ForgeSubcommand {
type CleanArgs (line 118) | pub struct CleanArgs {
type CleanComponent (line 124) | pub enum CleanComponent {
type ColorOption (line 138) | enum ColorOption {
type TestArgs (line 146) | pub struct TestArgs {
method normalize (line 262) | pub fn normalize(&mut self) {
type ScarbArgs (line 273) | pub struct ScarbArgs {
type Template (line 285) | pub enum Template {
type NewArgs (line 298) | pub struct NewArgs {
type ExitStatus (line 315) | pub enum ExitStatus {
function main_execution (line 321) | pub fn main_execution(ui: Arc<UI>) -> Result<ExitStatus> {
function check_requirements (line 373) | fn check_requirements(output_on_success: bool, ui: &UI) -> Result<()> {
function resolve_thread_count (line 403) | fn resolve_thread_count(max_threads: Option<NonZeroUsize>, ui: &UI) -> u...
FILE: crates/forge/src/main.rs
function main (line 12) | fn main() -> ExitCode {
function init_logging (line 25) | fn init_logging() -> Option<impl Drop> {
FILE: crates/forge/src/new.rs
constant OZ_INTERFACES_VERSION (line 17) | const OZ_INTERFACES_VERSION: Version = Version::new(2, 1, 0);
constant OZ_TOKEN_VERSION (line 18) | const OZ_TOKEN_VERSION: Version = Version::new(3, 0, 0);
constant OZ_UTILS_VERSION (line 19) | const OZ_UTILS_VERSION: Version = Version::new(2, 1, 0);
constant SCARB_WITHOUT_CAIRO_TEST_TEMPLATE (line 23) | const SCARB_WITHOUT_CAIRO_TEST_TEMPLATE: Version = Version::new(2, 13, 0);
type Dependency (line 25) | struct Dependency {
method add (line 32) | fn add(&self, scarb_manifest_path: &PathBuf) -> Result<()> {
type TemplateManifestConfig (line 48) | struct TemplateManifestConfig {
method add_dependencies (line 55) | fn add_dependencies(&self, scarb_manifest_path: &PathBuf) -> Result<()> {
method update_config (line 73) | fn update_config(&self, scarb_manifest_path: &Path) -> Result<()> {
type Error (line 99) | type Error = anyhow::Error;
method try_from (line 101) | fn try_from(template: &Template) -> Result<Self> {
function create_snfoundry_manifest (line 148) | fn create_snfoundry_manifest(path: &PathBuf) -> Result<()> {
function add_template_to_scarb_manifest (line 171) | fn add_template_to_scarb_manifest(path: &PathBuf) -> Result<()> {
function overwrite_or_copy_template_files (line 186) | fn overwrite_or_copy_template_files(
function replace_project_name (line 211) | fn replace_project_name(contents: &[u8], project_name: &str) -> Result<V...
function add_test_script (line 217) | fn add_test_script(document: &mut DocumentMut) {
function add_target_to_toml (line 224) | fn add_target_to_toml(document: &mut DocumentMut) {
function set_cairo_edition (line 237) | fn set_cairo_edition(document: &mut DocumentMut, cairo_edition: &str) {
function add_assert_macros (line 241) | fn add_assert_macros(document: &mut DocumentMut) -> Result<()> {
function add_allow_prebuilt_macros (line 254) | fn add_allow_prebuilt_macros(document: &mut DocumentMut) -> Result<()> {
function add_fork_config (line 276) | fn add_fork_config(document: &mut DocumentMut) -> Result<()> {
function extend_gitignore (line 304) | fn extend_gitignore(path: &Path) -> Result<()> {
function new (line 317) | pub fn new(
function infer_name (line 416) | fn infer_name(name: Option<String>, path: &Utf8PathBuf) -> Result<String> {
function get_template_dir (line 429) | fn get_template_dir(template: &Template) -> Result<Dir<'_>> {
FILE: crates/forge/src/optimize_inlining/args.rs
type OptimizeInliningArgs (line 7) | pub struct OptimizeInliningArgs {
method validate (line 52) | pub fn validate(&self) -> Result<()> {
function validation_fails_without_exact (line 73) | fn validation_fails_without_exact() {
function validation_fails_without_test_name (line 81) | fn validation_fails_without_test_name() {
function validation_passes_with_single_exact_test_name (line 95) | fn validation_passes_with_single_exact_test_name() {
FILE: crates/forge/src/optimize_inlining/contract_size.rs
constant MODULE_PATH_SEPARATOR (line 9) | const MODULE_PATH_SEPARATOR: &str = "::";
type ContractSizeInfo (line 12) | pub struct ContractSizeInfo {
type ContractArtifactType (line 23) | pub enum ContractArtifactType {
function check_and_validate_contract_sizes (line 28) | pub fn check_and_validate_contract_sizes(
function get_contract_size (line 118) | fn get_contract_size(contract_path: &Utf8PathBuf) -> Result<u64> {
FILE: crates/forge/src/optimize_inlining/mod.rs
function optimize_inlining (line 19) | pub fn optimize_inlining(
FILE: crates/forge/src/optimize_inlining/optimizer.rs
constant ROBOTO_REGULAR (line 17) | const ROBOTO_REGULAR: &[u8] = include_bytes!("../../assets/fonts/Roboto-...
constant ROBOTO_FAMILY (line 18) | const ROBOTO_FAMILY: &str = "roboto";
type Optimizer (line 20) | pub struct Optimizer {
method new (line 35) | pub fn new(args: &OptimizeInliningArgs, scarb_metadata: &Metadata) -> ...
method optimize (line 45) | pub fn optimize(
method find_best_result_by_gas (line 55) | pub fn find_best_result_by_gas(&self) -> Result<OptimalResult> {
method find_best_result_by_contract_size (line 74) | pub fn find_best_result_by_contract_size(&self) -> Result<OptimalResul...
method print_results_table (line 92) | pub fn print_results_table(&self, ui: &UI) {
method save_results_graph (line 150) | pub fn save_results_graph(&self, output_path: &Utf8Path, ui: &UI) -> R...
method optimize_bruteforce (line 267) | fn optimize_bruteforce(
method valid_results (line 307) | fn valid_results(&self) -> Result<Vec<&OptimizationIterationResult>> {
method get_max_values (line 319) | fn get_max_values(&self) -> (f64, f64) {
type OptimalResult (line 28) | pub struct OptimalResult {
FILE: crates/forge/src/optimize_inlining/paths.rs
function copy_project_to_temp_dir (line 9) | pub(super) fn copy_project_to_temp_dir(
function rewrite_manifest_paths_to_absolute (line 26) | pub(super) fn rewrite_manifest_paths_to_absolute(
function rewrite_manifest_paths_in_dir (line 37) | fn rewrite_manifest_paths_in_dir(
function rewrite_single_manifest_paths_to_absolute (line 74) | fn rewrite_single_manifest_paths_to_absolute(
function rewrite_dependency_paths_to_absolute (line 99) | fn rewrite_dependency_paths_to_absolute(
function rewrite_dependency_table_paths_to_absolute (line 138) | fn rewrite_dependency_table_paths_to_absolute(
function rewrite_value_if_relative_path (line 177) | fn rewrite_value_if_relative_path(
function absolutize_path (line 197) | fn absolutize_path(
function normalize_utf8_path_lexically (line 215) | pub(super) fn normalize_utf8_path_lexically(path: &Utf8PathBuf) -> Utf8P...
function rewrites_relative_manifest_paths_to_absolute_with_original_manifest_as_base (line 263) | fn rewrites_relative_manifest_paths_to_absolute_with_original_manifest_a...
FILE: crates/forge/src/optimize_inlining/runner.rs
type TotalGas (line 26) | pub struct TotalGas {
method l2 (line 33) | pub fn l2(&self) -> f64 {
type OptimizationIterationResult (line 39) | pub struct OptimizationIterationResult {
function compile_default (line 48) | pub fn compile_default(scarb_metadata: &Metadata, ui: &Arc<UI>) -> Resul...
function run_optimization_iteration (line 79) | pub fn run_optimization_iteration(
function contract_code_l2_gas (line 196) | fn contract_code_l2_gas(sizes: &[ContractSizeInfo]) -> Result<u64> {
type TestRunResult (line 229) | struct TestRunResult {
function run_tests_with_execute_workspace (line 235) | fn run_tests_with_execute_workspace(
function extract_gas_from_summary (line 313) | fn extract_gas_from_summary(summary: &AnyTestCaseSummary) -> TotalGas {
function matching_contract_artifact_filenames (line 329) | fn matching_contract_artifact_filenames(
function restore_non_contract_artifacts (line 357) | fn restore_non_contract_artifacts(
function find_test_target_starknet_artifacts (line 380) | fn find_test_target_starknet_artifacts(
function has_non_empty_contracts_field (line 400) | fn has_non_empty_contracts_field(artifact_path: &Utf8Path) -> Result<boo...
FILE: crates/forge/src/profile_validation/backtrace.rs
function check_backtrace_compatibility (line 10) | pub fn check_backtrace_compatibility(
function check_if_native_disabled (line 22) | fn check_if_native_disabled(test_args: &TestArgs) -> anyhow::Result<()> {
function check_profile (line 31) | fn check_profile(scarb_metadata: &Metadata) -> anyhow::Result<()> {
FILE: crates/forge/src/profile_validation/coverage.rs
function check_coverage_compatibility (line 7) | pub fn check_coverage_compatibility(scarb_metadata: &Metadata) -> anyhow...
function check_profile (line 12) | fn check_profile(scarb_metadata: &Metadata) -> anyhow::Result<()> {
FILE: crates/forge/src/profile_validation/mod.rs
function check_profile_compatibility (line 13) | pub fn check_profile_compatibility(
function get_manifest (line 27) | fn get_manifest(scarb_metadata: &Metadata) -> anyhow::Result<DocumentMut> {
function check_cairo_profile_entries (line 32) | fn check_cairo_profile_entries(
function contains_entry_with_value (line 51) | fn contains_entry_with_value(table: &Table, key: &str, value: &str) -> b...
FILE: crates/forge/src/run_tests/maat.rs
function env_ignore_fork_tests (line 2) | pub fn env_ignore_fork_tests() -> bool {
FILE: crates/forge/src/run_tests/messages/collected_tests_count.rs
type CollectedTestsCountMessage (line 7) | pub struct CollectedTestsCountMessage {
method text (line 13) | fn text(&self) -> String {
method json (line 21) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/latest_blocks_numbers.rs
type LatestBlocksNumbersMessage (line 7) | pub struct LatestBlocksNumbersMessage {
method new (line 13) | pub fn new(
method text (line 23) | fn text(&self) -> String {
method json (line 37) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/overall_summary.rs
type OverallSummaryMessage (line 9) | pub struct OverallSummaryMessage {
constant LABEL (line 14) | pub const LABEL: &str = "Tests summary";
method new (line 17) | pub fn new(summaries: &[TestTargetSummary], filtered: Option<usize>) -...
method text (line 25) | fn text(&self) -> String {
method json (line 30) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/partition.rs
type PartitionFinishedMessage (line 8) | pub struct PartitionFinishedMessage {
method new (line 16) | pub fn new(
method summary (line 28) | fn summary(&self) -> String {
method text (line 40) | fn text(&self) -> String {
method json (line 45) | fn json(&self) -> Value {
type PartitionStartedMessage (line 51) | pub struct PartitionStartedMessage {
method new (line 57) | pub fn new(partition: Partition) -> Self {
method summary (line 61) | fn summary(&self) -> String {
method text (line 67) | fn text(&self) -> String {
method json (line 72) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/tests_failure_summary.rs
type TestsFailureSummaryMessage (line 9) | pub struct TestsFailureSummaryMessage {
method new (line 15) | pub fn new(all_failed_tests: &[&AnyTestCaseSummary]) -> Self {
method text (line 26) | fn text(&self) -> String {
method json (line 38) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/tests_run.rs
type TestsRunMessage (line 8) | pub struct TestsRunMessage {
method new (line 15) | pub fn new(test_target_location: TestTargetLocation, tests_num: usize)...
method text (line 24) | fn text(&self) -> String {
method json (line 33) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/messages/tests_summary.rs
type TestsSummaryMessage (line 8) | pub struct TestsSummaryMessage {
constant LABEL (line 13) | pub const LABEL: &str = "Tests";
method new (line 16) | pub fn new(summaries: &[TestTargetSummary], filtered: Option<usize>) -...
method text (line 24) | fn text(&self) -> String {
method json (line 29) | fn json(&self) -> Value {
FILE: crates/forge/src/run_tests/package.rs
type PackageTestResult (line 44) | pub struct PackageTestResult {
method new (line 51) | pub fn new(summaries: Vec<TestTargetSummary>, filtered: Option<usize>)...
method filtered (line 59) | pub fn filtered(&self) -> Option<usize> {
method summaries (line 64) | pub fn summaries(self) -> Vec<TestTargetSummary> {
type RunForPackageArgs (line 69) | pub struct RunForPackageArgs {
method build (line 80) | pub fn build(
function spawn_prepare_test_target (line 145) | fn spawn_prepare_test_target(
function sum_test_cases_from_test_target (line 152) | fn sum_test_cases_from_test_target(
function run_for_package (line 174) | pub async fn run_for_package(
FILE: crates/forge/src/run_tests/resolve_config.rs
function resolve_config (line 23) | pub async fn resolve_config(
function resolve_fork_config (line 65) | async fn resolve_fork_config(
function get_fork_target_from_runner_config (line 95) | fn get_fork_target_from_runner_config<'a>(
function replace_id_with_params (line 108) | fn replace_id_with_params(
function program_for_testing (line 150) | fn program_for_testing() -> ProgramArtifact {
function create_test_case_with_config (line 162) | fn create_test_case_with_config(
function create_test_target_with_cases (line 187) | fn create_test_target_with_cases(test_cases: Vec<TestCaseWithConfig>) ->...
function create_fork_target (line 200) | fn create_fork_target(name: &str, url: &str, block_id: BlockId) -> ForkT...
function to_runnable_non_existent_id (line 209) | async fn to_runnable_non_existent_id() {
function test_ignored_filter_skips_fork_config_resolution (line 244) | async fn test_ignored_filter_skips_fork_config_resolution() {
function test_non_ignored_filter_resolves_fork_config (line 275) | async fn test_non_ignored_filter_resolves_fork_config() {
function test_name_filtered_test_still_resolves_fork_config (line 320) | async fn test_name_filtered_test_still_resolves_fork_config() {
function test_mixed_scenarios_with_ignored_filter (line 365) | async fn test_mixed_scenarios_with_ignored_filter() {
function test_only_ignored_filter_skips_non_ignored_fork_resolution (line 440) | async fn test_only_ignored_filter_skips_non_ignored_fork_resolution() {
function test_include_ignored_filter_resolves_all_fork_configs (line 497) | async fn test_include_ignored_filter_resolves_all_fork_configs() {
function test_fork_config_resolution_with_inline_config (line 558) | async fn test_fork_config_resolution_with_inline_config() {
function test_overridden_fork_config_resolution (line 596) | async fn test_overridden_fork_config_resolution() {
function test_skip_filter_does_not_affect_fork_resolution (line 643) | async fn test_skip_filter_does_not_affect_fork_resolution() {
FILE: crates/forge/src/run_tests/test_target.rs
type ExitFirstChannel (line 21) | pub struct ExitFirstChannel {
method new (line 34) | pub fn new() -> Self {
method sender (line 40) | pub fn sender(&self) -> Sender<()> {
method close (line 44) | pub fn close(&mut self) {
method default (line 27) | fn default() -> Self {
type TestTargetRunResult (line 50) | pub enum TestTargetRunResult {
function run_for_test_target (line 56) | pub async fn run_for_test_target(
function should_print_test_result_message (line 166) | fn should_print_test_result_message(result: &AnyTestCaseSummary) -> bool {
FILE: crates/forge/src/run_tests/workspace.rs
type WorkspaceExecutionSummary (line 31) | pub struct WorkspaceExecutionSummary {
function run_for_workspace (line 37) | pub async fn run_for_workspace(args: TestArgs, ui: Arc<UI>) -> Result<Ex...
function execute_workspace (line 65) | pub async fn execute_workspace(
function calculate_total_filtered_count (line 190) | fn calculate_total_filtered_count(
function get_partitioning_config (line 202) | fn get_partitioning_config(
function extract_failed_tests (line 219) | fn extract_failed_tests(
function set_forge_test_filter (line 228) | fn set_forge_test_filter(test_filter: String) {
function unset_forge_test_filter (line 235) | fn unset_forge_test_filter() {
FILE: crates/forge/src/scarb.rs
method tool_name (line 12) | fn tool_name() -> &'static str {
method from_raw (line 16) | fn from_raw(config: serde_json::Value) -> Result<Self>
function load_package_config (line 28) | pub fn load_package_config<T: Config + Default>(
function build_artifacts_with_scarb (line 45) | pub fn build_artifacts_with_scarb(
function build_contracts_with_scarb (line 58) | fn build_contracts_with_scarb(
function build_test_artifacts_with_scarb (line 73) | fn build_test_artifacts_with_scarb(
FILE: crates/forge/src/scarb/config.rs
constant SCARB_MANIFEST_TEMPLATE_CONTENT (line 8) | pub const SCARB_MANIFEST_TEMPLATE_CONTENT: &str = r#"
type ForgeConfigFromScarb (line 42) | pub struct ForgeConfigFromScarb {
type ForkTarget (line 76) | pub struct ForkTarget {
function validate_forks (line 82) | fn validate_forks<'de, D>(deserializer: D) -> Result<Vec<ForkTarget>, D:...
function test_fork_target_new_valid_number (line 107) | fn test_fork_target_new_valid_number() {
function test_fork_target_new_valid_hash (line 134) | fn test_fork_target_new_valid_hash() {
function test_fork_target_new_valid_tag (line 159) | fn test_fork_target_new_valid_tag() {
function test_fork_target_invalid_cases (line 216) | fn test_fork_target_invalid_cases(input: &serde_json::Value, expected_er...
FILE: crates/forge/src/shared_cache.rs
type FailedTestsCache (line 8) | pub struct FailedTestsCache {
method new (line 16) | pub fn new(cache_dir: &Utf8PathBuf) -> Self {
method load (line 22) | pub fn load(&self) -> Result<Vec<String>> {
method save_failed_tests (line 35) | pub fn save_failed_tests(&self, all_failed_tests: &[&AnyTestCaseSummar...
constant FILE_WITH_PREV_TESTS_FAILED (line 12) | const FILE_WITH_PREV_TESTS_FAILED: &str = ".prev_tests_failed";
FILE: crates/forge/src/test_filter.rs
type TestsFilter (line 12) | pub struct TestsFilter {
method from_flags (line 44) | pub fn from_flags(
method is_in_partition (line 88) | fn is_in_partition(&self, sanitized_name: &str) -> bool {
method filter_tests (line 103) | pub(crate) fn filter_tests(
type NameFilter (line 27) | pub(crate) enum NameFilter {
type IgnoredFilter (line 34) | pub enum IgnoredFilter {
method filter (line 144) | fn filter<T>(&self, test_case: &TestCase<T>) -> FilterResult
function program_for_testing (line 189) | fn program_for_testing() -> ProgramArtifact {
function from_flags_only_ignored_and_include_ignored_both_true (line 203) | fn from_flags_only_ignored_and_include_ignored_both_true() {
function from_flags_exact_match_true_without_test_filter_name (line 218) | fn from_flags_exact_match_true_without_test_filter_name() {
function filtering_tests (line 233) | fn filtering_tests() {
function filtering_with_no_tests (line 523) | fn filtering_with_no_tests() {
function filtering_with_exact_match (line 570) | fn filtering_with_exact_match() {
function filtering_with_only_ignored (line 778) | fn filtering_with_only_ignored() {
function filtering_with_include_ignored (line 891) | fn filtering_with_include_ignored() {
FILE: crates/forge/src/warn.rs
function warn_if_incompatible_rpc_version (line 16) | pub(crate) async fn warn_if_incompatible_rpc_version(
function snforge_std_recommended_version (line 51) | fn snforge_std_recommended_version() -> VersionReq {
function error_if_snforge_std_not_compatible (line 65) | pub fn error_if_snforge_std_not_compatible(scarb_metadata: &Metadata) ->...
function warn_if_snforge_std_does_not_match_package_version (line 89) | pub fn warn_if_snforge_std_does_not_match_package_version(
FILE: crates/forge/tests/data/wasm_oracles/wasm_oracle/src/lib.rs
type MyOracle (line 13) | struct MyOracle;
method add (line 16) | fn add(left: u64, right: u64) -> u64 {
method err (line 20) | fn err() -> Result<String, String> {
method panic (line 24) | fn panic() -> Result<String, String> {
FILE: crates/forge/tests/e2e/backtrace.rs
function test_backtrace_missing_env (line 11) | fn test_backtrace_missing_env() {
function test_backtrace_native_execution (line 28) | fn test_backtrace_native_execution() {
function snap_test_backtrace (line 44) | fn snap_test_backtrace() {
function snap_test_backtrace_without_inlines (line 57) | fn snap_test_backtrace_without_inlines() {
function test_wrong_scarb_toml_configuration (line 71) | fn test_wrong_scarb_toml_configuration() {
function snap_test_backtrace_panic (line 106) | fn snap_test_backtrace_panic() {
function snap_test_backtrace_panic_without_optimizations (line 119) | fn snap_test_backtrace_panic_without_optimizations() {
function snap_test_backtrace_panic_without_inlines (line 142) | fn snap_test_backtrace_panic_without_inlines() {
function snap_test_handled_error_not_display (line 156) | fn snap_test_handled_error_not_display() {
function without_inlines (line 176) | fn without_inlines(temp_dir: &TempDir) {
FILE: crates/forge/tests/e2e/build_profile.rs
function simple_package_build_profile (line 5) | fn simple_package_build_profile() {
function simple_package_build_profile_and_pass_args (line 38) | fn simple_package_build_profile_and_pass_args() {
FILE: crates/forge/tests/e2e/build_trace_data.rs
function simple_package_save_trace (line 13) | fn simple_package_save_trace() {
function trace_has_contract_and_function_names (line 56) | fn trace_has_contract_and_function_names() {
function assert_contract_and_function_names (line 83) | fn assert_contract_and_function_names(trace: &ProfilerCallTrace) {
function trace_has_cairo_execution_info (line 100) | fn trace_has_cairo_execution_info() {
function assert_cairo_execution_info_exists (line 122) | fn assert_cairo_execution_info_exists(trace: &ProfilerCallTrace) {
function trace_has_deploy_with_no_constructor_phantom_nodes (line 142) | fn trace_has_deploy_with_no_constructor_phantom_nodes() {
function trace_is_produced_even_if_contract_panics (line 177) | fn trace_is_produced_even_if_contract_panics() {
function trace_contains_human_readable_form_of_selectors_for_forks (line 206) | fn trace_contains_human_readable_form_of_selectors_for_forks() {
FILE: crates/forge/tests/e2e/clean.rs
constant COVERAGE_DIR (line 8) | const COVERAGE_DIR: &str = "coverage";
constant PROFILE_DIR (line 9) | const PROFILE_DIR: &str = "profile";
constant CACHE_DIR (line 10) | const CACHE_DIR: &str = ".snfoundry_cache";
constant TRACE_DIR (line 11) | const TRACE_DIR: &str = "snfoundry_trace";
type CleanComponentsState (line 15) | struct CleanComponentsState {
function test_clean_coverage (line 27) | fn test_clean_coverage() {
function test_clean_profile (line 64) | fn test_clean_profile() {
function test_clean_cache (line 96) | fn test_clean_cache() {
function test_clean_all (line 132) | fn test_clean_all() {
function test_clean_all_and_component (line 160) | fn test_clean_all_and_component() {
function generate_clean_components (line 185) | fn generate_clean_components(state: CleanComponentsState, temp_dir: &Tem...
function check_clean_components_state (line 232) | fn check_clean_components_state(path: &Path) -> CleanComponentsState {
function dirs_exist (line 256) | fn dirs_exist(root_dirs: &[Utf8PathBuf], dir_name: &str) -> bool {
function dir_exists (line 261) | fn dir_exists(dir: &Utf8PathBuf, dir_name: &str) -> bool {
FILE: crates/forge/tests/e2e/code_quality.rs
function validate_snforge_std (line 5) | fn validate_snforge_std() {
FILE: crates/forge/tests/e2e/collection.rs
function collection_with_lib (line 6) | fn collection_with_lib() {
function collection_without_lib (line 44) | fn collection_without_lib() {
FILE: crates/forge/tests/e2e/color.rs
function runner_color (line 4) | fn runner_color(value: &str) -> SnapboxCommand {
function is_colored (line 11) | fn is_colored(output: &OutputAssert) -> bool {
function color_always (line 18) | fn color_always() {
function color_never (line 30) | fn color_never() {
FILE: crates/forge/tests/e2e/common/mod.rs
function get_trace_from_trace_node (line 10) | pub fn get_trace_from_trace_node(trace_node: &ProfilerCallTraceNode) -> ...
FILE: crates/forge/tests/e2e/common/runner.rs
function runner (line 20) | pub(crate) fn runner<T: AsRef<Path>>(temp_dir: T) -> SnapboxCommand {
function snforge_test_bin_path (line 25) | pub fn snforge_test_bin_path() -> PathBuf {
function test_runner (line 36) | pub(crate) fn test_runner<T: AsRef<Path>>(temp_dir: T) -> SnapboxCommand {
function test_runner_native (line 48) | pub(crate) fn test_runner_native<T: AsRef<Path>>(temp_dir: T) -> Snapbox...
function test_runner_vm (line 56) | pub(crate) fn test_runner_vm<T: AsRef<Path>>(temp_dir: T) -> SnapboxComm...
function is_package_from_docs_listings (line 63) | fn is_package_from_docs_listings(package: &str) -> bool {
type Package (line 68) | pub enum Package {
function setup_package_with_file_patterns (line 73) | pub(crate) fn setup_package_with_file_patterns(
function setup_package (line 133) | pub(crate) fn setup_package(package_name: &str) -> TempDir {
function setup_package_at_path (line 137) | pub(crate) fn setup_package_at_path(package_path: Utf8PathBuf) -> TempDir {
function replace_node_rpc_url_placeholders (line 141) | fn replace_node_rpc_url_placeholders(dir_path: &Path) {
function setup_hello_workspace (line 159) | pub(crate) fn setup_hello_workspace() -> TempDir {
function setup_virtual_workspace (line 213) | pub(crate) fn setup_virtual_workspace() -> TempDir {
function get_remote_url (line 257) | pub(crate) fn get_remote_url() -> String {
function get_current_branch (line 289) | pub(crate) fn get_current_branch() -> String {
FILE: crates/forge/tests/e2e/completions.rs
function test_happy_case (line 9) | fn test_happy_case() {
function test_generate_completions_unsupported_shell (line 21) | fn test_generate_completions_unsupported_shell() {
FILE: crates/forge/tests/e2e/components.rs
function contract_components (line 4) | fn contract_components() {
FILE: crates/forge/tests/e2e/contract_artifacts.rs
function unit_and_integration (line 9) | fn unit_and_integration() {
function unit_and_lib_integration (line 31) | fn unit_and_lib_integration() {
function only_integration (line 53) | fn only_integration() {
function only_unit (line 74) | fn only_unit() {
function only_lib_integration (line 94) | fn only_lib_integration() {
function with_features (line 115) | fn with_features() {
function with_features_fails_without_flag (line 141) | fn with_features_fails_without_flag() {
function custom_target (line 179) | fn custom_target() {
function custom_target_custom_names (line 205) | fn custom_target_custom_names() {
function custom_target_only_integration (line 232) | fn custom_target_only_integration() {
function custom_target_only_integration_without_external (line 254) | fn custom_target_only_integration_without_external() {
function simple_package_no_starknet_contract_target (line 291) | fn simple_package_no_starknet_contract_target() {
function no_optimization_flag (line 367) | fn no_optimization_flag() {
FILE: crates/forge/tests/e2e/coverage.rs
function test_coverage_project (line 10) | fn test_coverage_project() {
function test_coverage_project_and_pass_args (line 22) | fn test_coverage_project_and_pass_args() {
function test_fail_wrong_set_up (line 37) | fn test_fail_wrong_set_up() {
FILE: crates/forge/tests/e2e/debugger.rs
function test_launch_debugger_waits_for_connection (line 10) | fn test_launch_debugger_waits_for_connection() {
function test_launch_debugger_fails_for_fuzzer_test (line 62) | fn test_launch_debugger_fails_for_fuzzer_test() {
FILE: crates/forge/tests/e2e/debugging.rs
function debugging_trace_custom_components (line 6) | fn debugging_trace_custom_components() {
function debugging_trace_detailed (line 24) | fn debugging_trace_detailed() {
function debugging_trace_detailed_fork (line 40) | fn debugging_trace_detailed_fork() {
function debugging_trace_standard (line 56) | fn debugging_trace_standard() {
function debugging_trace_standard_fork (line 72) | fn debugging_trace_standard_fork() {
function debugging_trace_minimal (line 88) | fn debugging_trace_minimal() {
function debugging_trace_minimal_fork (line 104) | fn debugging_trace_minimal_fork() {
function debugging_double_flags (line 120) | fn debugging_double_flags() {
function test_output (line 139) | fn test_output(trace_message_fn: fn(&str, &str) -> String, package_name:...
function detailed_debugging_trace_message (line 167) | fn detailed_debugging_trace_message(test_name: &str, package_name: &str)...
function detailed_debugging_trace_message_fork (line 227) | fn detailed_debugging_trace_message_fork(test_name: &str, package_name: ...
function standard_debugging_trace_message (line 287) | fn standard_debugging_trace_message(test_name: &str, package_name: &str)...
function standard_debugging_trace_message_fork (line 317) | fn standard_debugging_trace_message_fork(test_name: &str, package_name: ...
function minimal_debugging_trace_message (line 347) | fn minimal_debugging_trace_message(test_name: &str, package_name: &str) ...
function minimal_debugging_trace_message_fork (line 365) | fn minimal_debugging_trace_message_fork(test_name: &str, package_name: &...
function custom_output_trace_message (line 383) | fn custom_output_trace_message(test_name: &str, package_name: &str) -> S...
FILE: crates/forge/tests/e2e/docs_snippets_validation.rs
function test_docs_snippets (line 18) | fn test_docs_snippets() {
FILE: crates/forge/tests/e2e/env.rs
function env_var_reading (line 6) | fn env_var_reading() {
FILE: crates/forge/tests/e2e/features.rs
function features (line 6) | fn features() {
function compilation_fails_when_no_features_passed (line 33) | fn compilation_fails_when_no_features_passed() {
FILE: crates/forge/tests/e2e/fork_warning.rs
type Params (line 16) | struct Params {
function setup_redirect_server (line 21) | fn setup_redirect_server() {
function should_print_warning (line 41) | fn should_print_warning() {
function should_dedup_urls (line 90) | fn should_dedup_urls() {
function should_print_foreach (line 148) | fn should_print_foreach() {
FILE: crates/forge/tests/e2e/forking.rs
function without_cache (line 10) | fn without_cache() {
function with_cache (line 42) | fn with_cache() {
function with_clean_cache (line 77) | fn with_clean_cache() {
function printing_latest_block_number (line 106) | fn printing_latest_block_number() {
function with_skip_fork_tests_env (line 136) | fn with_skip_fork_tests_env() {
FILE: crates/forge/tests/e2e/fuzzing.rs
function fuzzing (line 7) | fn fuzzing() {
function fuzzing_set_runs (line 49) | fn fuzzing_set_runs() {
function fuzzing_set_seed (line 94) | fn fuzzing_set_seed() {
function fuzzing_incorrect_runs (line 139) | fn fuzzing_incorrect_runs() {
function fuzzing_incorrect_function_args (line 158) | fn fuzzing_incorrect_function_args() {
function fuzzing_exit_first (line 178) | fn fuzzing_exit_first() {
function fuzzing_exit_first_single_fail (line 211) | fn fuzzing_exit_first_single_fail() {
function fuzzing_multiple_attributes (line 243) | fn fuzzing_multiple_attributes() {
function generate_arg_cheatcode (line 270) | fn generate_arg_cheatcode() {
function no_fuzzer_attribute (line 300) | fn no_fuzzer_attribute() {
function fuzz_generic_struct (line 330) | fn fuzz_generic_struct() {
FILE: crates/forge/tests/e2e/gas_report.rs
function snap_basic (line 9) | fn snap_basic() {
function snap_recursive_calls (line 22) | fn snap_recursive_calls() {
function snap_multiple_contracts_and_constructor (line 35) | fn snap_multiple_contracts_and_constructor() {
function snap_fork (line 48) | fn snap_fork() {
function no_transactions (line 63) | fn no_transactions() {
FILE: crates/forge/tests/e2e/io_operations.rs
function file_reading (line 9) | fn file_reading() {
FILE: crates/forge/tests/e2e/new.rs
function create_new_project_dir_not_exist (line 36) | fn create_new_project_dir_not_exist(template: &Template) {
function create_new_project_dir_not_empty (line 57) | fn create_new_project_dir_not_empty() {
function create_new_project_dir_exists_and_empty (line 78) | fn create_new_project_dir_exists_and_empty() {
function init_new_project_from_scarb (line 96) | fn init_new_project_from_scarb() {
function append_to_path_var (line 116) | pub fn append_to_path_var(path: &Path) -> OsString {
function validate_init (line 123) | fn validate_init(project_path: &PathBuf, validate_snforge_std: bool, tem...
function get_expected_manifest_content (line 162) | fn get_expected_manifest_content(template: &Template, validate_snforge_s...
function get_expected_output (line 232) | fn get_expected_output(template: &Template) -> &str {
function create_new_project_and_check_gitignore (line 287) | fn create_new_project_and_check_gitignore() {
function assert_manifest_matches (line 324) | fn assert_manifest_matches(expected: &str, actual: &str) {
FILE: crates/forge/tests/e2e/optimize_inlining.rs
function read_optimization_graph (line 8) | fn read_optimization_graph(dir: &std::path::Path, min: u32, max: u32, st...
function snap_optimize_inlining_dry_run (line 16) | fn snap_optimize_inlining_dry_run() {
function snap_optimize_inlining_updates_manifest (line 43) | fn snap_optimize_inlining_updates_manifest() {
function optimize_inlining_fails_without_contracts (line 112) | fn optimize_inlining_fails_without_contracts() {
function optimize_inlining_fails_with_nonexistent_contract (line 131) | fn optimize_inlining_fails_with_nonexistent_contract() {
function optimize_inlining_fails_with_low_max_program_len (line 158) | fn optimize_inlining_fails_with_low_max_program_len() {
function optimize_inlining_fails_when_no_tests_matched (line 191) | fn optimize_inlining_fails_when_no_tests_matched() {
function optimize_inlining_requires_single_exact_test_case (line 216) | fn optimize_inlining_requires_single_exact_test_case() {
FILE: crates/forge/tests/e2e/oracles.rs
function wasm (line 12) | fn wasm() {
FILE: crates/forge/tests/e2e/package_warnings.rs
function no_warnings_are_produced (line 10) | fn no_warnings_are_produced() {
FILE: crates/forge/tests/e2e/partitioning.rs
function test_does_not_work_with_exact_flag (line 6) | fn test_does_not_work_with_exact_flag() {
function test_whole_workspace_partition_1_2 (line 22) | fn test_whole_workspace_partition_1_2() {
function test_whole_workspace_partition_2_2 (line 70) | fn test_whole_workspace_partition_2_2() {
function test_whole_workspace_partition_1_3 (line 123) | fn test_whole_workspace_partition_1_3() {
function test_whole_workspace_partition_2_3 (line 169) | fn test_whole_workspace_partition_2_3() {
function test_whole_workspace_partition_3_3 (line 220) | fn test_whole_workspace_partition_3_3() {
function test_works_with_name_filter (line 265) | fn test_works_with_name_filter() {
function test_works_with_coverage (line 308) | fn test_works_with_coverage() {
FILE: crates/forge/tests/e2e/plugin_diagnostics.rs
function syntax (line 15) | fn syntax() {
function semantic (line 133) | fn semantic() {
function parameters (line 181) | fn parameters() {
function multiple (line 238) | fn multiple() {
function generic (line 342) | fn generic() {
function inline_macros (line 378) | fn inline_macros() {
function different_attributes (line 414) | fn different_attributes() {
function test_case (line 466) | fn test_case() {
FILE: crates/forge/tests/e2e/plugin_versions.rs
function new_with_new_scarb (line 15) | fn new_with_new_scarb() {
function new_with_minimal_scarb (line 41) | fn new_with_minimal_scarb() {
function new_scarb_new_macros (line 72) | fn new_scarb_new_macros() {
function new_scarb_old_macros (line 112) | fn new_scarb_old_macros() {
FILE: crates/forge/tests/e2e/profiles.rs
function release (line 6) | fn release() {
function custom (line 25) | fn custom() {
FILE: crates/forge/tests/e2e/requirements.rs
function happy_path (line 6) | fn happy_path() {
function test_warning_on_scarb_version_below_recommended (line 24) | fn test_warning_on_scarb_version_below_recommended() {
FILE: crates/forge/tests/e2e/running.rs
function simple_package (line 12) | fn simple_package() {
function simple_package_native (line 61) | fn simple_package_native() {
function simple_package_with_cheats (line 106) | fn simple_package_with_cheats() {
function simple_package_with_git_dependency (line 131) | fn simple_package_with_git_dependency() {
function with_failing_scarb_build (line 205) | fn with_failing_scarb_build() {
function with_filter (line 229) | fn with_filter() {
function with_filter_matching_module (line 251) | fn with_filter_matching_module() {
function with_exact_filter (line 277) | fn with_exact_filter() {
function with_skip_filter_matching_module (line 303) | fn with_skip_filter_matching_module() {
function with_skip_filter_matching_full_module_path (line 328) | fn with_skip_filter_matching_full_module_path() {
function with_skip_filter_matching_test_name (line 377) | fn with_skip_filter_matching_test_name() {
function with_skip_filter_matching_multiple_test_name (line 413) | fn with_skip_filter_matching_multiple_test_name() {
function with_exact_filter_and_duplicated_test_names (line 449) | fn with_exact_filter_and_duplicated_test_names() {
function with_non_matching_filter (line 475) | fn with_non_matching_filter() {
function with_ignored_flag (line 496) | fn with_ignored_flag() {
function with_include_ignored_flag (line 526) | fn with_include_ignored_flag() {
function with_ignored_flag_and_filter (line 577) | fn with_ignored_flag_and_filter() {
function with_include_ignored_flag_and_filter (line 610) | fn with_include_ignored_flag_and_filter() {
function with_rerun_failed_flag_without_cache (line 644) | fn with_rerun_failed_flag_without_cache() {
function with_rerun_failed_flag_and_name_filter (line 690) | fn with_rerun_failed_flag_and_name_filter() {
function with_rerun_failed_flag (line 724) | fn with_rerun_failed_flag() {
function with_panic_data_decoding (line 761) | fn with_panic_data_decoding() {
function with_exit_first (line 825) | fn with_exit_first() {
function with_exit_first_flag (line 872) | fn with_exit_first_flag() {
function should_panic (line 900) | fn should_panic() {
function incompatible_snforge_std_version_warning (line 993) | fn incompatible_snforge_std_version_warning() {
function incompatible_snforge_std_version_error (line 1031) | fn incompatible_snforge_std_version_error() {
function detailed_resources_flag_cairo_steps (line 1058) | fn detailed_resources_flag_cairo_steps() {
function detailed_resources_flag (line 1090) | fn detailed_resources_flag() {
function detailed_resources_mixed_resources (line 1119) | fn detailed_resources_mixed_resources() {
function catch_runtime_errors (line 1151) | fn catch_runtime_errors() {
function call_nonexistent_selector (line 1168) | fn call_nonexistent_selector() {
function exact_printing_pass (line 1186) | fn exact_printing_pass() {
function exact_printing_fail (line 1204) | fn exact_printing_fail() {
function exact_printing_mixed (line 1234) | fn exact_printing_mixed() {
function dispatchers (line 1263) | fn dispatchers() {
function test_interact_with_state (line 1290) | fn test_interact_with_state() {
function max_threads_exceeds_available_prints_warning (line 1317) | fn max_threads_exceeds_available_prints_warning() {
function max_threads_within_available_no_warning (line 1328) | fn max_threads_within_available_no_warning() {
FILE: crates/forge/tests/e2e/steps.rs
function should_allow_less_than_default (line 8) | fn should_allow_less_than_default() {
function should_allow_more_than_10m (line 48) | fn should_allow_more_than_10m() {
function should_default_to_10m (line 73) | fn should_default_to_10m() {
FILE: crates/forge/tests/e2e/templates.rs
function validate_templates (line 17) | fn validate_templates(template: &Template) {
FILE: crates/forge/tests/e2e/test_case.rs
function simple_addition (line 10) | fn simple_addition() {
function with_exit_first_flag (line 38) | fn with_exit_first_flag() {
function with_multiple_attributes (line 75) | fn with_multiple_attributes() {
function addition_with_name_arg (line 122) | fn addition_with_name_arg() {
function with_contract_deploy (line 153) | fn with_contract_deploy() {
function with_fuzzer_and_contract_deploy (line 184) | fn with_fuzzer_and_contract_deploy() {
FILE: crates/forge/tests/e2e/trace_print.rs
function trace_info_print (line 6) | fn trace_info_print() {
FILE: crates/forge/tests/e2e/trace_resources.rs
function trace_resources_call (line 17) | fn trace_resources_call() {
function trace_resources_deploy (line 22) | fn trace_resources_deploy() {
function trace_resources_l1_handler (line 27) | fn trace_resources_l1_handler() {
function trace_resources_lib_call (line 32) | fn trace_resources_lib_call() {
function trace_resources_failed_call (line 38) | fn trace_resources_failed_call() {
function trace_resources_failed_lib_call (line 44) | fn trace_resources_failed_lib_call() {
function assert_vm_resources_for_test (line 48) | fn assert_vm_resources_for_test(
function deserialize_call_trace (line 68) | fn deserialize_call_trace(test_name: &str, temp_dir: &TempDir) -> Versio...
function check_vm_resources_and_easily_unifiable_syscalls (line 76) | fn check_vm_resources_and_easily_unifiable_syscalls(
function assert_correct_diff_for_builtins_and_easily_unifiable_syscalls (line 103) | fn assert_correct_diff_for_builtins_and_easily_unifiable_syscalls(
function assert_l2_l1_messages (line 146) | fn assert_l2_l1_messages(call_trace: &ProfilerCallTrace) {
function check_call (line 162) | fn check_call(test_call_trace: &ProfilerCallTrace) {
function check_deploy (line 190) | fn check_deploy(test_call_trace: &ProfilerCallTrace) {
function check_l1_handler (line 203) | fn check_l1_handler(test_call_trace: &ProfilerCallTrace) {
function check_libcall (line 216) | fn check_libcall(test_call_trace: &ProfilerCallTrace) {
function assert_not_easily_unifiable_syscalls (line 242) | fn assert_not_easily_unifiable_syscalls(
function is_greater_eq_than (line 273) | fn is_greater_eq_than(
FILE: crates/forge/tests/e2e/workspaces.rs
function root_workspace_without_arguments (line 7) | fn root_workspace_without_arguments() {
function root_workspace_specific_package (line 42) | fn root_workspace_specific_package() {
function root_workspace_specific_package2 (line 72) | fn root_workspace_specific_package2() {
function root_workspace_specific_package_and_name (line 110) | fn root_workspace_specific_package_and_name() {
function root_workspace_specify_root_package (line 136) | fn root_workspace_specify_root_package() {
function root_workspace_inside_nested_package (line 175) | fn root_workspace_inside_nested_package() {
function root_workspace_for_entire_workspace (line 205) | fn root_workspace_for_entire_workspace() {
function root_workspace_for_entire_workspace_inside_package (line 275) | fn root_workspace_for_entire_workspace_inside_package() {
function root_workspace_for_entire_workspace_and_specific_package (line 349) | fn root_workspace_for_entire_workspace_and_specific_package() {
function root_workspace_missing_package (line 363) | fn root_workspace_missing_package() {
function virtual_workspace_without_arguments (line 377) | fn virtual_workspace_without_arguments() {
function virtual_workspace_specify_package (line 426) | fn virtual_workspace_specify_package() {
function virtual_workspace_specific_package2 (line 453) | fn virtual_workspace_specific_package2() {
function virtual_workspace_specific_package_and_name (line 487) | fn virtual_workspace_specific_package_and_name() {
function virtual_workspace_inside_nested_package (line 513) | fn virtual_workspace_inside_nested_package() {
function virtual_workspace_for_entire_workspace (line 542) | fn virtual_workspace_for_entire_workspace() {
function virtual_workspace_for_entire_workspace_inside_package (line 591) | fn virtual_workspace_for_entire_workspace_inside_package() {
function virtual_workspace_for_entire_workspace_and_specific_package (line 641) | fn virtual_workspace_for_entire_workspace_and_specific_package() {
function virtual_workspace_missing_package (line 656) | fn virtual_workspace_missing_package() {
function root_workspace_for_entire_workspace_with_filter (line 668) | fn root_workspace_for_entire_workspace_with_filter() {
function virtual_workspace_for_entire_workspace_with_filter (line 713) | fn virtual_workspace_for_entire_workspace_with_filter() {
function root_workspace_multiple_package_arguments (line 746) | fn root_workspace_multiple_package_arguments() {
function virtual_workspace_multiple_package_arguments (line 798) | fn virtual_workspace_multiple_package_arguments() {
function root_workspace_for_entire_workspace_with_exact (line 850) | fn root_workspace_for_entire_workspace_with_exact() {
function exit_first_stops_execution_after_one_failure_in_workspace (line 898) | fn exit_first_stops_execution_after_one_failure_in_workspace() {
FILE: crates/forge/tests/integration/available_gas.rs
function correct_available_gas (line 7) | fn correct_available_gas() {
function available_gas_exceeded (line 24) | fn available_gas_exceeded() {
function available_gas_fuzzing (line 46) | fn available_gas_fuzzing() {
FILE: crates/forge/tests/integration/builtins.rs
function builtin_test (line 7) | fn builtin_test() {
FILE: crates/forge/tests/integration/cheat_block_hash.rs
function cheat_block_hash_basic (line 9) | fn cheat_block_hash_basic() {
function cheat_block_hash_complex (line 140) | fn cheat_block_hash_complex() {
function cheat_block_hash_with_span (line 220) | fn cheat_block_hash_with_span() {
FILE: crates/forge/tests/integration/cheat_block_number.rs
function cheat_block_number_basic (line 9) | fn cheat_block_number_basic() {
function cheat_block_number_complex (line 140) | fn cheat_block_number_complex() {
function cheat_block_number_with_span (line 223) | fn cheat_block_number_with_span() {
Condensed preview — 1666 files, each showing path, character count, and a content snippet. Download the .json file or copy for the full structured content (6,062K chars).
[
{
"path": ".cargo/config.toml",
"chars": 220,
"preview": "[alias]\nlint = \"clippy --all-targets --all-features -- --no-deps -W clippy::pedantic -W clippy::undocumented_unsafe_bloc"
},
{
"path": ".gitattributes",
"chars": 52,
"preview": "*.* text eol=lf\n*.png -text\n*.jpg -text\n*.gif -text\n"
},
{
"path": ".github/CODEOWNERS",
"chars": 31,
"preview": "* @foundry-rs/starknet-foundry\n"
},
{
"path": ".github/ISSUE_TEMPLATE/1-bug_report.yml",
"chars": 1560,
"preview": "name: Problem Report\ndescription: Report a problem with a tool\ntype: \"Bug\"\nbody:\n - type: dropdown\n id: tool-name\n "
},
{
"path": ".github/ISSUE_TEMPLATE/2-feature_request.yml",
"chars": 582,
"preview": "name: Feature Request\ndescription: Request a feature to be added to a tool\ntype: \"Feature\"\nbody:\n - type: dropdown\n "
},
{
"path": ".github/ISSUE_TEMPLATE/3-work_item.yml",
"chars": 1015,
"preview": "name: Work Item\ndescription: Submit an actionable task\nbody:\n - type: textarea\n id: current-state\n attributes:\n "
},
{
"path": ".github/ISSUE_TEMPLATE/4-child_work_item.yml",
"chars": 595,
"preview": "name: Child Item\ndescription: Child work item for tracking issues\ntype: \"Task\"\nbody:\n - type: input\n id: objective\n "
},
{
"path": ".github/ISSUE_TEMPLATE/config.yml",
"chars": 241,
"preview": "blank_issues_enabled: false\ncontact_links:\n - name: Telegram Support Channel\n url: https://t.me/starknet_foundry_sup"
},
{
"path": ".github/actions/setup-tools/action.yml",
"chars": 1956,
"preview": "name: Setup Tools\ndescription: Installs Rust and optionally Scarb, Universal Sierra Compiler and LLVM 19 toolchain\n\ninpu"
},
{
"path": ".github/dependabot.yml",
"chars": 712,
"preview": "# To get started with Dependabot version updates, you'll need to specify which\n# package ecosystems to update and where "
},
{
"path": ".github/pull_request_template.md",
"chars": 369,
"preview": "<!-- Reference any GitHub issues resolved by this PR -->\n\nCloses #\n\n## Introduced changes\n\n<!-- A brief description of t"
},
{
"path": ".github/workflows/_build-binaries-native.yml",
"chars": 4093,
"preview": "# NOTE: This is a draft created for the future if we continue integration with the native.\n# TODO(#3790) this is current"
},
{
"path": ".github/workflows/_build-binaries.yml",
"chars": 2404,
"preview": "name: Build binaries\n\non:\n workflow_call:\n inputs:\n # Specify the version in MAJOR.MINOR.PATCH format, without "
},
{
"path": ".github/workflows/_build-plugin-binaries.yml",
"chars": 3967,
"preview": "name: Build snforge_scarb_plugin\n\non:\n workflow_call:\n inputs:\n # Specify the version in MAJOR.MINOR.PATCH form"
},
{
"path": ".github/workflows/_publish-plugin.yml",
"chars": 3713,
"preview": "name: Upload plugin to registry\n\non:\n workflow_call:\n inputs:\n prod_registry:\n required: false\n t"
},
{
"path": ".github/workflows/_test-binaries.yml",
"chars": 2563,
"preview": "name: Test binaries\n\non:\n workflow_call:\n inputs:\n # Specify the version in MAJOR.MINOR.PATCH format, without a"
},
{
"path": ".github/workflows/automate-stale.yml",
"chars": 1177,
"preview": "name: 'Automation - Stale issues and PRs'\n\non:\n schedule:\n - cron: '0 7 * * 1-5'\n\nenv:\n DAYS_BEFORE_STALE: 30\n DAY"
},
{
"path": ".github/workflows/ci.yml",
"chars": 15366,
"preview": "name: CI\n\non:\n pull_request:\n merge_group:\n push:\n branches:\n - master\n workflow_dispatch:\n\nconcurrency:\n g"
},
{
"path": ".github/workflows/docs.yml",
"chars": 3047,
"preview": "# Initial version from: https://github.com/actions/starter-workflows/blob/main/pages/mdbook.yml\n#\nname: Deploy mdBook si"
},
{
"path": ".github/workflows/nightly.yml",
"chars": 6792,
"preview": "name: Nightly\n\non:\n workflow_dispatch:\n inputs:\n dry_run:\n description: \"Dry run\"\n type: boolean\n"
},
{
"path": ".github/workflows/publish-plugin.yml",
"chars": 1020,
"preview": "name: Publish snforge_scarb_plugin\n\non:\n workflow_dispatch:\n inputs:\n prod_registry:\n required: false\n "
},
{
"path": ".github/workflows/publish-std.yml",
"chars": 4192,
"preview": "name: Publish snforge_std and sncast_std\n\non:\n workflow_call:\n inputs:\n prod_registry:\n required: false\n"
},
{
"path": ".github/workflows/release.yml",
"chars": 6762,
"preview": "name: Release\n\non:\n push:\n branches:\n - 'master'\n tags:\n - v[0-9]+.*\n\npermissions:\n contents: write\n\nj"
},
{
"path": ".github/workflows/scheduled.yml",
"chars": 8278,
"preview": "name: Scheduled\n\non:\n pull_request:\n paths:\n - scripts/get_scarb_versions.sh\n - .github/workflows/schedule"
},
{
"path": ".gitignore",
"chars": 259,
"preview": ".idea\npyproject.toml\n.DS_Store\n*/.tool-versions\ntarget\n.vscode/\n.env\nScarb.lock\n!snforge_std/Scarb.lock\n!sncast_std/Scar"
},
{
"path": ".tool-versions",
"chars": 40,
"preview": "scarb 2.17.0\nstarknet-devnet 0.8.0-rc.3\n"
},
{
"path": "CAIRO_NATIVE.md",
"chars": 1335,
"preview": "# Running Cairo Native\n\n<!-- TOC -->\n* [Running Cairo Native](#running-cairo-native)\n * [Installing Starknet Foundry Wi"
},
{
"path": "CHANGELOG.md",
"chars": 55940,
"preview": "# Changelog\n\nAll notable changes to this project will be documented in this file.\n\nThe format is based on [Keep a Change"
},
{
"path": "CONTRIBUTING.md",
"chars": 2994,
"preview": "# Contribution Guideline\n\nStarknet Foundry is under active development and is open for contributions!\n\n## Opening an iss"
},
{
"path": "Cargo.toml",
"chars": 4266,
"preview": "[workspace]\nresolver = \"2\"\nmembers = [\n \"crates/shared\",\n \"crates/forge\",\n \"crates/forge-runner\",\n \"crates/s"
},
{
"path": "Cross.toml",
"chars": 1104,
"preview": "# TODO(#3790) Setup cross for native\n#[build]\n#pre-build = [\n# \"dpkg --add-architecture $CROSS_DEB_ARCH\",\n# \"apt-g"
},
{
"path": "LICENSE",
"chars": 1099,
"preview": "The MIT License (MIT)\n\nCopyright (c) 2023 Software Mansion <swmansion.com>\n\nPermission is hereby granted, free of charge"
},
{
"path": "README.md",
"chars": 3330,
"preview": "<img src=\"./docs/src/images/logo.png\" alt=\"logo\" width=\"120\" align=\"right\" />\n\n## Starknet Foundry\n\n[![Telegram Chat][tg"
},
{
"path": "RELEASING.md",
"chars": 1429,
"preview": "# Instruction For Creating New Starknet Foundry Releases\n\n1. Create a new branch.\n2. Run `./scripts/release.sh MAJOR.MIN"
},
{
"path": "ROADMAP.md",
"chars": 4955,
"preview": "# Roadmap\n\nTentative roadmap for Starknet Foundry. This document reflects the state of the roadmap at the time of writin"
},
{
"path": "_typos.toml",
"chars": 83,
"preview": "[default.extend-words]\nba = \"ba\"\n\n[files]\nextend-exclude = [\"docs/theme/head.hbs\"]\n"
},
{
"path": "crates/cheatnet/Cargo.toml",
"chars": 1526,
"preview": "[package]\nname = \"cheatnet\"\nversion.workspace = true\nedition.workspace = true\n\n[features]\ntesting = []\ncairo-native = [\""
},
{
"path": "crates/cheatnet/src/constants.rs",
"chars": 4160,
"preview": "use starknet_api::contract_class::{ContractClass, SierraVersion};\nuse std::collections::HashMap;\nuse std::sync::Arc;\n\nus"
},
{
"path": "crates/cheatnet/src/data/eth_erc20_casm.json",
"chars": 490093,
"preview": "{\"bytecode\":[\"0xa0680017fff8000\",\"0x7\",\"0x482680017ffa8000\",\"0x100000000000000000000000000000000\",\"0x400280007ff97fff\",\""
},
{
"path": "crates/cheatnet/src/data/strk_erc20_casm.json",
"chars": 569231,
"preview": "{\"prime\":\"0x800000000000011000000000000000000000000000000000000000000000001\",\"compiler_version\":\"2.10.0\",\"bytecode\":[\"0x"
},
{
"path": "crates/cheatnet/src/forking/cache.rs",
"chars": 8463,
"preview": "use anyhow::{Context, Result};\nuse camino::{Utf8Path, Utf8PathBuf};\nuse fs2::FileExt;\nuse regex::Regex;\nuse runtime::sta"
},
{
"path": "crates/cheatnet/src/forking/data.rs",
"chars": 1343,
"preview": "use crate::runtime_extensions::forge_runtime_extension::contracts_data::build_name_selector_map;\nuse starknet_api::core:"
},
{
"path": "crates/cheatnet/src/forking/mod.rs",
"chars": 44,
"preview": "pub mod cache;\npub mod data;\npub mod state;\n"
},
{
"path": "crates/cheatnet/src/forking/state.rs",
"chars": 11186,
"preview": "use crate::forking::cache::ForkCache;\nuse crate::state::BlockInfoReader;\nuse crate::sync_client::SyncClient;\nuse anyhow:"
},
{
"path": "crates/cheatnet/src/lib.rs",
"chars": 206,
"preview": "use state::CheatnetState;\n\npub mod constants;\npub mod forking;\npub mod predeployment;\n#[expect(clippy::result_large_err)"
},
{
"path": "crates/cheatnet/src/predeployment/erc20/constructor_data.rs",
"chars": 268,
"preview": "use starknet_api::core::ContractAddress;\n\npub struct ERC20ConstructorData {\n pub name: String,\n pub symbol: String"
},
{
"path": "crates/cheatnet/src/predeployment/erc20/eth.rs",
"chars": 1548,
"preview": "use conversions::string::TryFromHexStr;\nuse starknet_api::core::ContractAddress;\n\nuse crate::predeployment::predeployed_"
},
{
"path": "crates/cheatnet/src/predeployment/erc20/mod.rs",
"chars": 83,
"preview": "pub mod constructor_data;\npub mod eth;\npub mod predeployed_contract;\npub mod strk;\n"
},
{
"path": "crates/cheatnet/src/predeployment/erc20/predeployed_contract.rs",
"chars": 3133,
"preview": "use crate::{\n predeployment::predeployed_contract::PredeployedContract,\n runtime_extensions::forge_runtime_extensi"
},
{
"path": "crates/cheatnet/src/predeployment/erc20/strk.rs",
"chars": 1656,
"preview": "use conversions::string::TryFromHexStr;\nuse starknet_api::core::ContractAddress;\n\nuse crate::predeployment::predeployed_"
},
{
"path": "crates/cheatnet/src/predeployment/mod.rs",
"chars": 45,
"preview": "pub mod erc20;\npub mod predeployed_contract;\n"
},
{
"path": "crates/cheatnet/src/predeployment/predeployed_contract.rs",
"chars": 867,
"preview": "use crate::constants::contract_class;\nuse starknet_api::{\n contract_class::{ContractClass, SierraVersion},\n core::"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/cairo1_execution.rs",
"chars": 5902,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::CheatnetState;\nuse crate::runtime_extensions::call_"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/calls.rs",
"chars": 3640,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::CheatnetState;\nuse crate::runtime_extensions::call_"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/cheated_syscalls.rs",
"chars": 18540,
"preview": "use super::calls::{execute_inner_call, execute_library_call};\nuse super::execution_info::get_cheated_exec_info_ptr;\nuse "
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/deprecated/cairo0_execution.rs",
"chars": 4030,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::CheatnetState;\nuse crate::runtime_extensions::call_"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/deprecated/mod.rs",
"chars": 26,
"preview": "pub mod cairo0_execution;\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/entry_point.rs",
"chars": 16856,
"preview": "use super::cairo1_execution::execute_entry_point_call_cairo1;\nuse crate::runtime_extensions::call_to_blockifier_runtime_"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/execution_info.rs",
"chars": 6937,
"preview": "use crate::state::{CheatedData, CheatedTxInfo};\nuse cairo_vm::{\n types::relocatable::{MaybeRelocatable, Relocatable},"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/execution_utils.rs",
"chars": 4580,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::rpc::{\n AddressOrClassHash, from_error, from_non"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/mod.rs",
"chars": 180,
"preview": "pub mod cairo1_execution;\npub mod calls;\npub mod cheated_syscalls;\npub mod deprecated;\npub mod entry_point;\npub mod exec"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/execution/syscall_hooks.rs",
"chars": 2303,
"preview": "use crate::runtime_extensions::forge_runtime_extension::cheatcodes::spy_messages_to_l1::MessageToL1;\nuse crate::{\n ru"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/mod.rs",
"chars": 10451,
"preview": "use std::marker::PhantomData;\n\nuse crate::state::CheatnetState;\nuse blockifier::execution::entry_point::{CallEntryPoint,"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/panic_parser.rs",
"chars": 9605,
"preview": "use conversions::byte_array::ByteArray;\nuse regex::Regex;\nuse starknet_types_core::felt::Felt;\nuse std::sync::LazyLock;\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/call_to_blockifier_runtime_extension/rpc.rs",
"chars": 10895,
"preview": "use super::CheatnetState;\nuse crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::entry_point::{"
},
{
"path": "crates/cheatnet/src/runtime_extensions/cheatable_starknet_runtime_extension.rs",
"chars": 10491,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::{\n cheated_syscalls, syscall_hooks,\n}"
},
{
"path": "crates/cheatnet/src/runtime_extensions/common.rs",
"chars": 3128,
"preview": "use blockifier::blockifier_versioned_constants::VersionedConstants;\nuse blockifier::execution::syscalls::vm_syscall_util"
},
{
"path": "crates/cheatnet/src/runtime_extensions/deprecated_cheatable_starknet_extension/mod.rs",
"chars": 18035,
"preview": "use crate::state::CheatnetState;\nuse blockifier::execution::common_hints::HintExecutionResult;\nuse blockifier::execution"
},
{
"path": "crates/cheatnet/src/runtime_extensions/deprecated_cheatable_starknet_extension/runtime.rs",
"chars": 6376,
"preview": "use crate::runtime_extensions::cheatable_starknet_runtime_extension::felt_from_ptr_immutable;\nuse anyhow::Result;\nuse bl"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_config_extension/config.rs",
"chars": 4965,
"preview": "use conversions::{byte_array::ByteArray, serde::deserialize::CairoDeserialize};\nuse serde::{\n Deserialize, Deserializ"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_config_extension.rs",
"chars": 1596,
"preview": "use cairo_vm::vm::vm_core::VirtualMachine;\nuse config::RawForgeConfig;\nuse conversions::serde::deserialize::BufferReader"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_account_contract_address.rs",
"chars": 2467,
"preview": "use crate::{\n runtime_extensions::forge_runtime_extension::cheatcodes::cheat_execution_info::{\n CheatArguments"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_hash.rs",
"chars": 5026,
"preview": "use crate::CheatnetState;\nuse crate::runtime_extensions::forge_runtime_extension::cheatcodes::cheat_execution_info::{\n "
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_number.rs",
"chars": 2092,
"preview": "use super::cheat_execution_info::{\n BlockInfoMockOperations, CheatArguments, ExecutionInfoMockOperations, Operation,\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_block_timestamp.rs",
"chars": 2104,
"preview": "use super::cheat_execution_info::{\n BlockInfoMockOperations, CheatArguments, ExecutionInfoMockOperations, Operation,\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_caller_address.rs",
"chars": 1620,
"preview": "use super::cheat_execution_info::{CheatArguments, ExecutionInfoMockOperations, Operation};\nuse crate::CheatnetState;\nuse"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_execution_info.rs",
"chars": 6444,
"preview": "use crate::{\n CheatnetState,\n state::{CheatSpan, CheatStatus},\n};\nuse conversions::serde::{deserialize::CairoDeser"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/cheat_sequencer_address.rs",
"chars": 2208,
"preview": "use super::cheat_execution_info::{\n BlockInfoMockOperations, CheatArguments, ExecutionInfoMockOperations, Operation,\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/declare.rs",
"chars": 3250,
"preview": "use crate::constants::get_current_sierra_version;\nuse crate::runtime_extensions::forge_runtime_extension::{\n cheatcod"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/generate_random_felt.rs",
"chars": 255,
"preview": "use num_bigint::{BigUint, RandBigInt};\nuse starknet_types_core::felt::Felt;\n\n#[must_use]\npub fn generate_random_felt() -"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/get_class_hash.rs",
"chars": 571,
"preview": "use crate::runtime_extensions::forge_runtime_extension::cheatcodes::{\n CheatcodeError, EnhancedHintError,\n};\nuse bloc"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/l1_handler_execute.rs",
"chars": 823,
"preview": "use crate::{\n runtime_extensions::call_to_blockifier_runtime_extension::rpc::{CallResult, call_l1_handler},\n state"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/mock_call.rs",
"chars": 1378,
"preview": "use crate::CheatnetState;\nuse crate::state::{CheatSpan, CheatStatus};\nuse starknet_api::core::{ContractAddress, EntryPoi"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/mod.rs",
"chars": 1443,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::rpc::CallFailure;\nuse cairo_vm::vm::errors::hint_er"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/precalculate_address.rs",
"chars": 813,
"preview": "use crate::CheatnetState;\nuse crate::runtime_extensions::common::create_execute_calldata;\nuse conversions::IntoConv;\nuse"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/replace_bytecode.rs",
"chars": 504,
"preview": "use crate::CheatnetState;\nuse conversions::serde::serialize::CairoSerialize;\nuse starknet_api::core::{ClassHash, Contrac"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/spy_events.rs",
"chars": 1268,
"preview": "use crate::CheatnetState;\nuse blockifier::execution::call_info::OrderedEvent;\nuse conversions::{FromConv, serde::seriali"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/spy_messages_to_l1.rs",
"chars": 1191,
"preview": "use crate::state::CheatnetState;\nuse blockifier::execution::call_info::OrderedL2ToL1Message;\nuse conversions::serde::ser"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/cheatcodes/storage.rs",
"chars": 2997,
"preview": "use blockifier::state::state_api::State;\nuse conversions::{FromConv, IntoConv};\nuse starknet_api::core::{ContractAddress"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/contracts_data.rs",
"chars": 5087,
"preview": "use super::cheatcodes::declare::get_class_hash;\nuse anyhow::Result;\nuse bimap::BiMap;\nuse camino::Utf8PathBuf;\nuse conve"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/file_operations.rs",
"chars": 4277,
"preview": "use anyhow::{Result, anyhow};\nuse conversions::felt::TryInferFormat;\nuse conversions::{\n byte_array::ByteArray, serde"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/fuzzer.rs",
"chars": 1375,
"preview": "use anyhow::ensure;\nuse num_bigint::RandBigInt;\nuse rand::prelude::StdRng;\nuse starknet_types_core::felt::Felt;\nuse std:"
},
{
"path": "crates/cheatnet/src/runtime_extensions/forge_runtime_extension/mod.rs",
"chars": 36891,
"preview": "use self::contracts_data::ContractsData;\nuse crate::runtime_extensions::call_to_blockifier_runtime_extension::rpc::UsedR"
},
{
"path": "crates/cheatnet/src/runtime_extensions/mod.rs",
"chars": 267,
"preview": "pub mod call_to_blockifier_runtime_extension;\npub mod cheatable_starknet_runtime_extension;\npub mod common;\npub mod depr"
},
{
"path": "crates/cheatnet/src/runtime_extensions/native/call.rs",
"chars": 2331,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::entry_point::{\n ExecuteCallEntryPoint"
},
{
"path": "crates/cheatnet/src/runtime_extensions/native/deploy.rs",
"chars": 2233,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::cheated_syscalls::execute_deployment;\nus"
},
{
"path": "crates/cheatnet/src/runtime_extensions/native/execution.rs",
"chars": 8830,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::execution::entry_point::{\n CallInfoWithExecution"
},
{
"path": "crates/cheatnet/src/runtime_extensions/native/mod.rs",
"chars": 73,
"preview": "mod call;\nmod deploy;\npub mod execution;\npub mod native_syscall_handler;\n"
},
{
"path": "crates/cheatnet/src/runtime_extensions/native/native_syscall_handler.rs",
"chars": 31709,
"preview": "use crate::runtime_extensions::forge_runtime_extension::cheatcodes::spy_events::Event;\nuse crate::runtime_extensions::fo"
},
{
"path": "crates/cheatnet/src/state.rs",
"chars": 14771,
"preview": "use crate::constants::build_test_entry_point;\nuse crate::forking::state::ForkStateReader;\nuse crate::predeployment::erc2"
},
{
"path": "crates/cheatnet/src/sync_client.rs",
"chars": 2278,
"preview": "use starknet_api::block::BlockNumber;\nuse starknet_rust::core::types::{\n BlockId, ContractClass, GetStorageAtResult, "
},
{
"path": "crates/cheatnet/src/trace_data.rs",
"chars": 8542,
"preview": "use crate::runtime_extensions::call_to_blockifier_runtime_extension::rpc::{\n CallResult, CallSuccess,\n};\nuse crate::r"
},
{
"path": "crates/cheatnet/tests/builtins/mod.rs",
"chars": 35,
"preview": "mod panic_call;\nmod segment_arena;\n"
},
{
"path": "crates/cheatnet/tests/builtins/panic_call.rs",
"chars": 4617,
"preview": "use crate::common::assertions::assert_panic;\nuse crate::common::call_contract;\nuse crate::common::{deploy_contract, stat"
},
{
"path": "crates/cheatnet/tests/builtins/segment_arena.rs",
"chars": 824,
"preview": "use crate::common::assertions::assert_success;\nuse crate::common::call_contract;\nuse crate::common::{deploy_contract, st"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_account_contract_address.rs",
"chars": 3302,
"preview": "use std::num::NonZeroUsize;\n\nuse crate::{cheatcodes::test_environment::TestEnvironment, common::assertions::assert_succe"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_block_hash.rs",
"chars": 16148,
"preview": "use super::test_environment::TestEnvironment;\nuse crate::common::assertions::assert_success;\nuse crate::common::get_cont"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_block_number.rs",
"chars": 14189,
"preview": "use crate::{common::assertions::assert_success, common::get_contracts};\nuse cheatnet::state::CheatSpan;\nuse conversions:"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_block_timestamp.rs",
"chars": 14660,
"preview": "use crate::{common::assertions::assert_success, common::get_contracts};\nuse cheatnet::state::CheatSpan;\nuse conversions:"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_caller_address.rs",
"chars": 14979,
"preview": "use crate::common::assertions::assert_success;\nuse crate::common::get_contracts;\nuse cairo_lang_starknet_classes::keccak"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_execution_info.rs",
"chars": 23251,
"preview": "use super::test_environment::TestEnvironment;\nuse crate::common::{assertions::assert_success, get_contracts, recover_dat"
},
{
"path": "crates/cheatnet/tests/cheatcodes/cheat_sequencer_address.rs",
"chars": 15578,
"preview": "use super::test_environment::TestEnvironment;\nuse crate::{common::assertions::assert_success, common::get_contracts};\nus"
},
{
"path": "crates/cheatnet/tests/cheatcodes/declare.rs",
"chars": 2453,
"preview": "use crate::common::assertions::ClassHashAssert;\nuse crate::common::{get_contracts, state::create_cached_state};\nuse chea"
},
{
"path": "crates/cheatnet/tests/cheatcodes/generate_random_felt.rs",
"chars": 682,
"preview": "use starknet_types_core::felt::Felt;\nuse std::collections::HashSet;\n\nuse cheatnet::runtime_extensions::forge_runtime_ext"
},
{
"path": "crates/cheatnet/tests/cheatcodes/get_class_hash.rs",
"chars": 2089,
"preview": "use crate::common::assertions::ClassHashAssert;\nuse crate::common::get_contracts;\nuse crate::common::state::create_cache"
},
{
"path": "crates/cheatnet/tests/cheatcodes/library_call.rs",
"chars": 7144,
"preview": "use crate::cheatcodes::test_environment::TestEnvironment;\nuse crate::common::assertions::assert_success;\nuse crate::comm"
},
{
"path": "crates/cheatnet/tests/cheatcodes/load.rs",
"chars": 1910,
"preview": "use crate::common::get_contracts;\nuse cheatnet::runtime_extensions::forge_runtime_extension::cheatcodes::storage::{\n "
},
{
"path": "crates/cheatnet/tests/cheatcodes/meta_tx_v0.rs",
"chars": 4674,
"preview": "use crate::common::assertions::assert_success;\nuse conversions::IntoConv;\nuse starknet_api::core::ContractAddress;\nuse s"
},
{
"path": "crates/cheatnet/tests/cheatcodes/mock_call.rs",
"chars": 20011,
"preview": "use super::test_environment::TestEnvironment;\nuse crate::common::assertions::ClassHashAssert;\nuse crate::common::recover"
},
{
"path": "crates/cheatnet/tests/cheatcodes/mod.rs",
"chars": 440,
"preview": "mod test_environment;\n\nmod cheat_account_contract_address;\nmod cheat_block_hash;\nmod cheat_block_number;\nmod cheat_block"
},
{
"path": "crates/cheatnet/tests/cheatcodes/multiple_writes_same_storage.rs",
"chars": 3356,
"preview": "use crate::common::assertions::assert_success;\nuse crate::common::get_contracts;\nuse cheatnet::runtime_extensions::forge"
},
{
"path": "crates/cheatnet/tests/cheatcodes/precalculate_address.rs",
"chars": 1488,
"preview": "use crate::{cheatcodes::test_environment::TestEnvironment, common::get_contracts};\n\n#[test]\nfn precalculate_address_simp"
},
{
"path": "crates/cheatnet/tests/cheatcodes/replace_bytecode.rs",
"chars": 3852,
"preview": "use crate::{\n cheatcodes::test_environment::TestEnvironment,\n common::{assertions::assert_success, get_contracts, "
},
{
"path": "crates/cheatnet/tests/cheatcodes/spy_events.rs",
"chars": 11194,
"preview": "use crate::cheatcodes::test_environment::TestEnvironment;\nuse crate::common::get_contracts;\nuse crate::common::state::cr"
},
{
"path": "crates/cheatnet/tests/cheatcodes/store.rs",
"chars": 1837,
"preview": "use crate::common::assertions::assert_success;\nuse crate::common::get_contracts;\nuse cheatnet::runtime_extensions::forge"
},
{
"path": "crates/cheatnet/tests/cheatcodes/test_environment.rs",
"chars": 2902,
"preview": "use crate::common::assertions::ClassHashAssert;\nuse crate::common::{call_contract, deploy, library_call_contract};\nuse c"
},
{
"path": "crates/cheatnet/tests/common/assertions.rs",
"chars": 1519,
"preview": "use cheatnet::runtime_extensions::call_to_blockifier_runtime_extension::rpc::{\n CallFailure, CallResult, CallSuccess,"
},
{
"path": "crates/cheatnet/tests/common/cache.rs",
"chars": 991,
"preview": "use glob::glob;\nuse serde_json::{Map, Value};\nuse std::fs;\nuse std::path::PathBuf;\nuse std::str::FromStr;\n\npub fn read_c"
},
{
"path": "crates/cheatnet/tests/common/mod.rs",
"chars": 12600,
"preview": "use assertions::ClassHashAssert;\nuse blockifier::execution::call_info::CallInfo;\nuse blockifier::execution::contract_cla"
},
{
"path": "crates/cheatnet/tests/common/state.rs",
"chars": 1015,
"preview": "use blockifier::state::cached_state::CachedState;\nuse cheatnet::constants::build_testing_state;\nuse cheatnet::forking::s"
},
{
"path": "crates/cheatnet/tests/contracts/Scarb.toml",
"chars": 324,
"preview": "[package]\nname = \"cheatnet_testing_contracts\"\nversion = \"0.1.0\"\n# TODO(#4091): Add edition once Scarb version in .tool-v"
},
{
"path": "crates/cheatnet/tests/contracts/src/bytearray_string_panic_call.cairo",
"chars": 1915,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait IByteArrayPanickingContract<TContractState> {\n fn do_pan"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash/checker.cairo",
"chars": 648,
"preview": "#[starknet::interface]\ntrait ICheatBlockHashChecker<TContractState> {\n fn get_block_hash(ref self: TContractState, bl"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash/checker_library_call.cairo",
"chars": 1431,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait ICheatBlockHashChecker<TContractState> {\n fn get_block_hash(re"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash/checker_meta_tx_v0.cairo",
"chars": 678,
"preview": "#[starknet::interface]\ntrait ICheatBlockHashCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContractStat"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash/checker_proxy.cairo",
"chars": 2099,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatBlockHashChecker<TContractState> {\n fn get_block_h"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash/constructor_checker.cairo",
"chars": 1206,
"preview": "#[starknet::interface]\ntrait IConstructorCheatBlockHashChecker<TContractState> {\n fn get_stored_block_hash(ref self: "
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_hash.cairo",
"chars": 107,
"preview": "mod checker;\nmod checker_library_call;\nmod checker_meta_tx_v0;\nmod checker_proxy;\nmod constructor_checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number/checker.cairo",
"chars": 1108,
"preview": "#[starknet::interface]\ntrait ICheatBlockNumberChecker<TContractState> {\n fn get_block_number(ref self: TContractState"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number/checker_library_call.cairo",
"chars": 1183,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait ICheatBlockNumberChecker<TContractState> {\n fn get_block_numbe"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number/checker_meta_tx_v0.cairo",
"chars": 557,
"preview": "#[starknet::interface]\ntrait ICheatBlockNumberCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContractSt"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number/checker_proxy.cairo",
"chars": 1751,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatBlockNumberChecker<TContractState> {\n fn get_block"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number/constructor_checker.cairo",
"chars": 1028,
"preview": "#[starknet::interface]\ntrait IConstructorCheatBlockNumberChecker<TContractState> {\n fn get_stored_block_number(ref se"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_number.cairo",
"chars": 107,
"preview": "mod checker;\nmod checker_library_call;\nmod checker_meta_tx_v0;\nmod checker_proxy;\nmod constructor_checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp/checker.cairo",
"chars": 1440,
"preview": "#[starknet::interface]\ntrait ICheatBlockTimestampChecker<TContractState> {\n fn get_block_timestamp(ref self: TContrac"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp/checker_library_call.cairo",
"chars": 1287,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait ICheatBlockTimestampChecker<TContractState> {\n fn get_block_ti"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp/checker_meta_tx_v0.cairo",
"chars": 578,
"preview": "#[starknet::interface]\ntrait ICheatBlockTimestampCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContrac"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp/checker_proxy.cairo",
"chars": 1855,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatBlockTimestampChecker<TContractState> {\n fn get_bl"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp/constructor_checker.cairo",
"chars": 1085,
"preview": "#[starknet::interface]\ntrait IConstructorCheatBlockTimestampChecker<TContractState> {\n fn get_stored_block_timestamp("
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_block_timestamp.cairo",
"chars": 107,
"preview": "mod checker;\nmod checker_library_call;\nmod checker_meta_tx_v0;\nmod checker_proxy;\nmod constructor_checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/checker.cairo",
"chars": 1172,
"preview": "#[starknet::interface]\ntrait ICheatCallerAddressChecker<TContractState> {\n fn get_caller_address(ref self: TContractS"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/checker_cairo0.cairo",
"chars": 2430,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICairo1Contract<TContractState> {\n fn start(\n ref"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/checker_library_call.cairo",
"chars": 1278,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait ICheatCallerAddressChecker<TContractState> {\n fn get_caller_ad"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/checker_meta_tx_v0.cairo",
"chars": 522,
"preview": "#[starknet::interface]\ntrait ICheatCallerAddressCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContract"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/checker_proxy.cairo",
"chars": 1959,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatCallerAddressChecker<TContractState> {\n fn get_cal"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address/constructor_checker.cairo",
"chars": 1117,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait IConstructorCheatCallerAddressChecker<TContractState> {\n "
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_caller_address.cairo",
"chars": 127,
"preview": "mod checker;\nmod checker_cairo0;\nmod checker_library_call;\nmod checker_meta_tx_v0;\nmod checker_proxy;\nmod constructor_ch"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address/checker.cairo",
"chars": 1309,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatSequencerAddressChecker<TContractState> {\n fn get_"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address/checker_library_call.cairo",
"chars": 1415,
"preview": "use starknet::{ClassHash, ContractAddress};\n\n#[starknet::interface]\ntrait ICheatSequencerAddressChecker<TContractState> "
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address/checker_meta_tx_v0.cairo",
"chars": 611,
"preview": "#[starknet::interface]\ntrait ICheatSequencerAddressCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContr"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address/checker_proxy.cairo",
"chars": 2095,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatSequencerAddressChecker<TContractState> {\n fn get_"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address/constructor_checker.cairo",
"chars": 1219,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait IConstructorCheatSequencerAddressChecker<TContractState> {\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_sequencer_address.cairo",
"chars": 107,
"preview": "mod checker;\nmod checker_library_call;\nmod checker_meta_tx_v0;\nmod checker_proxy;\nmod constructor_checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info/constructor_tx_hash_checker.cairo",
"chars": 955,
"preview": "#[starknet::interface]\ntrait ITxHashChecker<TContractState> {\n fn get_stored_tx_hash(self: @TContractState) -> felt25"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info/tx_hash_checker_proxy.cairo",
"chars": 1646,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatTxInfoChecker<TContractState> {\n fn get_transactio"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info/tx_info_checker.cairo",
"chars": 1719,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ICheatTxInfoChecker<TContractState> {\n fn get_account_co"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info/tx_info_checker_library_call.cairo",
"chars": 1278,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait ICheatTxInfoChecker<TContractState> {\n fn get_transaction_hash"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info/tx_info_checker_meta_tx_v0.cairo",
"chars": 597,
"preview": "#[starknet::interface]\ntrait ITxInfoCheckerMetaTxV0<TContractState> {\n fn __execute__(ref self: TContractState) -> fe"
},
{
"path": "crates/cheatnet/tests/contracts/src/cheat_tx_info.cairo",
"chars": 147,
"preview": "mod constructor_tx_hash_checker;\nmod tx_hash_checker_proxy;\nmod tx_info_checker;\nmod tx_info_checker_library_call;\nmod t"
},
{
"path": "crates/cheatnet/tests/contracts/src/common/constructor_simple.cairo",
"chars": 938,
"preview": "#[starknet::interface]\ntrait IConstructorSimple<TContractState> {\n fn add_to_number(ref self: TContractState, number:"
},
{
"path": "crates/cheatnet/tests/contracts/src/common/constructor_simple2.cairo",
"chars": 970,
"preview": "#[starknet::interface]\ntrait IConstructorSimple2<TContractState> {\n fn add_to_number(ref self: TContractState, number"
},
{
"path": "crates/cheatnet/tests/contracts/src/common/hello_starknet.cairo",
"chars": 779,
"preview": "#[starknet::interface]\ntrait IHelloStarknet<TContractState> {\n fn increase_balance(ref self: TContractState, amount: "
},
{
"path": "crates/cheatnet/tests/contracts/src/common.cairo",
"chars": 69,
"preview": "mod constructor_simple;\nmod constructor_simple2;\nmod hello_starknet;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/events/constructor_spy_events_checker.cairo",
"chars": 454,
"preview": "#[starknet::contract]\nmod ConstructorSpyEventsChecker {\n #[storage]\n struct Storage {}\n\n #[event]\n #[derive("
},
{
"path": "crates/cheatnet/tests/contracts/src/events/spy_events_cairo0.cairo",
"chars": 1090,
"preview": "use starknet::ContractAddress;\n\n// 0x2c77ca97586968c6651a533bd5f58042c368b14cf5f526d2f42f670012e10ac\n#[starknet::interfa"
},
{
"path": "crates/cheatnet/tests/contracts/src/events/spy_events_checker.cairo",
"chars": 2649,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ISpyEventsChecker<TContractState> {\n fn do_not_emit(ref "
},
{
"path": "crates/cheatnet/tests/contracts/src/events/spy_events_checker_proxy.cairo",
"chars": 3497,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ISpyEventsChecker<TContractState> {\n fn do_not_emit(ref "
},
{
"path": "crates/cheatnet/tests/contracts/src/events/spy_events_lib_call.cairo",
"chars": 811,
"preview": "use starknet::{ClassHash, ContractAddress};\n\n#[starknet::interface]\ntrait ISpyEventsLibCall<TContractState> {\n fn cal"
},
{
"path": "crates/cheatnet/tests/contracts/src/events/spy_events_order_checker.cairo",
"chars": 1634,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait ISpyEventsOrderChecker<TContractState> {\n fn emit_and_ca"
},
{
"path": "crates/cheatnet/tests/contracts/src/events.cairo",
"chars": 168,
"preview": "mod constructor_spy_events_checker;\nmod spy_events_cairo0;\nmod spy_events_checker;\nmod spy_events_checker_proxy;\nmod spy"
},
{
"path": "crates/cheatnet/tests/contracts/src/get_class_hash/get_class_hash_checker.cairo",
"chars": 687,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait IUpgradeable<T> {\n fn upgrade(ref self: T, class_hash: ClassHa"
},
{
"path": "crates/cheatnet/tests/contracts/src/get_class_hash.cairo",
"chars": 28,
"preview": "mod get_class_hash_checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/lib.cairo",
"chars": 396,
"preview": "mod bytearray_string_panic_call;\nmod cheat_block_hash;\nmod cheat_block_number;\nmod cheat_block_timestamp;\nmod cheat_call"
},
{
"path": "crates/cheatnet/tests/contracts/src/library_calls.cairo",
"chars": 1499,
"preview": "#[starknet::interface]\npub trait IExampleContract<T> {\n fn set_class_hash(ref self: T, class_hash: starknet::ClassHas"
},
{
"path": "crates/cheatnet/tests/contracts/src/meta_tx_v0/checker.cairo",
"chars": 1461,
"preview": "#[starknet::interface]\ntrait IMetaTxV0Test<TContractState> {\n fn execute_meta_tx_v0(\n self: @TContractState, t"
},
{
"path": "crates/cheatnet/tests/contracts/src/meta_tx_v0.cairo",
"chars": 13,
"preview": "mod checker;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/mock/constructor_mock_checker.cairo",
"chars": 1080,
"preview": "#[starknet::interface]\ntrait IConstructorMockChecker<TContractState> {\n fn get_constructor_balance(ref self: TContrac"
},
{
"path": "crates/cheatnet/tests/contracts/src/mock/mock_checker.cairo",
"chars": 2021,
"preview": "#[derive(Serde, Drop)]\nstruct StructThing {\n item_one: felt252,\n item_two: felt252,\n}\n\n#[starknet::interface]\ntrai"
},
{
"path": "crates/cheatnet/tests/contracts/src/mock/mock_checker_library_call.cairo",
"chars": 882,
"preview": "use starknet::ClassHash;\n\n#[starknet::interface]\ntrait IMockChecker<TContractState> {\n fn get_constant_thing(ref self"
},
{
"path": "crates/cheatnet/tests/contracts/src/mock/mock_checker_proxy.cairo",
"chars": 1525,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait IMockChecker<TContractState> {\n fn get_thing(ref self: T"
},
{
"path": "crates/cheatnet/tests/contracts/src/mock.cairo",
"chars": 103,
"preview": "mod constructor_mock_checker;\nmod mock_checker;\nmod mock_checker_library_call;\nmod mock_checker_proxy;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/panic_call.cairo",
"chars": 343,
"preview": "#[starknet::contract]\nmod PanicCall {\n #[storage]\n struct Storage {}\n\n #[external(v0)]\n fn panic_call(ref se"
},
{
"path": "crates/cheatnet/tests/contracts/src/replace_bytecode/replace_bytecode_a.cairo",
"chars": 796,
"preview": "#[starknet::interface]\ntrait IReplaceBytecodeA<TContractState> {\n fn get(self: @TContractState) -> felt252;\n fn se"
},
{
"path": "crates/cheatnet/tests/contracts/src/replace_bytecode/replace_bytecode_b.cairo",
"chars": 807,
"preview": "#[starknet::interface]\ntrait IReplaceBytecodeB<TContractState> {\n fn get(self: @TContractState) -> felt252;\n fn se"
},
{
"path": "crates/cheatnet/tests/contracts/src/replace_bytecode/replace_fork.cairo",
"chars": 372,
"preview": "#[starknet::interface]\ntrait IReplaceInFork<TContractState> {\n fn get_owner(self: @TContractState) -> felt252;\n}\n\n#[s"
},
{
"path": "crates/cheatnet/tests/contracts/src/replace_bytecode.cairo",
"chars": 66,
"preview": "mod replace_bytecode_a;\nmod replace_bytecode_b;\nmod replace_fork;\n"
},
{
"path": "crates/cheatnet/tests/contracts/src/revert.cairo",
"chars": 3415,
"preview": "#[starknet::contract]\nmod Revert {\n use starknet::storage::{StoragePointerReadAccess, StoragePointerWriteAccess};\n "
},
{
"path": "crates/cheatnet/tests/contracts/src/segment_arena_user.cairo",
"chars": 265,
"preview": "#[starknet::contract]\nmod SegmentArenaUser {\n use core::dict::Felt252Dict;\n\n #[storage]\n struct Storage {}\n\n "
},
{
"path": "crates/cheatnet/tests/contracts/src/starknet/block_info_checker_library_call.cairo",
"chars": 1870,
"preview": "use starknet::{ClassHash, ContractAddress};\n\n#[starknet::interface]\ntrait IBlockInfoChecker<TContractState> {\n fn rea"
},
{
"path": "crates/cheatnet/tests/contracts/src/starknet/block_info_checker_proxy.cairo",
"chars": 1755,
"preview": "use starknet::ContractAddress;\n\n#[starknet::interface]\ntrait IBlockInfoChecker<TContractState> {\n fn read_block_numbe"
}
]
// ... and 1466 more files (download for full content)
About this extraction
This page contains the full source code of the foundry-rs/starknet-foundry GitHub repository, extracted and formatted as plain text for AI agents and large language models (LLMs). The extraction includes 1666 files (5.4 MB), approximately 1.5M tokens, and a symbol index with 4184 extracted functions, classes, methods, constants, and types. Use this with OpenClaw, Claude, ChatGPT, Cursor, Windsurf, or any other AI tool that accepts text input. You can copy the full output to your clipboard or download it as a .txt file.
Extracted by GitExtract — free GitHub repo to text converter for AI. Built by Nikandr Surkov.