diff --git a/src/bin/cargo/commands/update.rs b/src/bin/cargo/commands/update.rs index b1be319f22b..da33e8d308d 100644 --- a/src/bin/cargo/commands/update.rs +++ b/src/bin/cargo/commands/update.rs @@ -19,7 +19,8 @@ pub fn cli() -> Command { "precise", "Update a single dependency to exactly PRECISE when used with -p", ) - .value_name("PRECISE"), + .value_name("PRECISE") + .requires("package"), ) .arg_manifest_path() .after_help("Run `cargo help update` for more detailed information.\n") diff --git a/src/cargo/ops/cargo_generate_lockfile.rs b/src/cargo/ops/cargo_generate_lockfile.rs index b18c338f6c7..04d4010f45e 100644 --- a/src/cargo/ops/cargo_generate_lockfile.rs +++ b/src/cargo/ops/cargo_generate_lockfile.rs @@ -36,25 +36,6 @@ pub fn generate_lockfile(ws: &Workspace<'_>) -> CargoResult<()> { } pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoResult<()> { - // Currently this is only a warning, but after a transition period this will become - // a hard error. - // See https://github.com/rust-lang/cargo/issues/10919#issuecomment-1214464756. - // We should declare the `precise` and `aggressive` arguments - // require the `package` argument in the clap. - if opts.aggressive && opts.to_update.is_empty() { - ws.config().shell().warn( - "aggressive is only supported with \"--package \", \ - this will become a hard error in a future release.", - )?; - } - - if opts.precise.is_some() && opts.to_update.is_empty() { - ws.config().shell().warn( - "precise is only supported with \"--package \", \ - this will become a hard error in a future release.", - )?; - } - if opts.aggressive && opts.precise.is_some() { anyhow::bail!("cannot specify both aggressive and precise simultaneously") } diff --git a/tests/testsuite/update.rs b/tests/testsuite/update.rs index 22ab372b77a..1eef64ea3d4 100644 --- a/tests/testsuite/update.rs +++ b/tests/testsuite/update.rs @@ -427,42 +427,6 @@ fn update_precise_do_not_force_update_deps() { .run(); } -#[cargo_test] -fn update_precise_without_package() { - Package::new("serde", "0.2.0").publish(); - - let p = project() - .file( - "Cargo.toml", - r#" - [package] - name = "bar" - version = "0.0.1" - authors = [] - - [dependencies] - serde = "0.2" - "#, - ) - .file("src/lib.rs", "") - .build(); - - p.cargo("build").run(); - - Package::new("serde", "0.2.1").publish(); - Package::new("serde", "0.3.0").publish(); - - p.cargo("update --precise 0.3.0") - .with_stderr( - "\ -[WARNING] precise is only supported with \"--package \", this will become a hard error in a future release. -[UPDATING] `[..]` index -[UPDATING] serde v0.2.0 -> v0.2.1 -", - ) - .run(); -} - #[cargo_test] fn update_aggressive() { Package::new("log", "0.1.0").publish(); @@ -500,41 +464,6 @@ fn update_aggressive() { .run(); } -#[cargo_test] -fn update_aggressive_without_package() { - Package::new("serde", "0.2.0").publish(); - - let p = project() - .file( - "Cargo.toml", - r#" - [package] - name = "bar" - version = "0.0.1" - authors = [] - - [dependencies] - serde = "0.2" - "#, - ) - .file("src/lib.rs", "") - .build(); - - p.cargo("build").run(); - - Package::new("serde", "0.2.1").publish(); - - p.cargo("update --aggressive") - .with_stderr( - "\ -[WARNING] aggressive is only supported with \"--package \", this will become a hard error in a future release. -[UPDATING] `[..]` index -[UPDATING] serde v0.2.0 -> v0.2.1 -", - ) - .run(); -} - // cargo update should respect its arguments even without a lockfile. // See issue "Running cargo update without a Cargo.lock ignores arguments" // at .