Skip to content

Commit 5e2567b

Browse files
authored
Fix creating package with snfoundry test runner (#1843)
Closes #1759 Note: Foundry [change](foundry-rs/starknet-foundry#2770) released in version [0.35.0](https://github.com/foundry-rs/starknet-foundry/releases/tag/v0.35.0)
1 parent 3906236 commit 5e2567b

File tree

3 files changed

+28
-8
lines changed

3 files changed

+28
-8
lines changed

.github/workflows/ci.yml

+8
Original file line numberDiff line numberDiff line change
@@ -136,3 +136,11 @@ jobs:
136136
cache-dependency-path: website/package-lock.json
137137
- run: npm ci
138138
- run: npm run fmt:check
139+
140+
snforge-init:
141+
runs-on: ubuntu-latest
142+
steps:
143+
- uses: actions/checkout@v4
144+
- uses: dtolnay/rust-toolchain@stable
145+
- uses: foundry-rs/setup-snfoundry@v3
146+
- run: cargo test --profile=ci --package scarb --test snforge_init new_simple -- --ignored

scarb/src/ops/new.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -217,12 +217,12 @@ fn mk(
217217
Ok(())
218218
}
219219

220-
fn init_snforge(name: PackageName, target_dir: Utf8PathBuf, config: &Config) -> Result<()> {
221-
let target_dir = target_dir.parent().context("package must have a parent")?;
220+
fn init_snforge(name: PackageName, root_dir: Utf8PathBuf, config: &Config) -> Result<()> {
222221
let mut process = Command::new("snforge")
223-
.arg("init")
224-
.arg(name.as_str())
225-
.current_dir(target_dir)
222+
.arg("new")
223+
.args(["--name", name.as_str()])
224+
.arg("--overwrite")
225+
.arg(root_dir.as_str())
226226
.envs(get_env_vars(config, None)?)
227227
.stderr(Stdio::inherit())
228228
.stdout(Stdio::inherit())

scarb/tests/snforge_init.rs

+15-3
Original file line numberDiff line numberDiff line change
@@ -3,14 +3,23 @@ use assert_fs::TempDir;
33
use scarb::core::TomlManifest;
44
use scarb_test_support::command::Scarb;
55
use scarb_test_support::fsx::AssertFsUtf8Ext;
6+
use test_case::test_case;
67

7-
#[test]
8+
#[test_case(None)]
9+
#[test_case(Some("simple_project"))]
810
#[ignore = "run this test by name"]
9-
fn new_simple() {
11+
fn new_simple(package_name: Option<&str>) {
1012
let pt = TempDir::new().unwrap();
1113

14+
let name_args = if let Some(package_name) = package_name {
15+
vec!["--name", package_name]
16+
} else {
17+
vec![]
18+
};
19+
1220
Scarb::quick_snapbox()
1321
.arg("new")
22+
.args(name_args)
1423
.arg("hello")
1524
.args(["--test-runner", "starknet-foundry"])
1625
.current_dir(&pt)
@@ -27,7 +36,10 @@ fn new_simple() {
2736
assert!(t.child(".git").is_dir());
2837

2938
let toml_manifest = TomlManifest::read_from_path(t.child("Scarb.toml").utf8_path()).unwrap();
30-
assert_eq!(toml_manifest.package.unwrap().name.as_str(), "hello");
39+
assert_eq!(
40+
toml_manifest.package.unwrap().name.as_str(),
41+
package_name.unwrap_or("hello")
42+
);
3143
let deps = toml_manifest.dependencies.unwrap();
3244
assert_eq!(deps.len(), 1);
3345
assert!(deps.contains_key("starknet"));

0 commit comments

Comments
 (0)