From 4ec242039ad515a4163aab76e2b7b16503912c90 Mon Sep 17 00:00:00 2001 From: Arni Hod Date: Thu, 14 Nov 2024 19:20:39 +0200 Subject: [PATCH] chore(infra): share get_absolute_path infra util with snapi test utils --- Cargo.lock | 5 +++++ crates/infra_utils/src/path.rs | 17 ++++++++++++----- crates/mempool_test_utils/Cargo.toml | 1 + .../src/starknet_api_test_utils.rs | 3 ++- crates/papyrus_config/Cargo.toml | 1 + crates/papyrus_config/src/config_test.rs | 2 +- crates/papyrus_node/Cargo.toml | 1 + crates/papyrus_node/src/config/config_test.rs | 2 +- crates/starknet_api/Cargo.toml | 1 + crates/starknet_api/src/test_utils.rs | 13 ++----------- crates/starknet_sequencer_node/Cargo.toml | 1 + .../src/config/config_test.rs | 2 +- crates/starknet_sierra_compile/Cargo.toml | 1 + .../starknet_sierra_compile/src/compile_test.rs | 2 +- 14 files changed, 31 insertions(+), 21 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 133a5598ff0..297eda57fee 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -6340,6 +6340,7 @@ version = "0.0.0" dependencies = [ "assert_matches", "blockifier", + "infra_utils", "pretty_assertions", "serde_json", "starknet-types-core", @@ -7221,6 +7222,7 @@ version = "0.0.0" dependencies = [ "assert_matches", "clap", + "infra_utils", "itertools 0.12.1", "lazy_static", "papyrus_test_utils", @@ -7411,6 +7413,7 @@ dependencies = [ "const_format", "futures", "futures-util", + "infra_utils", "insta", "itertools 0.12.1", "lazy_static", @@ -10083,6 +10086,7 @@ dependencies = [ "derive_more 0.99.18", "hex", "indexmap 2.6.0", + "infra_utils", "itertools 0.12.1", "num-bigint 0.4.6", "pretty_assertions", @@ -10520,6 +10524,7 @@ dependencies = [ "cairo-lang-starknet-classes", "cairo-lang-utils", "cairo-native", + "infra_utils", "mempool_test_utils", "papyrus_config", "rstest", diff --git a/crates/infra_utils/src/path.rs b/crates/infra_utils/src/path.rs index 43786651c1f..a6aa6d74119 100644 --- a/crates/infra_utils/src/path.rs +++ b/crates/infra_utils/src/path.rs @@ -1,14 +1,21 @@ use std::env; -use std::path::PathBuf; +use std::path::{Path, PathBuf}; +use std::sync::LazyLock; + +static PATH_TO_CARGO_MANIFEST_DIR: LazyLock> = + LazyLock::new(|| env::var("CARGO_MANIFEST_DIR").ok().map(|dir| Path::new(&dir).into())); + +pub fn cargo_manifest_dir() -> Option { + PATH_TO_CARGO_MANIFEST_DIR.clone() +} -// TODO(Tsabary/ Arni): consolidate with other get_absolute_path functions. /// Returns the absolute path from the project root. pub fn get_absolute_path(relative_path: &str) -> PathBuf { - let base_dir = env::var("CARGO_MANIFEST_DIR") + let base_dir = cargo_manifest_dir() // Attempt to get the `CARGO_MANIFEST_DIR` environment variable and convert it to `PathBuf`. // Ascend two directories ("../..") to get to the project root. - .map(|dir| PathBuf::from(dir).join("../..")) + .map(|dir| dir.join("../..")) // If `CARGO_MANIFEST_DIR` isn't set, fall back to the current working directory - .unwrap_or_else(|_| env::current_dir().expect("Failed to get current directory")); + .unwrap_or(env::current_dir().expect("Failed to get current directory")); base_dir.join(relative_path) } diff --git a/crates/mempool_test_utils/Cargo.toml b/crates/mempool_test_utils/Cargo.toml index 8be25658c37..ef49716460b 100644 --- a/crates/mempool_test_utils/Cargo.toml +++ b/crates/mempool_test_utils/Cargo.toml @@ -11,6 +11,7 @@ workspace = true [dependencies] assert_matches.workspace = true blockifier = { workspace = true, features = ["testing"] } +infra_utils.workspace = true pretty_assertions.workspace = true serde_json.workspace = true starknet-types-core.workspace = true diff --git a/crates/mempool_test_utils/src/starknet_api_test_utils.rs b/crates/mempool_test_utils/src/starknet_api_test_utils.rs index e79f7467a30..0f3b8231f50 100644 --- a/crates/mempool_test_utils/src/starknet_api_test_utils.rs +++ b/crates/mempool_test_utils/src/starknet_api_test_utils.rs @@ -8,6 +8,7 @@ use std::sync::LazyLock; use assert_matches::assert_matches; use blockifier::test_utils::contracts::FeatureContract; use blockifier::test_utils::{create_trivial_calldata, CairoVersion}; +use infra_utils::path::get_absolute_path; use pretty_assertions::assert_ne; use serde_json::to_string_pretty; use starknet_api::block::GasPrice; @@ -18,7 +19,7 @@ use starknet_api::rpc_transaction::{ContractClass, RpcDeployAccountTransactionV3 use starknet_api::test_utils::declare::rpc_declare_tx; use starknet_api::test_utils::deploy_account::DeployAccountTxArgs; use starknet_api::test_utils::invoke::{rpc_invoke_tx, InvokeTxArgs}; -use starknet_api::test_utils::{get_absolute_path, NonceManager}; +use starknet_api::test_utils::NonceManager; use starknet_api::transaction::fields::{ AllResourceBounds, ContractAddressSalt, diff --git a/crates/papyrus_config/Cargo.toml b/crates/papyrus_config/Cargo.toml index 7e539043f76..82829b655bf 100644 --- a/crates/papyrus_config/Cargo.toml +++ b/crates/papyrus_config/Cargo.toml @@ -20,6 +20,7 @@ validator = { workspace = true, features = ["derive"] } [dev-dependencies] assert_matches.workspace = true +infra_utils.workspace = true itertools.workspace = true lazy_static.workspace = true papyrus_test_utils.workspace = true diff --git a/crates/papyrus_config/src/config_test.rs b/crates/papyrus_config/src/config_test.rs index 39f499091db..89fa48d2cc2 100644 --- a/crates/papyrus_config/src/config_test.rs +++ b/crates/papyrus_config/src/config_test.rs @@ -6,11 +6,11 @@ use std::time::Duration; use assert_matches::assert_matches; use clap::Command; +use infra_utils::path::get_absolute_path; use itertools::chain; use lazy_static::lazy_static; use serde::{Deserialize, Serialize}; use serde_json::json; -use starknet_api::test_utils::get_absolute_path; use tempfile::TempDir; use validator::Validate; diff --git a/crates/papyrus_node/Cargo.toml b/crates/papyrus_node/Cargo.toml index 0304ce2280c..8f25b053551 100644 --- a/crates/papyrus_node/Cargo.toml +++ b/crates/papyrus_node/Cargo.toml @@ -61,6 +61,7 @@ tokio-stream = { workspace = true, optional = true } [dev-dependencies] assert-json-diff.workspace = true colored.workspace = true +infra_utils.workspace = true insta = { workspace = true, features = ["json"] } metrics-exporter-prometheus.workspace = true papyrus_test_utils.workspace = true diff --git a/crates/papyrus_node/src/config/config_test.rs b/crates/papyrus_node/src/config/config_test.rs index dda43dd8d45..dfb828b4efd 100644 --- a/crates/papyrus_node/src/config/config_test.rs +++ b/crates/papyrus_node/src/config/config_test.rs @@ -9,6 +9,7 @@ use std::str::FromStr; use assert_json_diff::assert_json_eq; use colored::Colorize; +use infra_utils::path::get_absolute_path; use itertools::Itertools; use papyrus_base_layer::ethereum_base_layer_contract::EthereumBaseLayerConfig; use papyrus_config::dumping::SerializeConfig; @@ -18,7 +19,6 @@ use papyrus_monitoring_gateway::MonitoringGatewayConfig; use pretty_assertions::assert_eq; use serde_json::{json, Map, Value}; use starknet_api::core::ChainId; -use starknet_api::test_utils::get_absolute_path; use tempfile::NamedTempFile; use validator::Validate; diff --git a/crates/starknet_api/Cargo.toml b/crates/starknet_api/Cargo.toml index 73879008b99..5fac49f236f 100644 --- a/crates/starknet_api/Cargo.toml +++ b/crates/starknet_api/Cargo.toml @@ -16,6 +16,7 @@ cairo-lang-runner.workspace = true derive_more.workspace = true hex.workspace = true indexmap = { workspace = true, features = ["serde"] } +infra_utils.workspace = true itertools.workspace = true num-bigint.workspace = true pretty_assertions.workspace = true diff --git a/crates/starknet_api/src/test_utils.rs b/crates/starknet_api/src/test_utils.rs index 2cb3c19bd8e..d88a44f87a8 100644 --- a/crates/starknet_api/src/test_utils.rs +++ b/crates/starknet_api/src/test_utils.rs @@ -1,9 +1,8 @@ use std::collections::HashMap; -use std::env; use std::fs::read_to_string; use std::path::{Path, PathBuf}; -use std::sync::LazyLock; +use infra_utils::path::cargo_manifest_dir; use starknet_types_core::felt::Felt; use crate::core::{ContractAddress, Nonce}; @@ -13,19 +12,11 @@ pub mod deploy_account; pub mod invoke; pub mod l1_handler; -static PATH_TO_CARGO_MANIFEST_DIR: LazyLock = - LazyLock::new(|| Path::new(&env::var("CARGO_MANIFEST_DIR").unwrap()).into()); - -/// Returns the absolute path from the project root. -pub fn get_absolute_path>(relative_path: P) -> PathBuf { - PATH_TO_CARGO_MANIFEST_DIR.join("../..").join(relative_path) -} - /// Returns the path to a file in the resources directory. This assumes the current working /// directory has a `resources` folder. The value for file_path should be the path to the required /// file in the folder "resources". pub fn path_in_resources>(file_path: P) -> PathBuf { - PATH_TO_CARGO_MANIFEST_DIR.join("resources").join(file_path) + cargo_manifest_dir().unwrap().join("resources").join(file_path) } /// Reads from the directory containing the manifest at run time, same as current working directory. diff --git a/crates/starknet_sequencer_node/Cargo.toml b/crates/starknet_sequencer_node/Cargo.toml index 5a91961ff40..dfbd5cc9f41 100644 --- a/crates/starknet_sequencer_node/Cargo.toml +++ b/crates/starknet_sequencer_node/Cargo.toml @@ -44,6 +44,7 @@ validator.workspace = true assert-json-diff.workspace = true assert_matches.workspace = true colored.workspace = true +infra_utils.workspace = true mempool_test_utils.workspace = true pretty_assertions.workspace = true serde_json.workspace = true diff --git a/crates/starknet_sequencer_node/src/config/config_test.rs b/crates/starknet_sequencer_node/src/config/config_test.rs index cea34a49ad7..d8396812e0d 100644 --- a/crates/starknet_sequencer_node/src/config/config_test.rs +++ b/crates/starknet_sequencer_node/src/config/config_test.rs @@ -5,11 +5,11 @@ use std::fs::File; use assert_json_diff::assert_json_eq; use assert_matches::assert_matches; use colored::Colorize; +use infra_utils::path::get_absolute_path; use papyrus_config::dumping::SerializeConfig; use papyrus_config::validators::config_validate; use papyrus_config::SerializedParam; use rstest::rstest; -use starknet_api::test_utils::get_absolute_path; use starknet_sequencer_infra::component_definitions::{ LocalServerConfig, RemoteClientConfig, diff --git a/crates/starknet_sierra_compile/Cargo.toml b/crates/starknet_sierra_compile/Cargo.toml index a3c230aae8b..8e40f025b3a 100644 --- a/crates/starknet_sierra_compile/Cargo.toml +++ b/crates/starknet_sierra_compile/Cargo.toml @@ -27,5 +27,6 @@ validator.workspace = true [dev-dependencies] assert_matches.workspace = true +infra_utils.workspace = true mempool_test_utils.workspace = true rstest.workspace = true diff --git a/crates/starknet_sierra_compile/src/compile_test.rs b/crates/starknet_sierra_compile/src/compile_test.rs index 5ba5ba47924..4c2b31c6542 100644 --- a/crates/starknet_sierra_compile/src/compile_test.rs +++ b/crates/starknet_sierra_compile/src/compile_test.rs @@ -3,9 +3,9 @@ use std::path::Path; use assert_matches::assert_matches; use cairo_lang_starknet_classes::contract_class::ContractClass; +use infra_utils::path::get_absolute_path; use mempool_test_utils::{FAULTY_ACCOUNT_CLASS_FILE, TEST_FILES_FOLDER}; use rstest::rstest; -use starknet_api::test_utils::get_absolute_path; use crate::cairo_lang_compiler::CairoLangSierraToCasmCompiler; use crate::command_line_compiler::CommandLineCompiler;