From 3297f271a3a054dccb0b966f7b2a62aa745b602f Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 14 Jul 2024 17:00:22 +0300 Subject: [PATCH 1/4] Updated the soldeer version to 0.2.18 and added extra CLI tests --- crates/forge/bin/cmd/soldeer.rs | 2 + crates/forge/tests/cli/soldeer.rs | 93 +++++++++++++++++++++++++++++++ 2 files changed, 95 insertions(+) diff --git a/crates/forge/bin/cmd/soldeer.rs b/crates/forge/bin/cmd/soldeer.rs index 52e1240a06e13..902222694db67 100644 --- a/crates/forge/bin/cmd/soldeer.rs +++ b/crates/forge/bin/cmd/soldeer.rs @@ -6,6 +6,8 @@ use soldeer::commands::Subcommands; // CLI arguments for `forge soldeer`. #[derive(Clone, Debug, Parser)] #[clap(override_usage = "forge soldeer install [DEPENDENCY]~[VERSION] + forge soldeer install [DEPENDENCY]~[VERSION] + forge soldeer install [DEPENDENCY]~[VERSION] forge soldeer push [DEPENDENCY]~[VERSION] forge soldeer login forge soldeer update diff --git a/crates/forge/tests/cli/soldeer.rs b/crates/forge/tests/cli/soldeer.rs index cf1e0e5d34aa3..25608b75dec51 100644 --- a/crates/forge/tests/cli/soldeer.rs +++ b/crates/forge/tests/cli/soldeer.rs @@ -51,6 +51,99 @@ forge-std = "1.8.1" assert_eq!(foundry_contents, actual_foundry_contents); }); +forgesoldeer!(install_dependency_git, |prj, cmd| { + let command = "install"; + let dependency = "forge-std~1.8.1"; + let git = "git@gitlab.com:mario4582928/Mario.git"; + + let foundry_file = prj.root().join("foundry.toml"); + + + cmd.arg("soldeer").args([command, dependency, git]); + cmd.execute(); + + // Making sure the path was created to the dependency and that README.md exists + // meaning that the dependencies were installed correctly + let path_dep_forge = + prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); + assert!(path_dep_forge.exists()); + + // Making sure the lock contents are the right ones + let path_lock_file = prj.root().join("soldeer.lock"); + let lock_contents = r#" +[[dependencies]] +name = "forge-std" +version = "1.8.1" +source = "git@gitlab.com:mario4582928/Mario.git" +checksum = "bedb1775bd60e3e142a6db863982254a4b891b20" +"#; + + let actual_lock_contents = read_file_to_string(&path_lock_file); + assert_eq!(lock_contents, actual_lock_contents); + + // Making sure the foundry contents are the right ones + let foundry_contents = r#"[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + +[dependencies] +forge-std = { version = "1.8.1", url = "git@gitlab.com:mario4582928/Mario.git", commit = "bedb1775bd60e3e142a6db863982254a4b891b20" } +"#; + + let actual_foundry_contents = read_file_to_string(&foundry_file); + assert_eq!(foundry_contents, actual_foundry_contents); +}); + +forgesoldeer!(install_dependency_git_commit, |prj, cmd| { + let command = "install"; + let dependency = "forge-std~1.8.1"; + let git = "git@gitlab.com:mario4582928/Mario.git"; + let commit = "bedb1775bd60e3e142a6db863982254a4b891b20"; + + let foundry_file = prj.root().join("foundry.toml"); + + cmd.arg("soldeer").args([command, dependency, git, commit]); + cmd.execute(); + + // Making sure the path was created to the dependency and that README.md exists + // meaning that the dependencies were installed correctly + let path_dep_forge = + prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); + assert!(path_dep_forge.exists()); + + // Making sure the lock contents are the right ones + let path_lock_file = prj.root().join("soldeer.lock"); + let lock_contents = r#" +[[dependencies]] +name = "forge-std" +version = "1.8.1" +source = "git@gitlab.com:mario4582928/Mario.git" +checksum = "bedb1775bd60e3e142a6db863982254a4b891b20" +"#; + + let actual_lock_contents = read_file_to_string(&path_lock_file); + assert_eq!(lock_contents, actual_lock_contents); + + // Making sure the foundry contents are the right ones + let foundry_contents = r#"[profile.default] +src = "src" +out = "out" +libs = ["lib"] + +# See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options + +[dependencies] +forge-std = { version = "1.8.1", url = "git@gitlab.com:mario4582928/Mario.git", commit = "bedb1775bd60e3e142a6db863982254a4b891b20" } +"#; + + let actual_foundry_contents = read_file_to_string(&foundry_file); + assert_eq!(foundry_contents, actual_foundry_contents); +}); + + forgesoldeer!(update_dependencies, |prj, cmd| { let command = "update"; From c7ed420dd9d8b236cd3747bd85b50fdd458dd644 Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 14 Jul 2024 17:03:54 +0300 Subject: [PATCH 2/4] Forgot to push the root files --- Cargo.lock | 60 ++++++++++++++++++++++++++++++++++-- Cargo.toml | 2 +- crates/config/src/soldeer.rs | 4 +++ 3 files changed, 63 insertions(+), 3 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 9869a2658dd67..46bf440f80ccb 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4324,6 +4324,21 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" +[[package]] +name = "git2" +version = "0.19.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" +dependencies = [ + "bitflags 2.6.0", + "libc", + "libgit2-sys", + "log", + "openssl-probe", + "openssl-sys", + "url", +] + [[package]] name = "gix-actor" version = "0.31.4" @@ -5352,6 +5367,20 @@ dependencies = [ "pkg-config", ] +[[package]] +name = "libgit2-sys" +version = "0.17.0+1.8.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" +dependencies = [ + "cc", + "libc", + "libssh2-sys", + "libz-sys", + "openssl-sys", + "pkg-config", +] + [[package]] name = "libm" version = "0.2.8" @@ -5368,6 +5397,20 @@ dependencies = [ "libc", ] +[[package]] +name = "libssh2-sys" +version = "0.3.0" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" +dependencies = [ + "cc", + "libc", + "libz-sys", + "openssl-sys", + "pkg-config", + "vcpkg", +] + [[package]] name = "libusb1-sys" version = "0.7.0" @@ -5380,6 +5423,18 @@ dependencies = [ "vcpkg", ] +[[package]] +name = "libz-sys" +version = "1.1.18" +source = "registry+https://github.com/rust-lang/crates.io-index" +checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" +dependencies = [ + "cc", + "libc", + "pkg-config", + "vcpkg", +] + [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -8057,14 +8112,15 @@ dependencies = [ [[package]] name = "soldeer" -version = "0.2.17" +version = "0.2.18" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "ef46372c17d5650cb18b7f374c45732334fa0867de6c7f14c1fc6973559cd3ff" +checksum = "943f503a515e8c5e3d690ee087dc79a9d34e2df000bfb15f7c5a2dbaceabb2e2" dependencies = [ "chrono", "clap", "email-address-parser", "futures", + "git2", "once_cell", "regex", "reqwest 0.12.5", diff --git a/Cargo.toml b/Cargo.toml index a64a6688cbfab..4b49cc388c259 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -260,6 +260,6 @@ reqwest = { version = "0.12", default-features = false } tower = "0.4" tower-http = "0.5" # soldeer -soldeer = "0.2.17" +soldeer = "0.2.18" proptest = "1" diff --git a/crates/config/src/soldeer.rs b/crates/config/src/soldeer.rs index e5df0dcaf6a01..bf8d13e9c7a0f 100644 --- a/crates/config/src/soldeer.rs +++ b/crates/config/src/soldeer.rs @@ -13,6 +13,10 @@ pub struct MapDependency { /// The url from where the dependency was retrieved #[serde(default, skip_serializing_if = "Option::is_none")] pub url: Option, + + /// The commit in case git is used as dependency retrieval + #[serde(default, skip_serializing_if = "Option::is_none")] + pub commit: Option, } /// Type for Soldeer configs, under dependencies tag in the foundry.toml From 6f959ae549ad3529d7bee4f632352c2286012153 Mon Sep 17 00:00:00 2001 From: Mario Date: Sun, 14 Jul 2024 17:53:39 +0300 Subject: [PATCH 3/4] solving fmt --- crates/forge/tests/cli/soldeer.rs | 8 ++------ 1 file changed, 2 insertions(+), 6 deletions(-) diff --git a/crates/forge/tests/cli/soldeer.rs b/crates/forge/tests/cli/soldeer.rs index 25608b75dec51..3ba27325c8838 100644 --- a/crates/forge/tests/cli/soldeer.rs +++ b/crates/forge/tests/cli/soldeer.rs @@ -58,14 +58,12 @@ forgesoldeer!(install_dependency_git, |prj, cmd| { let foundry_file = prj.root().join("foundry.toml"); - cmd.arg("soldeer").args([command, dependency, git]); cmd.execute(); // Making sure the path was created to the dependency and that README.md exists // meaning that the dependencies were installed correctly - let path_dep_forge = - prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); + let path_dep_forge = prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); assert!(path_dep_forge.exists()); // Making sure the lock contents are the right ones @@ -110,8 +108,7 @@ forgesoldeer!(install_dependency_git_commit, |prj, cmd| { // Making sure the path was created to the dependency and that README.md exists // meaning that the dependencies were installed correctly - let path_dep_forge = - prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); + let path_dep_forge = prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); assert!(path_dep_forge.exists()); // Making sure the lock contents are the right ones @@ -143,7 +140,6 @@ forge-std = { version = "1.8.1", url = "git@gitlab.com:mario4582928/Mario.git", assert_eq!(foundry_contents, actual_foundry_contents); }); - forgesoldeer!(update_dependencies, |prj, cmd| { let command = "update"; From a9639a66d773b7232ea28879210a30eeb492abdc Mon Sep 17 00:00:00 2001 From: Mario Date: Mon, 15 Jul 2024 17:48:02 +0300 Subject: [PATCH 4/4] Updated git handling to match the rust way --- Cargo.lock | 60 ++----------------------------- Cargo.toml | 2 +- crates/config/src/soldeer.rs | 2 +- crates/forge/bin/cmd/soldeer.rs | 3 +- crates/forge/tests/cli/soldeer.rs | 31 ++++++++-------- 5 files changed, 20 insertions(+), 78 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index 46bf440f80ccb..4619dbf0c16ef 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4324,21 +4324,6 @@ version = "0.28.1" source = "registry+https://github.com/rust-lang/crates.io-index" checksum = "4271d37baee1b8c7e4b708028c57d816cf9d2434acb33a549475f78c181f6253" -[[package]] -name = "git2" -version = "0.19.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "b903b73e45dc0c6c596f2d37eccece7c1c8bb6e4407b001096387c63d0d93724" -dependencies = [ - "bitflags 2.6.0", - "libc", - "libgit2-sys", - "log", - "openssl-probe", - "openssl-sys", - "url", -] - [[package]] name = "gix-actor" version = "0.31.4" @@ -5367,20 +5352,6 @@ dependencies = [ "pkg-config", ] -[[package]] -name = "libgit2-sys" -version = "0.17.0+1.8.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "10472326a8a6477c3c20a64547b0059e4b0d086869eee31e6d7da728a8eb7224" -dependencies = [ - "cc", - "libc", - "libssh2-sys", - "libz-sys", - "openssl-sys", - "pkg-config", -] - [[package]] name = "libm" version = "0.2.8" @@ -5397,20 +5368,6 @@ dependencies = [ "libc", ] -[[package]] -name = "libssh2-sys" -version = "0.3.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "2dc8a030b787e2119a731f1951d6a773e2280c660f8ec4b0f5e1505a386e71ee" -dependencies = [ - "cc", - "libc", - "libz-sys", - "openssl-sys", - "pkg-config", - "vcpkg", -] - [[package]] name = "libusb1-sys" version = "0.7.0" @@ -5423,18 +5380,6 @@ dependencies = [ "vcpkg", ] -[[package]] -name = "libz-sys" -version = "1.1.18" -source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "c15da26e5af7e25c90b37a2d75cdbf940cf4a55316de9d84c679c9b8bfabf82e" -dependencies = [ - "cc", - "libc", - "pkg-config", - "vcpkg", -] - [[package]] name = "linux-raw-sys" version = "0.4.14" @@ -8112,15 +8057,14 @@ dependencies = [ [[package]] name = "soldeer" -version = "0.2.18" +version = "0.2.19" source = "registry+https://github.com/rust-lang/crates.io-index" -checksum = "943f503a515e8c5e3d690ee087dc79a9d34e2df000bfb15f7c5a2dbaceabb2e2" +checksum = "d584c27ebf7ad3e2557d029a07b19fa0d192d67bd73eea1e1695936eb5666e34" dependencies = [ "chrono", "clap", "email-address-parser", "futures", - "git2", "once_cell", "regex", "reqwest 0.12.5", diff --git a/Cargo.toml b/Cargo.toml index 4b49cc388c259..f726796afe5d8 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -260,6 +260,6 @@ reqwest = { version = "0.12", default-features = false } tower = "0.4" tower-http = "0.5" # soldeer -soldeer = "0.2.18" +soldeer = "0.2.19" proptest = "1" diff --git a/crates/config/src/soldeer.rs b/crates/config/src/soldeer.rs index bf8d13e9c7a0f..3bb8e9a3b74a8 100644 --- a/crates/config/src/soldeer.rs +++ b/crates/config/src/soldeer.rs @@ -16,7 +16,7 @@ pub struct MapDependency { /// The commit in case git is used as dependency retrieval #[serde(default, skip_serializing_if = "Option::is_none")] - pub commit: Option, + pub rev: Option, } /// Type for Soldeer configs, under dependencies tag in the foundry.toml diff --git a/crates/forge/bin/cmd/soldeer.rs b/crates/forge/bin/cmd/soldeer.rs index 902222694db67..9c8579fe7a4e9 100644 --- a/crates/forge/bin/cmd/soldeer.rs +++ b/crates/forge/bin/cmd/soldeer.rs @@ -7,7 +7,8 @@ use soldeer::commands::Subcommands; #[derive(Clone, Debug, Parser)] #[clap(override_usage = "forge soldeer install [DEPENDENCY]~[VERSION] forge soldeer install [DEPENDENCY]~[VERSION] - forge soldeer install [DEPENDENCY]~[VERSION] + forge soldeer install [DEPENDENCY]~[VERSION] --rev + forge soldeer install [DEPENDENCY]~[VERSION] --rev forge soldeer push [DEPENDENCY]~[VERSION] forge soldeer login forge soldeer update diff --git a/crates/forge/tests/cli/soldeer.rs b/crates/forge/tests/cli/soldeer.rs index 3ba27325c8838..1a62578d1b67a 100644 --- a/crates/forge/tests/cli/soldeer.rs +++ b/crates/forge/tests/cli/soldeer.rs @@ -47,8 +47,7 @@ libs = ["lib"] forge-std = "1.8.1" "#; - let actual_foundry_contents = read_file_to_string(&foundry_file); - assert_eq!(foundry_contents, actual_foundry_contents); + assert_data_eq!(read_file_to_string(&foundry_file), foundry_contents); }); forgesoldeer!(install_dependency_git, |prj, cmd| { @@ -73,7 +72,7 @@ forgesoldeer!(install_dependency_git, |prj, cmd| { name = "forge-std" version = "1.8.1" source = "git@gitlab.com:mario4582928/Mario.git" -checksum = "bedb1775bd60e3e142a6db863982254a4b891b20" +checksum = "22868f426bd4dd0e682b5ec5f9bd55507664240c" "#; let actual_lock_contents = read_file_to_string(&path_lock_file); @@ -88,27 +87,28 @@ libs = ["lib"] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options [dependencies] -forge-std = { version = "1.8.1", url = "git@gitlab.com:mario4582928/Mario.git", commit = "bedb1775bd60e3e142a6db863982254a4b891b20" } +forge-std = { version = "1.8.1", git = "git@gitlab.com:mario4582928/Mario.git", rev = "22868f426bd4dd0e682b5ec5f9bd55507664240c" } "#; - let actual_foundry_contents = read_file_to_string(&foundry_file); - assert_eq!(foundry_contents, actual_foundry_contents); + assert_data_eq!(read_file_to_string(&foundry_file), foundry_contents); }); forgesoldeer!(install_dependency_git_commit, |prj, cmd| { let command = "install"; let dependency = "forge-std~1.8.1"; let git = "git@gitlab.com:mario4582928/Mario.git"; - let commit = "bedb1775bd60e3e142a6db863982254a4b891b20"; + let rev_flag = "--rev"; + let commit = "7a0663eaf7488732f39550be655bad6694974cb3"; let foundry_file = prj.root().join("foundry.toml"); - cmd.arg("soldeer").args([command, dependency, git, commit]); + cmd.arg("soldeer").args([command, dependency, git, rev_flag, commit]); cmd.execute(); // Making sure the path was created to the dependency and that README.md exists // meaning that the dependencies were installed correctly - let path_dep_forge = prj.root().join("dependencies").join("forge-std-1.8.1").join("README.md"); + let path_dep_forge = + prj.root().join("dependencies").join("forge-std-1.8.1").join("JustATest2.md"); assert!(path_dep_forge.exists()); // Making sure the lock contents are the right ones @@ -118,7 +118,7 @@ forgesoldeer!(install_dependency_git_commit, |prj, cmd| { name = "forge-std" version = "1.8.1" source = "git@gitlab.com:mario4582928/Mario.git" -checksum = "bedb1775bd60e3e142a6db863982254a4b891b20" +checksum = "7a0663eaf7488732f39550be655bad6694974cb3" "#; let actual_lock_contents = read_file_to_string(&path_lock_file); @@ -133,11 +133,10 @@ libs = ["lib"] # See more config options https://github.com/foundry-rs/foundry/blob/master/crates/config/README.md#all-options [dependencies] -forge-std = { version = "1.8.1", url = "git@gitlab.com:mario4582928/Mario.git", commit = "bedb1775bd60e3e142a6db863982254a4b891b20" } +forge-std = { version = "1.8.1", git = "git@gitlab.com:mario4582928/Mario.git", rev = "7a0663eaf7488732f39550be655bad6694974cb3" } "#; - let actual_foundry_contents = read_file_to_string(&foundry_file); - assert_eq!(foundry_contents, actual_foundry_contents); + assert_data_eq!(read_file_to_string(&foundry_file), foundry_contents); }); forgesoldeer!(update_dependencies, |prj, cmd| { @@ -190,8 +189,7 @@ libs = ["lib"] forge-std = { version = "1.8.1" } "#; - let actual_foundry_contents = read_file_to_string(&foundry_file); - assert_eq!(foundry_contents, actual_foundry_contents); + assert_data_eq!(read_file_to_string(&foundry_file), foundry_contents); }); forgesoldeer!(update_dependencies_simple_version, |prj, cmd| { @@ -245,8 +243,7 @@ libs = ["lib"] forge-std = "1.8.1" "#; - let actual_foundry_contents = read_file_to_string(&foundry_file); - assert_eq!(foundry_contents, actual_foundry_contents); + assert_data_eq!(read_file_to_string(&foundry_file), foundry_contents); }); forgesoldeer!(login, |prj, cmd| {