Skip to content

Commit ae15bd5

Browse files
committed
Metadata refactor
1 parent ec746a0 commit ae15bd5

File tree

15 files changed

+160
-194
lines changed

15 files changed

+160
-194
lines changed

crates/cheatnet/tests/common/mod.rs

Lines changed: 3 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -27,10 +27,9 @@ use conversions::string::TryFromHexStr;
2727
use foundry_ui::UI;
2828
use runtime::starknet::constants::TEST_ADDRESS;
2929
use runtime::starknet::context::build_context;
30-
use scarb_api::metadata::MetadataCommandExt;
30+
use scarb_api::metadata::metadata_for_dir;
3131
use scarb_api::{
32-
CompilationOpts, ScarbCommand, get_contracts_artifacts_and_source_sierra_paths,
33-
target_dir_for_workspace,
32+
CompilationOpts, get_contracts_artifacts_and_source_sierra_paths, target_dir_for_workspace,
3433
};
3534
use starknet::core::utils::get_selector_from_name;
3635
use starknet_api::contract_class::EntryPointType;
@@ -76,11 +75,7 @@ pub fn recover_data(output: CallResult) -> Vec<Felt> {
7675
}
7776

7877
pub fn get_contracts() -> ContractsData {
79-
let scarb_metadata = ScarbCommand::metadata()
80-
.inherit_stderr()
81-
.manifest_path("tests/contracts/Scarb.toml")
82-
.run()
83-
.unwrap();
78+
let scarb_metadata = metadata_for_dir("tests/contracts").unwrap();
8479
let target_dir = target_dir_for_workspace(&scarb_metadata).join("dev");
8580

8681
let package = scarb_metadata.packages.first().unwrap();

crates/forge/src/clean.rs

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ use crate::{CleanArgs, CleanComponent};
22
use anyhow::{Context, Result, ensure};
33
use camino::Utf8PathBuf;
44
use foundry_ui::UI;
5-
use scarb_api::{ScarbCommand, metadata::MetadataCommandExt};
5+
use scarb_api::metadata::{MetadataOpts, metadata_with_opts};
66
use std::fs;
77

88
const COVERAGE_DIR: &str = "coverage";
@@ -26,7 +26,10 @@ pub fn clean(args: CleanArgs, ui: &UI) -> Result<()> {
2626
args.clean_components
2727
};
2828

29-
let scarb_metadata = ScarbCommand::metadata().inherit_stderr().no_deps().run()?;
29+
let scarb_metadata = metadata_with_opts(MetadataOpts {
30+
no_deps: true,
31+
..MetadataOpts::default()
32+
})?;
3033
let workspace_root = scarb_metadata.workspace.root;
3134

3235
let packages_root: Vec<Utf8PathBuf> = scarb_metadata

crates/forge/src/lib.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,8 @@ use forge_runner::forge_config::ForgeTrackedResource;
99
use foundry_ui::components::warning::WarningMessage;
1010
use foundry_ui::{Message, UI};
1111
use run_tests::workspace::run_for_workspace;
12-
use scarb_api::{ScarbCommand, metadata::MetadataCommandExt};
12+
use scarb_api::ScarbCommand;
13+
use scarb_api::metadata::metadata;
1314
use scarb_ui::args::{FeaturesSpec, PackagesFilter, ProfileSpec};
1415
use semver::Version;
1516
use shared::auto_completions::{Completions, generate_completions};
@@ -298,7 +299,7 @@ pub fn main_execution(ui: Arc<UI>) -> Result<ExitStatus> {
298299
}
299300
ForgeSubcommand::CleanCache {} => {
300301
ui.println(&WarningMessage::new("`snforge clean-cache` is deprecated and will be removed in the future. Use `snforge clean cache` instead"));
301-
let scarb_metadata = ScarbCommand::metadata().inherit_stderr().run()?;
302+
let scarb_metadata = metadata()?;
302303
let cache_dir = scarb_metadata.workspace.root.join(CACHE_DIR);
303304

304305
if cache_dir.exists() {

crates/forge/src/new.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use anyhow::{Context, Ok, Result, anyhow, bail, ensure};
44
use camino::Utf8PathBuf;
55
use include_dir::{Dir, DirEntry, include_dir};
66
use indoc::formatdoc;
7-
use scarb_api::ScarbCommand;
7+
use scarb_api::{ScarbCommand, ensure_scarb_available};
88
use semver::Version;
99
use shared::consts::FREE_RPC_PROVIDER_URL;
1010
use std::env;
@@ -351,7 +351,7 @@ pub fn new(
351351
template,
352352
}: NewArgs,
353353
) -> Result<()> {
354-
ScarbCommand::new().ensure_available()?;
354+
ensure_scarb_available()?;
355355
if !overwrite {
356356
ensure!(
357357
!path.exists() || path.read_dir().is_ok_and(|mut i| i.next().is_none()),

crates/forge/src/run_tests/workspace.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,9 +18,10 @@ use anyhow::{Context, Result};
1818
use forge_runner::test_case_summary::AnyTestCaseSummary;
1919
use forge_runner::{CACHE_DIR, test_target_summary::TestTargetSummary};
2020
use foundry_ui::UI;
21+
use scarb_api::metadata::{MetadataOpts, metadata_with_opts};
2122
use scarb_api::{
2223
ScarbCommand,
23-
metadata::{Metadata, MetadataCommandExt, PackageMetadata},
24+
metadata::{Metadata, PackageMetadata},
2425
target_dir_for_workspace,
2526
};
2627
use scarb_ui::args::PackagesFilter;
@@ -38,11 +39,10 @@ pub async fn run_for_workspace(args: TestArgs, ui: Arc<UI>) -> Result<ExitStatus
3839
ColorOption::Auto => (),
3940
}
4041

41-
let mut metadata_command = ScarbCommand::metadata();
42-
if let Some(profile) = &args.scarb_args.profile.specified() {
43-
metadata_command.profile(profile.clone());
44-
}
45-
let scarb_metadata = metadata_command.inherit_stderr().run()?;
42+
let scarb_metadata = metadata_with_opts(MetadataOpts {
43+
profile: args.scarb_args.profile.specified(),
44+
..MetadataOpts::default()
45+
})?;
4646

4747
check_profile_compatibility(&args, &scarb_metadata)?;
4848

crates/forge/src/scarb.rs

Lines changed: 10 additions & 46 deletions
Original file line numberDiff line numberDiff line change
@@ -137,7 +137,7 @@ mod tests {
137137
use configuration::load_package_config;
138138
use forge_runner::forge_config::ForgeTrackedResource;
139139
use indoc::{formatdoc, indoc};
140-
use scarb_api::metadata::MetadataCommandExt;
140+
use scarb_api::metadata::metadata_for_dir;
141141
use scarb_metadata::PackageId;
142142
use std::env;
143143
use test_utils::{get_snforge_std_entry, tempdir_with_tool_versions};
@@ -195,11 +195,7 @@ mod tests {
195195
#[test]
196196
fn get_forge_config_for_package() {
197197
let temp = setup_package("simple_package");
198-
let scarb_metadata = ScarbCommand::metadata()
199-
.inherit_stderr()
200-
.current_dir(temp.path())
201-
.run()
202-
.unwrap();
198+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
203199

204200
let config = load_package_config::<ForgeConfigFromScarb>(
205201
&scarb_metadata,
@@ -248,11 +244,7 @@ mod tests {
248244
#[test]
249245
fn get_forge_config_for_package_err_on_invalid_package() {
250246
let temp = setup_package("simple_package");
251-
let scarb_metadata = ScarbCommand::metadata()
252-
.inherit_stderr()
253-
.current_dir(temp.path())
254-
.run()
255-
.unwrap();
247+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
256248

257249
let result = load_package_config::<ForgeConfigFromScarb>(
258250
&scarb_metadata,
@@ -278,11 +270,7 @@ mod tests {
278270
);
279271
temp.child("Scarb.toml").write_str(content).unwrap();
280272

281-
let scarb_metadata = ScarbCommand::metadata()
282-
.inherit_stderr()
283-
.current_dir(temp.path())
284-
.run()
285-
.unwrap();
273+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
286274

287275
let config = load_package_config::<ForgeConfigFromScarb>(
288276
&scarb_metadata,
@@ -315,11 +303,7 @@ mod tests {
315303
);
316304
temp.child("Scarb.toml").write_str(content).unwrap();
317305

318-
let scarb_metadata = ScarbCommand::metadata()
319-
.inherit_stderr()
320-
.current_dir(temp.path())
321-
.run()
322-
.unwrap();
306+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
323307
let err = load_package_config::<ForgeConfigFromScarb>(
324308
&scarb_metadata,
325309
&scarb_metadata.workspace.members[0],
@@ -346,11 +330,7 @@ mod tests {
346330
);
347331
temp.child("Scarb.toml").write_str(content).unwrap();
348332

349-
let scarb_metadata = ScarbCommand::metadata()
350-
.inherit_stderr()
351-
.current_dir(temp.path())
352-
.run()
353-
.unwrap();
333+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
354334
let err = load_package_config::<ForgeConfigFromScarb>(
355335
&scarb_metadata,
356336
&scarb_metadata.workspace.members[0],
@@ -379,11 +359,7 @@ mod tests {
379359
);
380360
temp.child("Scarb.toml").write_str(content).unwrap();
381361

382-
let scarb_metadata = ScarbCommand::metadata()
383-
.inherit_stderr()
384-
.current_dir(temp.path())
385-
.run()
386-
.unwrap();
362+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
387363

388364
let err = load_package_config::<ForgeConfigFromScarb>(
389365
&scarb_metadata,
@@ -413,11 +389,7 @@ mod tests {
413389
);
414390
temp.child("Scarb.toml").write_str(content).unwrap();
415391

416-
let scarb_metadata = ScarbCommand::metadata()
417-
.inherit_stderr()
418-
.current_dir(temp.path())
419-
.run()
420-
.unwrap();
392+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
421393

422394
let err = load_package_config::<ForgeConfigFromScarb>(
423395
&scarb_metadata,
@@ -444,11 +416,7 @@ mod tests {
444416
);
445417
temp.child("Scarb.toml").write_str(content).unwrap();
446418

447-
let scarb_metadata = ScarbCommand::metadata()
448-
.inherit_stderr()
449-
.current_dir(temp.path())
450-
.run()
451-
.unwrap();
419+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
452420

453421
let forge_config = load_package_config::<ForgeConfigFromScarb>(
454422
&scarb_metadata,
@@ -475,11 +443,7 @@ mod tests {
475443
);
476444
temp.child("Scarb.toml").write_str(content).unwrap();
477445

478-
let scarb_metadata = ScarbCommand::metadata()
479-
.inherit_stderr()
480-
.current_dir(temp.path())
481-
.run()
482-
.unwrap();
446+
let scarb_metadata = metadata_for_dir(temp.path()).unwrap();
483447

484448
// SAFETY: This value is only read here and is not modified by other tests.
485449
unsafe {

crates/forge/test_utils/src/runner.rs

Lines changed: 3 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -16,9 +16,9 @@ use forge_runner::{
1616
};
1717
use foundry_ui::UI;
1818
use indoc::formatdoc;
19+
use scarb_api::metadata::metadata_for_dir;
1920
use scarb_api::{
20-
CompilationOpts, ScarbCommand, StarknetContractArtifacts,
21-
get_contracts_artifacts_and_source_sierra_paths, metadata::MetadataCommandExt,
21+
CompilationOpts, StarknetContractArtifacts, get_contracts_artifacts_and_source_sierra_paths,
2222
target_dir_for_workspace,
2323
};
2424
use shared::command::CommandExt;
@@ -94,10 +94,7 @@ impl Contract {
9494
.output_checked()
9595
.context("Failed to build contracts with Scarb")?;
9696

97-
let scarb_metadata = ScarbCommand::metadata()
98-
.current_dir(dir.path())
99-
.inherit_stderr()
100-
.run()?;
97+
let scarb_metadata = metadata_for_dir(dir.path())?;
10198
let package = scarb_metadata
10299
.packages
103100
.iter()

crates/forge/test_utils/src/running_tests.rs

Lines changed: 3 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,7 +15,8 @@ use forge_runner::forge_config::{
1515
};
1616
use forge_runner::test_target_summary::TestTargetSummary;
1717
use foundry_ui::UI;
18-
use scarb_api::{ScarbCommand, metadata::MetadataCommandExt};
18+
use scarb_api::ScarbCommand;
19+
use scarb_api::metadata::metadata_for_dir;
1920
use std::num::NonZeroU32;
2021
use std::sync::Arc;
2122
use tempfile::tempdir;
@@ -33,10 +34,7 @@ pub fn run_test_case(
3334
.run()
3435
.unwrap();
3536

36-
let metadata = ScarbCommand::metadata()
37-
.current_dir(test.path().unwrap())
38-
.run()
39-
.unwrap();
37+
let metadata = metadata_for_dir(test.path().unwrap()).unwrap();
4038

4139
let package = metadata
4240
.packages

crates/forge/tests/e2e/clean.rs

Lines changed: 7 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -1,8 +1,7 @@
11
use super::common::runner::{runner, setup_package, test_runner};
22
use assert_fs::TempDir;
33
use camino::Utf8PathBuf;
4-
use scarb_api::ScarbCommand;
5-
use scarb_api::metadata::MetadataCommandExt;
4+
use scarb_api::metadata::{MetadataOpts, metadata_with_opts};
65
use shared::test_utils::output_assert::assert_stdout_contains;
76
use std::path::Path;
87

@@ -231,12 +230,12 @@ fn generate_clean_components(state: CleanComponentsState, temp_dir: &TempDir) {
231230
}
232231

233232
fn check_clean_components_state(path: &Path) -> CleanComponentsState {
234-
let scarb_metadata = ScarbCommand::metadata()
235-
.inherit_stderr()
236-
.current_dir(path)
237-
.no_deps()
238-
.run()
239-
.unwrap();
233+
let scarb_metadata = metadata_with_opts(MetadataOpts {
234+
no_deps: true,
235+
current_dir: Some(path.into()),
236+
..MetadataOpts::default()
237+
})
238+
.unwrap();
240239

241240
let workspace_root = scarb_metadata.workspace.root;
242241

crates/forge/tests/integration/setup_fork.rs

Lines changed: 3 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ use forge_runner::forge_config::{
2424
ExecutionDataToSave, ForgeConfig, OutputConfig, TestRunnerConfig,
2525
};
2626
use scarb_api::ScarbCommand;
27-
use scarb_api::metadata::MetadataCommandExt;
27+
use scarb_api::metadata::metadata_for_dir;
2828
use shared::test_utils::node_url::node_rpc_url;
2929
use test_utils::runner::{Contract, assert_case_output_contains, assert_failed, assert_passed};
3030
use test_utils::running_tests::run_test_case;
@@ -117,10 +117,7 @@ fn fork_aliased_decorator() {
117117
.run()
118118
.unwrap();
119119

120-
let metadata = ScarbCommand::metadata()
121-
.current_dir(test.path().unwrap())
122-
.run()
123-
.unwrap();
120+
let metadata = metadata_for_dir(test.path().unwrap()).unwrap();
124121

125122
let package = metadata
126123
.packages
@@ -209,10 +206,7 @@ fn fork_aliased_decorator_overrding() {
209206
.run()
210207
.unwrap();
211208

212-
let metadata = ScarbCommand::metadata()
213-
.current_dir(test.path().unwrap())
214-
.run()
215-
.unwrap();
209+
let metadata = metadata_for_dir(test.path().unwrap()).unwrap();
216210

217211
let package = metadata
218212
.packages

0 commit comments

Comments
 (0)