mirror of
https://github.com/rust-lang/cargo.git
synced 2025-10-01 11:30:39 +00:00
feat(cli): emit error when add is given a toolchain name instead of a crate name
This commit is contained in:
parent
1548f3bec4
commit
a9c47cc3ab
@ -242,7 +242,20 @@ fn parse_dependencies(config: &Config, matches: &ArgMatches) -> CargoResult<Vec<
|
||||
.flatten()
|
||||
.map(|c| (Some(c.clone()), None))
|
||||
.collect::<IndexMap<_, _>>();
|
||||
|
||||
let mut infer_crate_name = false;
|
||||
|
||||
for (crate_name, _) in crates.iter() {
|
||||
let crate_name = crate_name.as_ref().unwrap();
|
||||
|
||||
if let Some(toolchain) = crate_name.strip_prefix("+") {
|
||||
anyhow::bail!(
|
||||
"invalid character `+` in dependency name: `+{toolchain}`
|
||||
Use `cargo +{toolchain} add` if you meant to use the `{toolchain}` toolchain."
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
if crates.is_empty() {
|
||||
if path.is_some() || git.is_some() {
|
||||
crates.insert(None, None);
|
||||
|
1
tests/testsuite/cargo_add/add_toolchain/in
Symbolic link
1
tests/testsuite/cargo_add/add_toolchain/in
Symbolic link
@ -0,0 +1 @@
|
||||
../add-basic.in
|
23
tests/testsuite/cargo_add/add_toolchain/mod.rs
Normal file
23
tests/testsuite/cargo_add/add_toolchain/mod.rs
Normal file
@ -0,0 +1,23 @@
|
||||
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() {
|
||||
let project = Project::from_template(curr_dir!().join("in"));
|
||||
let project_root = project.root();
|
||||
let cwd = &project_root;
|
||||
|
||||
snapbox::cmd::Command::cargo_ui()
|
||||
.arg("add")
|
||||
.arg_line("+nightly")
|
||||
.current_dir(cwd)
|
||||
.assert()
|
||||
.failure()
|
||||
.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);
|
||||
}
|
5
tests/testsuite/cargo_add/add_toolchain/out/Cargo.toml
Normal file
5
tests/testsuite/cargo_add/add_toolchain/out/Cargo.toml
Normal file
@ -0,0 +1,5 @@
|
||||
[workspace]
|
||||
|
||||
[package]
|
||||
name = "cargo-list-test-fixture"
|
||||
version = "0.0.0"
|
2
tests/testsuite/cargo_add/add_toolchain/stderr.log
Normal file
2
tests/testsuite/cargo_add/add_toolchain/stderr.log
Normal file
@ -0,0 +1,2 @@
|
||||
error: invalid character `+` in dependency name: `+nightly`
|
||||
Use `cargo +nightly add` if you meant to use the `nightly` toolchain.
|
0
tests/testsuite/cargo_add/add_toolchain/stdout.log
Normal file
0
tests/testsuite/cargo_add/add_toolchain/stdout.log
Normal file
@ -1,6 +1,7 @@
|
||||
mod add_basic;
|
||||
mod add_multiple;
|
||||
mod add_normalized_name_external;
|
||||
mod add_toolchain;
|
||||
mod build;
|
||||
mod build_prefer_existing_version;
|
||||
mod change_rename_target;
|
||||
|
Loading…
x
Reference in New Issue
Block a user