Skip to content

Commit

Permalink
feat(blockifier_test_utils): move functions from blockifier::test_uti…
Browse files Browse the repository at this point in the history
…ls and update dependencies
  • Loading branch information
rotem-starkware committed Feb 6, 2025
1 parent a53875d commit f53d30e
Show file tree
Hide file tree
Showing 26 changed files with 121 additions and 86 deletions.
11 changes: 11 additions & 0 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

2 changes: 2 additions & 0 deletions Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -6,6 +6,7 @@ resolver = "2"
members = [
"crates/blockifier",
"crates/blockifier_reexecution",
"crates/blockifier_test_utils",
"crates/mempool_test_utils",
"crates/native_blockifier",
"crates/papyrus_base_layer",
Expand Down Expand Up @@ -98,6 +99,7 @@ bincode = "1.3.3"
bisection = "0.1.0"
bitvec = "1.0.1"
blockifier = { path = "crates/blockifier", version = "0.0.0" }
blockifier_test_utils = { path = "crates/blockifier_test_utils", version = "0.0.0" }
byteorder = "1.4.3"
bytes = "1"
cached = "0.44.0"
Expand Down
1 change: 1 addition & 0 deletions commitlint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -22,6 +22,7 @@ const Configuration = {
'scope-enum': [2, 'always', [
'blockifier',
'blockifier_reexecution',
'blockifier_test_utils',
'cairo_native',
'ci',
'committer',
Expand Down
3 changes: 3 additions & 0 deletions crates/blockifier/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ cairo_native = ["dep:cairo-native", "starknet_sierra_multicompile/cairo_native"]
native_blockifier = []
reexecution = ["transaction_serde"]
testing = [
"blockifier_test_utils",
"rand",
"rstest",
"rstest_reuse",
Expand All @@ -32,6 +33,7 @@ ark-ec.workspace = true
ark-ff.workspace = true
ark-secp256k1.workspace = true
ark-secp256r1.workspace = true
blockifier_test_utils = { workspace = true, optional = true }
cached.workspace = true
cairo-lang-casm = { workspace = true, features = ["parity-scale-codec"] }
cairo-lang-runner.workspace = true
Expand Down Expand Up @@ -73,6 +75,7 @@ tracing-test = { workspace = true, optional = true }

[dev-dependencies]
assert_matches.workspace = true
blockifier_test_utils.path = "../blockifier_test_utils"
criterion = { workspace = true, features = ["html_reports"] }
glob.workspace = true
itertools.workspace = true
Expand Down
9 changes: 2 additions & 7 deletions crates/blockifier/src/blockifier/transaction_executor_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use assert_matches::assert_matches;
use blockifier_test_utils::calldata::create_calldata;
use pretty_assertions::assert_eq;
use rstest::rstest;
use starknet_api::test_utils::declare::executable_declare_tx;
Expand All @@ -23,13 +24,7 @@ use crate::state::state_api::StateReader;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::l1_handler::l1handler_tx;
use crate::test_utils::{
create_calldata,
maybe_dummy_block_hash_and_number,
CairoVersion,
RunnableCairo1,
BALANCE,
};
use crate::test_utils::{maybe_dummy_block_hash_and_number, CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::account_transaction::AccountTransaction;
use crate::transaction::errors::TransactionExecutionError;
use crate::transaction::test_utils::{
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/concurrency/fee_utils_test.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use blockifier_test_utils::calldata::create_trivial_calldata;
use num_bigint::BigUint;
use rstest::rstest;
use starknet_api::block::FeeType;
Expand All @@ -12,7 +13,7 @@ use crate::fee::fee_utils::get_sequencer_balance_keys;
use crate::state::state_api::StateReader;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::{fund_account, test_state, test_state_inner};
use crate::test_utils::{create_trivial_calldata, CairoVersion, RunnableCairo1, BALANCE};
use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::test_utils::{
block_context,
default_all_resource_bounds,
Expand Down
9 changes: 2 additions & 7 deletions crates/blockifier/src/concurrency/worker_logic_test.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::collections::HashMap;
use std::sync::Mutex;

use blockifier_test_utils::calldata::{create_calldata, create_trivial_calldata};
use rstest::rstest;
use starknet_api::abi::abi_utils::get_fee_token_var_address;
use starknet_api::core::{ContractAddress, Nonce};
Expand All @@ -25,13 +26,7 @@ use crate::state::cached_state::StateMaps;
use crate::state::state_api::StateReader;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{
create_calldata,
create_trivial_calldata,
CairoVersion,
RunnableCairo1,
BALANCE,
};
use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::account_transaction::AccountTransaction;
use crate::transaction::objects::HasRelatedFeeType;
use crate::transaction::test_utils::{
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/execution/stack_trace_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use assert_matches::assert_matches;
use blockifier_test_utils::calldata::create_calldata;
use pretty_assertions::assert_eq;
use regex::Regex;
use rstest::rstest;
Expand Down Expand Up @@ -46,7 +47,7 @@ use crate::execution::syscalls::hint_processor::ENTRYPOINT_FAILED_ERROR;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::{fund_account, test_state};
use crate::test_utils::test_templates::cairo_version;
use crate::test_utils::{create_calldata, CairoVersion, RunnableCairo1, BALANCE};
use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::account_transaction::{AccountTransaction, ExecutionFlags};
use crate::transaction::test_utils::{
block_context,
Expand Down
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use core::panic;
use std::sync::Arc;

use blockifier_test_utils::calldata::create_calldata;
use itertools::Itertools;
use pretty_assertions::assert_eq;
use rstest::rstest;
Expand All @@ -20,7 +21,6 @@ use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::syscall::build_recurse_calldata;
use crate::test_utils::{
create_calldata,
trivial_external_entry_point_new,
CairoVersion,
CompilerBasedVersion,
Expand Down
9 changes: 2 additions & 7 deletions crates/blockifier/src/fee/receipt_test.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use blockifier_test_utils::calldata::{create_calldata, create_trivial_calldata};
use rstest::{fixture, rstest};
use starknet_api::execution_resources::GasVector;
use starknet_api::transaction::fields::GasVectorComputationMode;
Expand All @@ -23,13 +24,7 @@ use crate::fee::resources::{StarknetResources, StateResources};
use crate::state::cached_state::StateChangesCount;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{
create_calldata,
create_trivial_calldata,
CairoVersion,
RunnableCairo1,
BALANCE,
};
use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::objects::HasRelatedFeeType;
use crate::transaction::test_utils::{
calculate_class_info_for_testing,
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/state/cached_state_test.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
use std::collections::HashMap;

use assert_matches::assert_matches;
use blockifier_test_utils::calldata::create_calldata;
use indexmap::indexmap;
use pretty_assertions::assert_eq;
use rstest::rstest;
Expand All @@ -20,7 +21,7 @@ use crate::state::cached_state::*;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::dict_state_reader::DictStateReader;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{create_calldata, CairoVersion, RunnableCairo1, BALANCE};
use crate::test_utils::{CairoVersion, RunnableCairo1, BALANCE};
use crate::transaction::test_utils::{default_all_resource_bounds, run_invoke_tx, STORAGE_WRITE};
const CONTRACT_ADDRESS: &str = "0x100";

Expand Down
45 changes: 1 addition & 44 deletions crates/blockifier/src/test_utils.rs
Original file line number Diff line number Diff line change
Expand Up @@ -15,7 +15,7 @@ use std::slice::Iter;

use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::vm::runners::cairo_runner::ExecutionResources;
use starknet_api::abi::abi_utils::{get_fee_token_var_address, selector_from_name};
use starknet_api::abi::abi_utils::get_fee_token_var_address;
use starknet_api::block::{BlockHash, BlockHashAndNumber, BlockNumber};
use starknet_api::core::{ClassHash, ContractAddress};
use starknet_api::execution_resources::{GasAmount, GasVector};
Expand Down Expand Up @@ -400,49 +400,6 @@ pub fn calldata_for_deploy_test(
)
}

/// Creates the calldata for the "__execute__" entry point in the featured contracts
/// ([`FeatureContract`]) AccountWithLongValidate and AccountWithoutValidations. The format of the
/// returned calldata is:
/// [
/// contract_address,
/// entry_point_name,
/// calldata_length,
/// *calldata,
/// ]
/// The contract_address is the address of the called contract, the entry_point_name is the
/// name of the called entry point in said contract, and the calldata is the calldata for the called
/// entry point.
pub fn create_calldata(
contract_address: ContractAddress,
entry_point_name: &str,
entry_point_args: &[Felt],
) -> Calldata {
Calldata(
[
vec![
*contract_address.0.key(), // Contract address.
selector_from_name(entry_point_name).0, // EP selector name.
felt!(u64_from_usize(entry_point_args.len())),
],
entry_point_args.into(),
]
.concat()
.into(),
)
}

/// Calldata for a trivial entry point in the [`FeatureContract`] TestContract. The calldata is
/// formatted for using the featured contracts AccountWithLongValidate or AccountWithoutValidations
/// as account contract.
/// The contract_address is the address of the called contract, an instance address of TestContract.
pub fn create_trivial_calldata(test_contract_address: ContractAddress) -> Calldata {
create_calldata(
test_contract_address,
"return_result",
&[felt!(2_u8)], // Calldata: num.
)
}

pub fn update_json_value(base: &mut serde_json::Value, update: serde_json::Value) {
match (base, update) {
(serde_json::Value::Object(base_map), serde_json::Value::Object(update_map)) => {
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/test_utils/syscall.rs
Original file line number Diff line number Diff line change
@@ -1,7 +1,8 @@
use blockifier_test_utils::calldata::create_calldata;
use starknet_api::felt;
use starknet_api::transaction::fields::Calldata;

use crate::test_utils::{create_calldata, CompilerBasedVersion};
use crate::test_utils::CompilerBasedVersion;

/// Returns the calldata for N recursive call contract syscalls, where N is the length of versions.
/// versions determines the cairo version of the called contract in each recursive call. Final call
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::collections::{HashMap, HashSet};
use std::sync::Arc;

use assert_matches::assert_matches;
use blockifier_test_utils::calldata::{create_calldata, create_trivial_calldata};
use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::vm::runners::cairo_runner::ResourceTracker;
use num_traits::Inv;
Expand Down Expand Up @@ -83,8 +84,6 @@ use crate::test_utils::initial_test_state::{fund_account, test_state};
use crate::test_utils::syscall::build_recurse_calldata;
use crate::test_utils::test_templates::cairo_version;
use crate::test_utils::{
create_calldata,
create_trivial_calldata,
get_syscall_resources,
get_tx_resources,
CairoVersion,
Expand Down
10 changes: 2 additions & 8 deletions crates/blockifier/src/transaction/execution_flavors_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use assert_matches::assert_matches;
use blockifier_test_utils::calldata::{create_calldata, create_trivial_calldata};
use pretty_assertions::assert_eq;
use rstest::rstest;
use starknet_api::block::FeeType;
Expand Down Expand Up @@ -31,14 +32,7 @@ use crate::state::state_api::StateReader;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::dict_state_reader::DictStateReader;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{
create_calldata,
create_trivial_calldata,
get_syscall_resources,
get_tx_resources,
CairoVersion,
BALANCE,
};
use crate::test_utils::{get_syscall_resources, get_tx_resources, CairoVersion, BALANCE};
use crate::transaction::account_transaction::{AccountTransaction, ExecutionFlags};
use crate::transaction::errors::{
ResourceBoundsError,
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/transaction/post_execution_test.rs
Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use assert_matches::assert_matches;
use blockifier_test_utils::calldata::create_calldata;
use rstest::rstest;
use starknet_api::block::FeeType;
use starknet_api::core::ContractAddress;
Expand All @@ -24,7 +25,7 @@ use crate::fee::fee_utils::GasVectorToL1GasForFee;
use crate::state::state_api::StateReader;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{create_calldata, CairoVersion, BALANCE};
use crate::test_utils::{CairoVersion, BALANCE};
use crate::transaction::account_transaction::AccountTransaction;
use crate::transaction::errors::TransactionExecutionError;
use crate::transaction::objects::{HasRelatedFeeType, TransactionInfoCreator};
Expand Down
3 changes: 2 additions & 1 deletion crates/blockifier/src/transaction/test_utils.rs
Original file line number Diff line number Diff line change
@@ -1,3 +1,4 @@
use blockifier_test_utils::calldata::create_calldata;
use rstest::fixture;
use starknet_api::abi::abi_utils::get_fee_token_var_address;
use starknet_api::block::{FeeType, GasPrice};
Expand Down Expand Up @@ -40,7 +41,7 @@ use crate::state::state_api::State;
use crate::test_utils::contracts::FeatureContract;
use crate::test_utils::dict_state_reader::DictStateReader;
use crate::test_utils::initial_test_state::test_state;
use crate::test_utils::{create_calldata, CairoVersion, BALANCE};
use crate::test_utils::{CairoVersion, BALANCE};
use crate::transaction::account_transaction::{AccountTransaction, ExecutionFlags};
use crate::transaction::objects::{TransactionExecutionInfo, TransactionExecutionResult};
use crate::transaction::transaction_types::TransactionType;
Expand Down
3 changes: 1 addition & 2 deletions crates/blockifier/src/transaction/transactions_test.rs
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,7 @@ use std::collections::{HashMap, HashSet};
use std::sync::{Arc, LazyLock};

use assert_matches::assert_matches;
use blockifier_test_utils::calldata::{create_calldata, create_trivial_calldata};
use cairo_vm::types::builtin_name::BuiltinName;
use cairo_vm::vm::runners::cairo_runner::ExecutionResources;
use num_bigint::BigUint;
Expand Down Expand Up @@ -118,8 +119,6 @@ use crate::test_utils::l1_handler::l1handler_tx;
use crate::test_utils::prices::Prices;
use crate::test_utils::test_templates::{cairo_version, two_cairo_versions};
use crate::test_utils::{
create_calldata,
create_trivial_calldata,
get_syscall_resources,
get_tx_resources,
test_erc20_sequencer_balance_key,
Expand Down
14 changes: 14 additions & 0 deletions crates/blockifier_test_utils/Cargo.toml
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
[package]
name = "blockifier_test_utils"
version.workspace = true
edition.workspace = true
repository.workspace = true
license-file.workspace = true
description = "Test utilities for the blockifier."

[dependencies]
starknet-types-core.workspace = true
starknet_api = { workspace = true, features = ["testing"] }

[lints]
workspace = true
Loading

0 comments on commit f53d30e

Please sign in to comment.