Skip to content

Commit

Permalink
Unify integration tests into a single binary (lambdaclass#1238)
Browse files Browse the repository at this point in the history
* unify integration tests into a single binary

* fix make

* undo

* locked

* locked
  • Loading branch information
edg-l authored Feb 19, 2024
1 parent 2e7bcc1 commit a5597de
Show file tree
Hide file tree
Showing 27 changed files with 159 additions and 127 deletions.
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.

File renamed without changes.
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
File renamed without changes.
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
File renamed without changes.
File renamed without changes.
File renamed without changes.
File renamed without changes.
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
File renamed without changes.
File renamed without changes.
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
File renamed without changes.
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;

0 comments on commit a5597de

Please sign in to comment.