-
Notifications
You must be signed in to change notification settings - Fork 2.4k
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
Auto merge of #13213 - stupendoussuperpowers:mulpack-features-git, r=…
…epage `cargo add` - fix for adding features from repository with multiple packages. Fixes #13121 As discussed in the issue, when using `cargo add` to add a package with features from a git repository from one of it's members, the command might fail due to improper target for querying for said features. This PR adds a test for this edge-case where we expect it to fail with current code. It also adds a fix for this, and updates the test to expect success. While populating available features, the current code does a `Fuzzy` search which might lead to searching for features in a wrong member package. If we change it to an `Exact` query, we get back the proper member to search within.
- Loading branch information
Showing
7 changed files
with
79 additions
and
1 deletion.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1 @@ | ||
../add-basic.in |
63 changes: 63 additions & 0 deletions
63
tests/testsuite/cargo_add/git_multiple_packages_features/mod.rs
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,63 @@ | ||
use cargo_test_support::compare::assert_ui; | ||
use cargo_test_support::prelude::*; | ||
use cargo_test_support::Project; | ||
|
||
use cargo_test_support::curr_dir; | ||
|
||
#[cargo_test] | ||
fn case() { | ||
cargo_test_support::registry::init(); | ||
|
||
let main_manifest = r#" | ||
[package] | ||
name = "main-package" | ||
version = "0.1.1+main-package" | ||
authors = [] | ||
[workspace] | ||
members = ["package-wo-feature", "package-with-feature"] | ||
"#; | ||
|
||
let manifest_feature = r#" | ||
[package] | ||
name = "package-with-feature" | ||
version = "0.1.3+package-with-feature" | ||
[features] | ||
target_feature = [] | ||
"#; | ||
|
||
let project = Project::from_template(curr_dir!().join("in")); | ||
let project_root = project.root(); | ||
let cwd = &project_root; | ||
let git_dep = cargo_test_support::git::new("git-package", |project| { | ||
project | ||
.file("Cargo.toml", &main_manifest) | ||
.file( | ||
"package-wo-feature/Cargo.toml", | ||
&cargo_test_support::basic_manifest( | ||
"package-wo-feature", | ||
"0.1.1+package-wo-feature", | ||
), | ||
) | ||
.file("package-wo-feature/src/lib.rs", "") | ||
.file("package-with-feature/Cargo.toml", &manifest_feature) | ||
.file("package-with-feature/src/lib.rs", "") | ||
}); | ||
let git_url = git_dep.url().to_string(); | ||
|
||
snapbox::cmd::Command::cargo_ui() | ||
.arg("add") | ||
.args([ | ||
"--git", | ||
&git_url, | ||
"package-with-feature", | ||
"--features=target_feature", | ||
]) | ||
.current_dir(cwd) | ||
.assert() | ||
.success() | ||
.stdout_matches_path(curr_dir!().join("stdout.log")) | ||
.stderr_matches_path(curr_dir!().join("stderr.log")); | ||
|
||
assert_ui().subset_matches(curr_dir!().join("out"), &project_root); | ||
} |
8 changes: 8 additions & 0 deletions
8
tests/testsuite/cargo_add/git_multiple_packages_features/out/Cargo.toml
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,8 @@ | ||
[workspace] | ||
|
||
[package] | ||
name = "cargo-list-test-fixture" | ||
version = "0.0.0" | ||
|
||
[dependencies] | ||
package-with-feature = { git = "[ROOTURL]/git-package", version = "0.1.3", features = ["target_feature"] } |
5 changes: 5 additions & 0 deletions
5
tests/testsuite/cargo_add/git_multiple_packages_features/stderr.log
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
Updating git repository `[ROOTURL]/git-package` | ||
Adding package-with-feature (git) to dependencies. | ||
Features: | ||
+ target_feature | ||
Updating git repository `[ROOTURL]/git-package` |
Empty file.
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters