Skip to content
This repository has been archived by the owner on Jul 22, 2024. It is now read-only.

Unify integration tests into a single binary #1238

Merged
merged 5 commits into from
Feb 19, 2024
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
14 changes: 7 additions & 7 deletions Makefile
Original file line number Diff line number Diff line change
Expand Up @@ -160,22 +160,22 @@ check: compile-cairo compile-starknet compile-cairo-1-casm compile-cairo-1-sierr
cargo check --workspace --all-targets

deps: check-python-version build-cairo-2-compiler build-cairo-1-compiler
cargo install flamegraph --version 0.6.2
cargo install cargo-llvm-cov --version 0.5.14
cargo install flamegraph --version 0.6.2 --locked
cargo install cargo-llvm-cov --version 0.5.14 --locked
-pyenv && pyenv install -s pypy3.9-7.3.9
-pyenv && pyenv install -s 3.9.15
python3.9 -m venv starknet-venv
. starknet-venv/bin/activate && $(MAKE) deps-venv
cargo install cargo-nextest --version 0.9.49
cargo install cargo-nextest --version 0.9.49 --locked

deps-macos: check-python-version build-cairo-2-compiler-macos build-cairo-1-compiler-macos
cargo install flamegraph --version 0.6.2
cargo install cargo-llvm-cov --version 0.5.14
cargo install flamegraph --version 0.6.2 --locked
cargo install cargo-llvm-cov --version 0.5.14 --locked
-pyenv install -s pypy3.9-7.3.9
-pyenv install -s 3.9.15
python3.9 -m venv starknet-venv
. starknet-venv/bin/activate && $(MAKE) deps-venv
cargo install cargo-nextest
cargo install cargo-nextest --locked

clean:
-rm -rf starknet-venv/
Expand Down Expand Up @@ -208,7 +208,7 @@ test-cairo-2: compile-cairo compile-starknet compile-cairo-1-casm compile-cairo-
cargo nextest run --workspace --all-targets --features=metrics,cairo-native

test-cairo-native: compile-cairo compile-starknet compile-cairo-1-casm compile-cairo-1-sierra compile-cairo-2-casm compile-cairo-2-sierra
cargo nextest run --workspace --test cairo_native --features=cairo-native
cargo nextest run --workspace --test tests --features=cairo-native integration_tests::cairo_native

test-doctests:
cargo test --workspace --doc
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -17,8 +17,8 @@ use starknet_in_rust::{

#[test]
fn account_panic() {
let account_data = include_bytes!("../starknet_programs/cairo2/account_panic.casm");
let contract_data = include_bytes!("../starknet_programs/cairo2/contract_a.casm");
let account_data = include_bytes!("../../starknet_programs/cairo2/account_panic.casm");
let contract_data = include_bytes!("../../starknet_programs/cairo2/contract_a.casm");

let account_contract_class: CasmContractClass = serde_json::from_slice(account_data).unwrap();
let account_class_hash = ClassHash(
Expand Down

Large diffs are not rendered by default.

Original file line number Diff line number Diff line change
@@ -1,4 +1,5 @@
use crate::complex_contracts::utils::*;
use crate::integration_tests::complex_contracts::utils::get_accessed_keys;
use crate::integration_tests::complex_contracts::utils::*;
use cairo_vm::{
vm::runners::{
builtin_runner::{HASH_BUILTIN_NAME, RANGE_CHECK_BUILTIN_NAME},
Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::complex_contracts::utils::*;
use crate::integration_tests::complex_contracts::utils::*;
use cairo_vm::{vm::runners::cairo_runner::ExecutionResources, Felt252};

use starknet_crypto::FieldElement;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -20,11 +20,11 @@ use std::sync::Arc;
fn test_erc20_cairo2() {
// data to deploy
let erc20_class_hash: ClassHash = ClassHash([2; 32]);
let test_data = include_bytes!("../../starknet_programs/cairo2/erc20.casm");
let test_data = include_bytes!("../../../starknet_programs/cairo2/erc20.casm");
let test_contract_class: CasmContractClass = serde_json::from_slice(test_data).unwrap();

// Create the deploy contract class
let program_data = include_bytes!("../../starknet_programs/cairo2/deploy_erc20.casm");
let program_data = include_bytes!("../../../starknet_programs/cairo2/deploy_erc20.casm");
let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();
let entrypoints = contract_class.clone().entry_points_by_type;
let entrypoint_selector = &entrypoints.external.get(0).unwrap().selector;
Expand Down Expand Up @@ -128,7 +128,7 @@ fn test_erc20_cairo2() {

// ACCOUNT 1
let program_data_account =
include_bytes!("../../starknet_programs/cairo2/hello_world_account.casm");
include_bytes!("../../../starknet_programs/cairo2/hello_world_account.casm");
let contract_class_account: CasmContractClass =
serde_json::from_slice(program_data_account).unwrap();

Expand Down Expand Up @@ -188,7 +188,7 @@ fn test_erc20_cairo2() {

// ACCOUNT 2
let program_data_account =
include_bytes!("../../starknet_programs/cairo2/hello_world_account.casm");
include_bytes!("../../../starknet_programs/cairo2/hello_world_account.casm");
let contract_class_account: CasmContractClass =
serde_json::from_slice(program_data_account).unwrap();

Expand Down
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
use crate::complex_contracts::utils::*;
use crate::integration_tests::complex_contracts::utils::*;
use assert_matches::assert_matches;
use cairo_vm::{
vm::runners::{
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -142,9 +142,9 @@ fn internal_deploy_account_cairo1() {
);

#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/hello_world_account.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/hello_world_account.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/hello_world_account.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/hello_world_account.casm");
let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();

state
Expand Down
4 changes: 2 additions & 2 deletions tests/fibonacci.rs → tests/integration_tests/fibonacci.rs
Original file line number Diff line number Diff line change
Expand Up @@ -147,9 +147,9 @@ fn integration_test() {
fn integration_test_cairo1() {
// Create program and entry point types for contract class
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/fibonacci.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/fibonacci.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/fibonacci.casm");

let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();
let entrypoints = contract_class.clone().entry_points_by_type;
Expand Down
13 changes: 7 additions & 6 deletions tests/internals.rs → tests/integration_tests/internals.rs
Original file line number Diff line number Diff line change
Expand Up @@ -783,9 +783,10 @@ fn declare_tx() -> DeclareDeprecated {

fn declarev2_tx() -> Declare {
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/raw_contract_classes/fibonacci.sierra");
let program_data =
include_bytes!("../../starknet_programs/raw_contract_classes/fibonacci.sierra");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/fibonacci.sierra");
let program_data = include_bytes!("../../starknet_programs/cairo1/fibonacci.sierra");
let sierra_contract_class: SierraContractClass = serde_json::from_slice(program_data).unwrap();
let sierra_class_hash = compute_sierra_class_hash(&sierra_contract_class).unwrap();
let casm_class =
Expand Down Expand Up @@ -813,9 +814,9 @@ fn declarev2_tx() -> Declare {

fn deploy_fib_syscall() -> Deploy {
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/fibonacci.sierra");
let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.sierra");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/fibonacci.sierra");
let program_data = include_bytes!("../../starknet_programs/cairo1/fibonacci.sierra");
let sierra_contract_class: SierraContractClass = serde_json::from_slice(program_data).unwrap();
let casm_class = CasmContractClass::from_contract_class(sierra_contract_class, true).unwrap();
let contract_class = CompiledClass::Casm {
Expand Down Expand Up @@ -2227,9 +2228,9 @@ fn test_library_call_with_declare_v2() {

// Create program and entry point types for contract class
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/fibonacci_dispatcher.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci_dispatcher.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/fibonacci_dispatcher.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/fibonacci_dispatcher.casm");
let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();
let entrypoints = contract_class.clone().entry_points_by_type;
let external_entrypoint_selector = &entrypoints.external.get(0).unwrap().selector;
Expand Down
16 changes: 16 additions & 0 deletions tests/integration_tests/mod.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,16 @@
pub mod account_panic;
pub mod cairo_1_syscalls;
pub mod cairo_native;
pub mod complex_contracts;
pub mod delegate_call;
pub mod delegate_l1_handler;
pub mod deploy_account;
pub mod fibonacci;
pub mod increase_balance;
pub mod internal_calls;
pub mod internals;
pub mod multi_syscall_test;
pub mod storage;
pub mod syscalls;
pub mod syscalls_errors;
pub mod yas_bench_test;
Original file line number Diff line number Diff line change
Expand Up @@ -23,7 +23,7 @@ use std::{sync::Arc, vec};
#[test]
fn test_multiple_syscall() {
// Create program and entry point types for contract class
let program_data = include_bytes!("../starknet_programs/cairo1/multi_syscall_test.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/multi_syscall_test.casm");
let contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();

// Create state reader with class hash data
Expand Down
File renamed without changes.
12 changes: 6 additions & 6 deletions tests/syscalls.rs → tests/integration_tests/syscalls.rs
Original file line number Diff line number Diff line change
Expand Up @@ -1135,9 +1135,9 @@ fn deploy_cairo1_from_cairo0_with_constructor() {
let test_class_hash: ClassHash = ClassHash([2; 32]);
let test_felt_hash = Felt252::from_bytes_be(&test_class_hash.0);
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/contract_a.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/contract_a.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/contract_a.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/contract_a.casm");
let test_contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();

// Create state reader with class hash data
Expand Down Expand Up @@ -1245,9 +1245,9 @@ fn deploy_cairo1_from_cairo0_without_constructor() {
let test_class_hash: ClassHash = ClassHash([2; 32]);
let test_felt_hash = Felt252::from_bytes_be(&test_class_hash.0);
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/fibonacci.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/fibonacci.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/fibonacci.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/fibonacci.casm");
let test_contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();

// Create state reader with class hash data
Expand Down Expand Up @@ -1357,9 +1357,9 @@ fn deploy_cairo1_and_invoke() {
let test_class_hash: ClassHash = ClassHash([2; 32]);
let test_felt_hash = Felt252::from_bytes_be(&test_class_hash.0);
#[cfg(not(feature = "cairo_1_tests"))]
let program_data = include_bytes!("../starknet_programs/cairo2/factorial.casm");
let program_data = include_bytes!("../../starknet_programs/cairo2/factorial.casm");
#[cfg(feature = "cairo_1_tests")]
let program_data = include_bytes!("../starknet_programs/cairo1/factorial.casm");
let program_data = include_bytes!("../../starknet_programs/cairo1/factorial.casm");
let test_contract_class: CasmContractClass = serde_json::from_slice(program_data).unwrap();

// Create state reader with class hash data
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -897,7 +897,7 @@ where
}

mod utils {
use crate::ACCOUNT_ADDRESS;
use crate::integration_tests::yas_bench_test::ACCOUNT_ADDRESS;
use cairo_vm::Felt252;
use starknet_in_rust::{
core::contract_address::{compute_casm_class_hash, compute_sierra_class_hash},
Expand Down
1 change: 0 additions & 1 deletion tests/mod.rs

This file was deleted.

3 changes: 3 additions & 0 deletions tests/tests.rs
Original file line number Diff line number Diff line change
@@ -0,0 +1,3 @@
//! To avoid generating lot of test executables, this is the single entry point of all tests.

pub mod integration_tests;
Loading