From 70a97464c187f722cba7ec0d3fa862754676bfa8 Mon Sep 17 00:00:00 2001 From: Zac Harrold Date: Thu, 9 Apr 2026 13:09:14 +1000 Subject: [PATCH 1/2] test: Add test confirming `-m` is unused --- tests/testsuite/build.rs | 21 +++++++++++++++++++++ 1 file changed, 21 insertions(+) diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index b204d80f681..4eb97497722 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -293,6 +293,27 @@ For more information, try '--help'. .run(); } +#[cargo_test] +fn cargo_compile_with_manifest_path_shorthand() { + let p = project() + .file("Cargo.toml", &basic_bin_manifest("foo")) + .file("src/foo.rs", &main_file(r#""i am foo""#, &[])) + .build(); + + p.cargo("build -m foo/Cargo.toml") + .cwd(p.root().parent().unwrap()) + .with_stderr_data(str![[r#" +[ERROR] unexpected argument '-m' found + +Usage: cargo build [OPTIONS] + +For more information, try '--help'. + +"#]]) + .with_status(1) + .run(); +} + #[cargo_test] fn chdir_gated() { let p = project() From 53e8ba11c267b2662d95352709e0291090774c3b Mon Sep 17 00:00:00 2001 From: Zac Harrold Date: Thu, 9 Apr 2026 11:40:22 +1000 Subject: [PATCH 2/2] feat: Add -m shorthand for --manifest-path Intended to simplify working with non-standard manifest paths, such as Cargo scripts. --- src/cargo/util/command_prelude.rs | 1 + tests/testsuite/build.rs | 10 +--------- tests/testsuite/cargo_add/help/stdout.term.svg | 2 +- tests/testsuite/cargo_bench/help/stdout.term.svg | 2 +- tests/testsuite/cargo_build/help/stdout.term.svg | 2 +- tests/testsuite/cargo_check/help/stdout.term.svg | 2 +- tests/testsuite/cargo_clean/help/stdout.term.svg | 2 +- tests/testsuite/cargo_doc/help/stdout.term.svg | 2 +- tests/testsuite/cargo_fetch/help/stdout.term.svg | 2 +- tests/testsuite/cargo_fix/help/stdout.term.svg | 2 +- .../cargo_generate_lockfile/help/stdout.term.svg | 2 +- .../cargo_locate_project/help/stdout.term.svg | 2 +- tests/testsuite/cargo_metadata/help/stdout.term.svg | 2 +- tests/testsuite/cargo_package/help/stdout.term.svg | 2 +- tests/testsuite/cargo_pkgid/help/stdout.term.svg | 2 +- tests/testsuite/cargo_publish/help/stdout.term.svg | 2 +- .../testsuite/cargo_read_manifest/help/stdout.term.svg | 2 +- tests/testsuite/cargo_remove/help/stdout.term.svg | 2 +- .../cargo_report_sessions/help/stdout.term.svg | 2 +- .../cargo_report_timings/help/stdout.term.svg | 2 +- tests/testsuite/cargo_run/help/stdout.term.svg | 2 +- tests/testsuite/cargo_rustc/help/stdout.term.svg | 2 +- tests/testsuite/cargo_rustdoc/help/stdout.term.svg | 2 +- tests/testsuite/cargo_test/help/stdout.term.svg | 2 +- tests/testsuite/cargo_tree/help/stdout.term.svg | 2 +- tests/testsuite/cargo_update/help/stdout.term.svg | 2 +- tests/testsuite/cargo_vendor/help/stdout.term.svg | 2 +- .../cargo_verify_project/help/stdout.term.svg | 4 ++-- 28 files changed, 29 insertions(+), 36 deletions(-) diff --git a/src/cargo/util/command_prelude.rs b/src/cargo/util/command_prelude.rs index 2e22d14993e..d7ef5f062aa 100644 --- a/src/cargo/util/command_prelude.rs +++ b/src/cargo/util/command_prelude.rs @@ -375,6 +375,7 @@ pub trait CommandExt: Sized { fn arg_manifest_path_without_unsupported_path_tip(self) -> Self { self._arg( opt("manifest-path", "Path to Cargo.toml") + .short('m') .value_name("PATH") .help_heading(heading::MANIFEST_OPTIONS) .add(clap_complete::engine::ArgValueCompleter::new( diff --git a/tests/testsuite/build.rs b/tests/testsuite/build.rs index 4eb97497722..d28efeace62 100644 --- a/tests/testsuite/build.rs +++ b/tests/testsuite/build.rs @@ -302,16 +302,8 @@ fn cargo_compile_with_manifest_path_shorthand() { p.cargo("build -m foo/Cargo.toml") .cwd(p.root().parent().unwrap()) - .with_stderr_data(str![[r#" -[ERROR] unexpected argument '-m' found - -Usage: cargo build [OPTIONS] - -For more information, try '--help'. - -"#]]) - .with_status(1) .run(); + assert!(p.bin("foo").is_file()); } #[cargo_test] diff --git a/tests/testsuite/cargo_add/help/stdout.term.svg b/tests/testsuite/cargo_add/help/stdout.term.svg index f2c454599ac..6ce6cfd4597 100644 --- a/tests/testsuite/cargo_add/help/stdout.term.svg +++ b/tests/testsuite/cargo_add/help/stdout.term.svg @@ -172,7 +172,7 @@ Manifest Options: - --manifest-path <PATH> + -m, --manifest-path <PATH> Path to Cargo.toml diff --git a/tests/testsuite/cargo_bench/help/stdout.term.svg b/tests/testsuite/cargo_bench/help/stdout.term.svg index 7245f6485f0..d916e1f72fd 100644 --- a/tests/testsuite/cargo_bench/help/stdout.term.svg +++ b/tests/testsuite/cargo_bench/help/stdout.term.svg @@ -128,7 +128,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_build/help/stdout.term.svg b/tests/testsuite/cargo_build/help/stdout.term.svg index f64842cf9b6..6f3c21fb789 100644 --- a/tests/testsuite/cargo_build/help/stdout.term.svg +++ b/tests/testsuite/cargo_build/help/stdout.term.svg @@ -124,7 +124,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_check/help/stdout.term.svg b/tests/testsuite/cargo_check/help/stdout.term.svg index 55e49ce8f96..05148571f16 100644 --- a/tests/testsuite/cargo_check/help/stdout.term.svg +++ b/tests/testsuite/cargo_check/help/stdout.term.svg @@ -122,7 +122,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_clean/help/stdout.term.svg b/tests/testsuite/cargo_clean/help/stdout.term.svg index f6c24792fad..1d60aa0010f 100644 --- a/tests/testsuite/cargo_clean/help/stdout.term.svg +++ b/tests/testsuite/cargo_clean/help/stdout.term.svg @@ -72,7 +72,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_doc/help/stdout.term.svg b/tests/testsuite/cargo_doc/help/stdout.term.svg index 0599767ae07..d7c98ca5141 100644 --- a/tests/testsuite/cargo_doc/help/stdout.term.svg +++ b/tests/testsuite/cargo_doc/help/stdout.term.svg @@ -116,7 +116,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_fetch/help/stdout.term.svg b/tests/testsuite/cargo_fetch/help/stdout.term.svg index feeab6268e6..08667f3d144 100644 --- a/tests/testsuite/cargo_fetch/help/stdout.term.svg +++ b/tests/testsuite/cargo_fetch/help/stdout.term.svg @@ -54,7 +54,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_fix/help/stdout.term.svg b/tests/testsuite/cargo_fix/help/stdout.term.svg index cc977ad5d45..0cbf5081add 100644 --- a/tests/testsuite/cargo_fix/help/stdout.term.svg +++ b/tests/testsuite/cargo_fix/help/stdout.term.svg @@ -132,7 +132,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_generate_lockfile/help/stdout.term.svg b/tests/testsuite/cargo_generate_lockfile/help/stdout.term.svg index 9981a5f4dc7..1081a980039 100644 --- a/tests/testsuite/cargo_generate_lockfile/help/stdout.term.svg +++ b/tests/testsuite/cargo_generate_lockfile/help/stdout.term.svg @@ -48,7 +48,7 @@ Manifest Options: - --manifest-path <PATH> + -m, --manifest-path <PATH> Path to Cargo.toml diff --git a/tests/testsuite/cargo_locate_project/help/stdout.term.svg b/tests/testsuite/cargo_locate_project/help/stdout.term.svg index 45aed77188a..d390c4a3910 100644 --- a/tests/testsuite/cargo_locate_project/help/stdout.term.svg +++ b/tests/testsuite/cargo_locate_project/help/stdout.term.svg @@ -52,7 +52,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_metadata/help/stdout.term.svg b/tests/testsuite/cargo_metadata/help/stdout.term.svg index 6f878257642..a79c71a1d90 100644 --- a/tests/testsuite/cargo_metadata/help/stdout.term.svg +++ b/tests/testsuite/cargo_metadata/help/stdout.term.svg @@ -68,7 +68,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_package/help/stdout.term.svg b/tests/testsuite/cargo_package/help/stdout.term.svg index 5b8725bfa55..556e414fa95 100644 --- a/tests/testsuite/cargo_package/help/stdout.term.svg +++ b/tests/testsuite/cargo_package/help/stdout.term.svg @@ -96,7 +96,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_pkgid/help/stdout.term.svg b/tests/testsuite/cargo_pkgid/help/stdout.term.svg index 74f0d5ed26e..1ec66e9af4f 100644 --- a/tests/testsuite/cargo_pkgid/help/stdout.term.svg +++ b/tests/testsuite/cargo_pkgid/help/stdout.term.svg @@ -60,7 +60,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_publish/help/stdout.term.svg b/tests/testsuite/cargo_publish/help/stdout.term.svg index 270335282d3..4f694fdeca1 100644 --- a/tests/testsuite/cargo_publish/help/stdout.term.svg +++ b/tests/testsuite/cargo_publish/help/stdout.term.svg @@ -90,7 +90,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_read_manifest/help/stdout.term.svg b/tests/testsuite/cargo_read_manifest/help/stdout.term.svg index 8ce51b39fd7..d79a48a585c 100644 --- a/tests/testsuite/cargo_read_manifest/help/stdout.term.svg +++ b/tests/testsuite/cargo_read_manifest/help/stdout.term.svg @@ -52,7 +52,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_remove/help/stdout.term.svg b/tests/testsuite/cargo_remove/help/stdout.term.svg index a7060069e04..949debd1aef 100644 --- a/tests/testsuite/cargo_remove/help/stdout.term.svg +++ b/tests/testsuite/cargo_remove/help/stdout.term.svg @@ -72,7 +72,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_report_sessions/help/stdout.term.svg b/tests/testsuite/cargo_report_sessions/help/stdout.term.svg index afb9cf36d91..997baef8a51 100644 --- a/tests/testsuite/cargo_report_sessions/help/stdout.term.svg +++ b/tests/testsuite/cargo_report_sessions/help/stdout.term.svg @@ -50,7 +50,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_report_timings/help/stdout.term.svg b/tests/testsuite/cargo_report_timings/help/stdout.term.svg index 00b692de7cd..b3cb603610e 100644 --- a/tests/testsuite/cargo_report_timings/help/stdout.term.svg +++ b/tests/testsuite/cargo_report_timings/help/stdout.term.svg @@ -52,7 +52,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_run/help/stdout.term.svg b/tests/testsuite/cargo_run/help/stdout.term.svg index ef4d7547a49..9f50eb063d9 100644 --- a/tests/testsuite/cargo_run/help/stdout.term.svg +++ b/tests/testsuite/cargo_run/help/stdout.term.svg @@ -104,7 +104,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_rustc/help/stdout.term.svg b/tests/testsuite/cargo_rustc/help/stdout.term.svg index f161b7a8595..001db2cc54d 100644 --- a/tests/testsuite/cargo_rustc/help/stdout.term.svg +++ b/tests/testsuite/cargo_rustc/help/stdout.term.svg @@ -126,7 +126,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_rustdoc/help/stdout.term.svg b/tests/testsuite/cargo_rustdoc/help/stdout.term.svg index cd66b8715b0..750ed3c754c 100644 --- a/tests/testsuite/cargo_rustdoc/help/stdout.term.svg +++ b/tests/testsuite/cargo_rustdoc/help/stdout.term.svg @@ -124,7 +124,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_test/help/stdout.term.svg b/tests/testsuite/cargo_test/help/stdout.term.svg index 83ef2a104c7..19807417e01 100644 --- a/tests/testsuite/cargo_test/help/stdout.term.svg +++ b/tests/testsuite/cargo_test/help/stdout.term.svg @@ -134,7 +134,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_tree/help/stdout.term.svg b/tests/testsuite/cargo_tree/help/stdout.term.svg index 3a9dfdbcf3b..a244777c7f6 100644 --- a/tests/testsuite/cargo_tree/help/stdout.term.svg +++ b/tests/testsuite/cargo_tree/help/stdout.term.svg @@ -100,7 +100,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_update/help/stdout.term.svg b/tests/testsuite/cargo_update/help/stdout.term.svg index fa8208911f9..acd9123199b 100644 --- a/tests/testsuite/cargo_update/help/stdout.term.svg +++ b/tests/testsuite/cargo_update/help/stdout.term.svg @@ -64,7 +64,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --ignore-rust-version Ignore `rust-version` specification in packages diff --git a/tests/testsuite/cargo_vendor/help/stdout.term.svg b/tests/testsuite/cargo_vendor/help/stdout.term.svg index 3dc423db9e7..a26301282b5 100644 --- a/tests/testsuite/cargo_vendor/help/stdout.term.svg +++ b/tests/testsuite/cargo_vendor/help/stdout.term.svg @@ -62,7 +62,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged diff --git a/tests/testsuite/cargo_verify_project/help/stdout.term.svg b/tests/testsuite/cargo_verify_project/help/stdout.term.svg index f21961b88da..8f847f05a25 100644 --- a/tests/testsuite/cargo_verify_project/help/stdout.term.svg +++ b/tests/testsuite/cargo_verify_project/help/stdout.term.svg @@ -1,7 +1,7 @@ Manifest Options: - --manifest-path <PATH> Path to Cargo.toml + -m, --manifest-path <PATH> Path to Cargo.toml --locked Assert that `Cargo.lock` will remain unchanged