From e29810c327d9cd74940d6b07439e1684cb4852ba Mon Sep 17 00:00:00 2001 From: Farid Huliiev Date: Thu, 1 May 2025 16:02:15 +0200 Subject: [PATCH] feat: add tests for similarly named features --- .../feature_suggestion_multiple/in/Cargo.toml | 7 ++++ .../feature_suggestion_multiple/in/src/lib.rs | 0 .../feature_suggestion_multiple/mod.rs | 24 ++++++++++++ .../stderr.term.svg | 38 +++++++++++++++++++ .../feature_suggestion_none/in/Cargo.toml | 7 ++++ .../feature_suggestion_none/in/src/lib.rs | 0 .../cargo_add/feature_suggestion_none/mod.rs | 24 ++++++++++++ .../feature_suggestion_none/stderr.term.svg | 38 +++++++++++++++++++ .../feature_suggestion_single/in/Cargo.toml | 7 ++++ .../feature_suggestion_single/in/src/lib.rs | 0 .../feature_suggestion_single/mod.rs | 23 +++++++++++ .../feature_suggestion_single/stderr.term.svg | 38 +++++++++++++++++++ tests/testsuite/cargo_add/mod.rs | 3 ++ 13 files changed, 209 insertions(+) create mode 100644 tests/testsuite/cargo_add/feature_suggestion_multiple/in/Cargo.toml create mode 100644 tests/testsuite/cargo_add/feature_suggestion_multiple/in/src/lib.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_multiple/mod.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_multiple/stderr.term.svg create mode 100644 tests/testsuite/cargo_add/feature_suggestion_none/in/Cargo.toml create mode 100644 tests/testsuite/cargo_add/feature_suggestion_none/in/src/lib.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_none/mod.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_none/stderr.term.svg create mode 100644 tests/testsuite/cargo_add/feature_suggestion_single/in/Cargo.toml create mode 100644 tests/testsuite/cargo_add/feature_suggestion_single/in/src/lib.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_single/mod.rs create mode 100644 tests/testsuite/cargo_add/feature_suggestion_single/stderr.term.svg diff --git a/tests/testsuite/cargo_add/feature_suggestion_multiple/in/Cargo.toml b/tests/testsuite/cargo_add/feature_suggestion_multiple/in/Cargo.toml new file mode 100644 index 000000000..92a497412 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_multiple/in/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] + +[package] +name = "cargo-list-test-fixture" +version = "0.0.0" +edition = "2024" + diff --git a/tests/testsuite/cargo_add/feature_suggestion_multiple/in/src/lib.rs b/tests/testsuite/cargo_add/feature_suggestion_multiple/in/src/lib.rs new file mode 100644 index 000000000..e69de29bb diff --git a/tests/testsuite/cargo_add/feature_suggestion_multiple/mod.rs b/tests/testsuite/cargo_add/feature_suggestion_multiple/mod.rs new file mode 100644 index 000000000..898f3aa81 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_multiple/mod.rs @@ -0,0 +1,24 @@ +use cargo_test_support::current_dir; +use cargo_test_support::file; +use cargo_test_support::prelude::*; +use cargo_test_support::Project; + +#[cargo_test] +fn case() { + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + cargo_test_support::registry::Package::new("my-package", "0.1.0+my-package") + .feature("bar", &[]) + .feature("foo", &[]) + .publish(); + + snapbox::cmd::Command::cargo_ui() + .arg("add") + .arg_line("my-package --features baz --features feo") + .current_dir(cwd) + .assert() + .failure() + .stderr_eq(file!["stderr.term.svg"]); +} diff --git a/tests/testsuite/cargo_add/feature_suggestion_multiple/stderr.term.svg b/tests/testsuite/cargo_add/feature_suggestion_multiple/stderr.term.svg new file mode 100644 index 000000000..e474c8b77 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_multiple/stderr.term.svg @@ -0,0 +1,38 @@ + + + + + + + Updating `dummy-registry` index + + Adding my-package v0.1.0 to dependencies + + error: unrecognized features for crate my-package: baz, feo + + + + disabled features: + + bar, foo + + + + + + diff --git a/tests/testsuite/cargo_add/feature_suggestion_none/in/Cargo.toml b/tests/testsuite/cargo_add/feature_suggestion_none/in/Cargo.toml new file mode 100644 index 000000000..92a497412 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_none/in/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] + +[package] +name = "cargo-list-test-fixture" +version = "0.0.0" +edition = "2024" + diff --git a/tests/testsuite/cargo_add/feature_suggestion_none/in/src/lib.rs b/tests/testsuite/cargo_add/feature_suggestion_none/in/src/lib.rs new file mode 100644 index 000000000..e69de29bb diff --git a/tests/testsuite/cargo_add/feature_suggestion_none/mod.rs b/tests/testsuite/cargo_add/feature_suggestion_none/mod.rs new file mode 100644 index 000000000..b157660f7 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_none/mod.rs @@ -0,0 +1,24 @@ +use cargo_test_support::current_dir; +use cargo_test_support::file; +use cargo_test_support::prelude::*; +use cargo_test_support::Project; + +#[cargo_test] +fn case() { + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + cargo_test_support::registry::Package::new("my-package", "0.1.0+my-package") + .feature("bar", &[]) + .feature("foo", &[]) + .publish(); + + snapbox::cmd::Command::cargo_ui() + .arg("add") + .arg_line("my-package --features none_existent") + .current_dir(cwd) + .assert() + .failure() + .stderr_eq(file!["stderr.term.svg"]); +} diff --git a/tests/testsuite/cargo_add/feature_suggestion_none/stderr.term.svg b/tests/testsuite/cargo_add/feature_suggestion_none/stderr.term.svg new file mode 100644 index 000000000..01bde8f40 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_none/stderr.term.svg @@ -0,0 +1,38 @@ + + + + + + + Updating `dummy-registry` index + + Adding my-package v0.1.0 to dependencies + + error: unrecognized feature for crate my-package: none_existent + + + + disabled features: + + bar, foo + + + + + + diff --git a/tests/testsuite/cargo_add/feature_suggestion_single/in/Cargo.toml b/tests/testsuite/cargo_add/feature_suggestion_single/in/Cargo.toml new file mode 100644 index 000000000..92a497412 --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_single/in/Cargo.toml @@ -0,0 +1,7 @@ +[workspace] + +[package] +name = "cargo-list-test-fixture" +version = "0.0.0" +edition = "2024" + diff --git a/tests/testsuite/cargo_add/feature_suggestion_single/in/src/lib.rs b/tests/testsuite/cargo_add/feature_suggestion_single/in/src/lib.rs new file mode 100644 index 000000000..e69de29bb diff --git a/tests/testsuite/cargo_add/feature_suggestion_single/mod.rs b/tests/testsuite/cargo_add/feature_suggestion_single/mod.rs new file mode 100644 index 000000000..682dd893a --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_single/mod.rs @@ -0,0 +1,23 @@ +use cargo_test_support::current_dir; +use cargo_test_support::file; +use cargo_test_support::prelude::*; +use cargo_test_support::Project; + +#[cargo_test] +fn case() { + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + cargo_test_support::registry::Package::new("my-package", "0.1.0+my-package") + .feature("bar", &[]) + .publish(); + + snapbox::cmd::Command::cargo_ui() + .arg("add") + .arg_line("my-package --features baz") + .current_dir(cwd) + .assert() + .failure() + .stderr_eq(file!["stderr.term.svg"]); +} diff --git a/tests/testsuite/cargo_add/feature_suggestion_single/stderr.term.svg b/tests/testsuite/cargo_add/feature_suggestion_single/stderr.term.svg new file mode 100644 index 000000000..e53579bfb --- /dev/null +++ b/tests/testsuite/cargo_add/feature_suggestion_single/stderr.term.svg @@ -0,0 +1,38 @@ + + + + + + + Updating `dummy-registry` index + + Adding my-package v0.1.0 to dependencies + + error: unrecognized feature for crate my-package: baz + + + + disabled features: + + bar + + + + + + diff --git a/tests/testsuite/cargo_add/mod.rs b/tests/testsuite/cargo_add/mod.rs index a2881cfbc..283b10d07 100644 --- a/tests/testsuite/cargo_add/mod.rs +++ b/tests/testsuite/cargo_add/mod.rs @@ -21,6 +21,9 @@ mod dev_existing_path_base; mod dev_prefer_existing_version; mod dry_run; mod empty_dep_name; +mod feature_suggestion_multiple; +mod feature_suggestion_none; +mod feature_suggestion_single; mod features; mod features_activated_over_limit; mod features_deactivated_over_limit;