Skip to content

Commit

Permalink
fix: remove too restrictive cargo metadata check
Browse files Browse the repository at this point in the history
  • Loading branch information
dj8yfo committed May 10, 2024
1 parent fcbf746 commit 787c3a4
Show file tree
Hide file tree
Showing 4 changed files with 11 additions and 66 deletions.
27 changes: 8 additions & 19 deletions cargo-near/src/commands/abi_command/abi.rs
Original file line number Diff line number Diff line change
Expand Up @@ -63,28 +63,17 @@ pub(crate) fn generate_abi(

for required_feature in ["__abi-generate", "__abi-embed"] {
if !near_sdk_dep.features.contains_key(required_feature) {
color_eyre::eyre::bail!("unsupported `near-sdk` version. expected 4.1.* or higher");
color_eyre::eyre::bail!(
"{}: {}",
format!(
"missing `{}` required feature for `near-sdk` dependency",
required_feature
),
"probably unsupported `near-sdk` version. expected 4.1.* or higher"
);
}
}

let near_sdk_metadata = crate_metadata
.root_package
.dependencies
.iter()
.find(|dep| dep.name == "near-sdk")
.wrap_err("`near-sdk` dependency not found")?;

// `Dependency::features` return value does not contain default features, so we have to check
// for default features separately.
if !near_sdk_metadata.uses_default_features
&& !near_sdk_metadata
.features
.iter()
.any(|feature| feature == "abi")
{
color_eyre::eyre::bail!("`near-sdk` dependency must have the `abi` feature enabled")
}

let cargo_args = {
let mut args = vec!["--features", "near-sdk/__abi-generate"];
args.extend_from_slice(cargo_feature_args);
Expand Down
24 changes: 0 additions & 24 deletions integration-tests/templates/negative/_Cargo_no_abi_feature.toml

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -8,8 +8,8 @@ crate-type = ["cdylib"]

[dependencies]
# NOTE: uncomment line 11 and comment 12, if it's desirable to switch to published `near-sdk` version
# near-sdk = { default-features = false, features = ["abi"], ::sdk-cratesio-version-toml:: }
near-sdk = { default-features = false, features = ["abi"], ::sdk-git-version-toml:: }
# near-sdk = { default-features = false, ::sdk-cratesio-version-toml:: }
near-sdk = { default-features = false, ::sdk-git-version-toml:: }
serde = { version = "1", features = ["derive"] }

[workspace]
Expand Down
22 changes: 1 addition & 21 deletions integration-tests/tests/abi/negative.rs
Original file line number Diff line number Diff line change
@@ -1,26 +1,6 @@
use cargo_near_integration_tests::{generate_abi_fn, generate_abi_fn_with};
use function_name::named;

#[test]
#[named]
fn test_abi_feature_not_enabled() -> cargo_near::CliResult {
fn run_test() -> cargo_near::CliResult {
generate_abi_fn_with! {
Cargo: "/templates/negative/_Cargo_no_abi_feature.toml";
Code:
pub fn foo(&self, a: u32, b: u32) {}
};
Ok(())
}

assert_eq!(
run_test().map_err(|e| e.to_string()),
Err("`near-sdk` dependency must have the `abi` feature enabled".to_string())
);

Ok(())
}

#[test]
#[named]
fn test_abi_old_sdk() -> cargo_near::CliResult {
Expand All @@ -35,7 +15,7 @@ fn test_abi_old_sdk() -> cargo_near::CliResult {

assert_eq!(
run_test().map_err(|e| e.to_string()),
Err("unsupported `near-sdk` version. expected 4.1.* or higher".to_string())
Err("missing `__abi-generate` required feature for `near-sdk` dependency: probably unsupported `near-sdk` version. expected 4.1.* or higher".to_string())
);

Ok(())
Expand Down

0 comments on commit 787c3a4

Please sign in to comment.