diff --git a/scarb/src/bin/scarb/args.rs b/scarb/src/bin/scarb/args.rs index fab2bf215..7abd606bc 100644 --- a/scarb/src/bin/scarb/args.rs +++ b/scarb/src/bin/scarb/args.rs @@ -271,7 +271,7 @@ pub struct ScriptsRunnerArgs { #[derive(ValueEnum, Clone, Debug)] pub enum TestRunner { StarknetFoundry, - CairoNativeRunner, + CairoTest, } /// Arguments accepted by the `init` command. diff --git a/scarb/src/bin/scarb/commands/init.rs b/scarb/src/bin/scarb/commands/init.rs index b070e89b3..a6ad542fe 100644 --- a/scarb/src/bin/scarb/commands/init.rs +++ b/scarb/src/bin/scarb/commands/init.rs @@ -7,6 +7,7 @@ use scarb::core::Config; use scarb::ops::{self, VersionControl}; use crate::args::{InitArgs, TestRunner}; +use crate::interactive::ask_for_test_runner; #[tracing::instrument(skip_all, level = "info")] pub fn run(args: InitArgs, config: &Config) -> Result<()> { @@ -24,7 +25,14 @@ pub fn run(args: InitArgs, config: &Config) -> Result<()> { } else { VersionControl::Git }, - snforge: matches!(args.test_runner, Some(TestRunner::StarknetFoundry)), + snforge: matches!( + if let Some(test_runner) = args.test_runner { + test_runner + } else { + ask_for_test_runner()? + }, + TestRunner::StarknetFoundry + ), }, config, )?; diff --git a/scarb/src/bin/scarb/commands/new.rs b/scarb/src/bin/scarb/commands/new.rs index bde65df61..aa350670d 100644 --- a/scarb/src/bin/scarb/commands/new.rs +++ b/scarb/src/bin/scarb/commands/new.rs @@ -4,6 +4,7 @@ use scarb::core::Config; use scarb::ops::{self, VersionControl}; use crate::args::{NewArgs, TestRunner}; +use crate::interactive::ask_for_test_runner; #[tracing::instrument(skip_all, level = "info")] pub fn run(args: NewArgs, config: &Config) -> Result<()> { @@ -18,7 +19,14 @@ pub fn run(args: NewArgs, config: &Config) -> Result<()> { } else { VersionControl::Git }, - snforge: matches!(args.init.test_runner, Some(TestRunner::StarknetFoundry)), + snforge: matches!( + if let Some(test_runner) = args.init.test_runner { + test_runner + } else { + ask_for_test_runner()? + }, + TestRunner::StarknetFoundry + ), }, config, )?; diff --git a/scarb/src/bin/scarb/interactive.rs b/scarb/src/bin/scarb/interactive.rs index d7163973b..0866b9bc2 100644 --- a/scarb/src/bin/scarb/interactive.rs +++ b/scarb/src/bin/scarb/interactive.rs @@ -1,38 +1,22 @@ -use crate::args::{Command, TestRunner}; +use crate::args::TestRunner; use anyhow::Result; use inquire::Select; use which::which; -pub fn resolve_command(command: &Command) -> Result { - let mut command = command.clone(); - match &mut command { - Command::Init(args) if args.test_runner.is_none() => { - let test_runner = ask_for_test_runner()?; - args.test_runner = Some(test_runner); - } - Command::New(args) if args.init.test_runner.is_none() => { - let test_runner = ask_for_test_runner()?; - args.init.test_runner = Some(test_runner); - } - _ => {} - } - Ok(command) -} - -fn ask_for_test_runner() -> Result { +pub fn ask_for_test_runner() -> Result { let options = if which("snforge").is_ok() { - vec!["Starknet Foundry (default)", "Cairo Native runner"] + vec!["Starknet Foundry (default)", "Cairo Test"] } else { vec![ - "Cairo Native runner (default)", + "Cairo Test (default)", "Starknet Foundry (recommended, requires snforge installed)", ] }; let answer = Select::new("Which test runner do you want to set up?", options).prompt()?; - if answer.starts_with("Cairo Native") { - Ok(TestRunner::CairoNativeRunner) + if answer.starts_with("Cairo Test") { + Ok(TestRunner::CairoTest) } else { Ok(TestRunner::StarknetFoundry) } diff --git a/scarb/src/bin/scarb/main.rs b/scarb/src/bin/scarb/main.rs index 2082e4001..07df66318 100644 --- a/scarb/src/bin/scarb/main.rs +++ b/scarb/src/bin/scarb/main.rs @@ -13,7 +13,6 @@ use scarb::ops; use scarb_ui::Ui; use crate::errors::ErrorWithExitCode; -use crate::interactive::resolve_command; mod args; mod commands; @@ -79,5 +78,5 @@ fn cli_main(args: ScarbArgs) -> Result<()> { .profile(args.profile_spec.determine()?) .build()?; - commands::run(resolve_command(&args.command)?, &mut config) + commands::run(args.command, &mut config) } diff --git a/scarb/tests/new_and_init.rs b/scarb/tests/new_and_init.rs index d93254af4..556609228 100644 --- a/scarb/tests/new_and_init.rs +++ b/scarb/tests/new_and_init.rs @@ -1,5 +1,3 @@ -use std::fs; - use assert_fs::prelude::*; use indoc::indoc; use predicates::prelude::*; @@ -9,7 +7,7 @@ use scarb::core::TomlManifest; use scarb_test_support::command::Scarb; use scarb_test_support::fsx::AssertFsUtf8Ext; -const CAIRO_NATIVE_RUNNER: [&str; 2] = ["--test-runner", "cairo-native-runner"]; +const CAIRO_NATIVE_RUNNER: [&str; 2] = ["--test-runner", "cairo-test"]; #[test] fn new_simple() { diff --git a/scarb/tests/snforge_init.rs b/scarb/tests/snforge_init.rs index 04f5818f2..4a7441328 100644 --- a/scarb/tests/snforge_init.rs +++ b/scarb/tests/snforge_init.rs @@ -12,7 +12,7 @@ fn new_simple() { Scarb::quick_snapbox() .arg("new") .arg("hello") - .arg("--snforge") + .args(["--test-runner", "starknet-foundry"]) .current_dir(&pt) .assert() .success();