From 93c2c40e727dbd617f944129ddca8dd74f0c2249 Mon Sep 17 00:00:00 2001 From: 0xPoe Date: Sun, 7 Dec 2025 23:25:38 +0100 Subject: [PATCH 1/3] test(info): add the with default registry configured case --- tests/testsuite/cargo_info/mod.rs | 1 + .../in/.cargo/config.toml | 2 ++ .../in/Cargo.lock | 14 +++++++++ .../in/Cargo.toml | 9 ++++++ .../in/crates/crate1/Cargo.toml | 5 ++++ .../in/crates/crate1/src/lib.rs | 1 + .../in/src/lib.rs | 1 + .../with_default_registry_configured/mod.rs | 24 +++++++++++++++ .../out/.cargo/config.toml | 2 ++ .../out/Cargo.lock | 14 +++++++++ .../out/Cargo.toml | 9 ++++++ .../out/crates/crate1/Cargo.toml | 5 ++++ .../out/crates/crate1/src/lib.rs | 1 + .../out/src/lib.rs | 1 + .../stderr.term.svg | 30 +++++++++++++++++++ 15 files changed, 119 insertions(+) create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/.cargo/config.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.lock create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/in/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/mod.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/.cargo/config.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.lock create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/out/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg diff --git a/tests/testsuite/cargo_info/mod.rs b/tests/testsuite/cargo_info/mod.rs index ab7a355fc98..101a0294fdc 100644 --- a/tests/testsuite/cargo_info/mod.rs +++ b/tests/testsuite/cargo_info/mod.rs @@ -17,6 +17,7 @@ mod specify_version_within_ws_and_conflict_with_lockfile; mod specify_version_within_ws_and_match_with_lockfile; mod transitive_dependency_within_ws; mod verbose; +mod with_default_registry_configured; mod with_frozen_outside_ws; mod with_frozen_within_ws; mod with_locked_outside_ws; diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/.cargo/config.toml b/tests/testsuite/cargo_info/with_default_registry_configured/in/.cargo/config.toml new file mode 100644 index 00000000000..ede2fad4cef --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/.cargo/config.toml @@ -0,0 +1,2 @@ +[registry] +default = "crates-io" diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.lock b/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.lock new file mode 100644 index 00000000000..4f842c40bfe --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "crate1" +version = "0.0.0" + +[[package]] +name = "foo" +version = "0.0.0" +dependencies = [ + "crate1", +] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.toml new file mode 100644 index 00000000000..be36b12df49 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = ["crates/*"] + +[package] +name = "foo" +version = "0.0.0" + +[dependencies] +crate1 = { path = "./crates/crate1" } diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/Cargo.toml new file mode 100644 index 00000000000..7a87e72a96e --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "crate1" +version = "0.0.0" + +[dependencies] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/crates/crate1/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/in/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured/in/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/in/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs b/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs new file mode 100644 index 00000000000..e9ccb8cb552 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs @@ -0,0 +1,24 @@ +use crate::prelude::*; +use cargo_test_support::{Project, compare::assert_ui, current_dir, file}; + +use super::init_registry_without_token; + +#[cargo_test] +fn case() { + init_registry_without_token(); + + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + snapbox::cmd::Command::cargo_ui() + .arg("info") + .arg_line("--verbose foo") + .current_dir(cwd) + .assert() + .failure() + .stdout_eq("") + .stderr_eq(file!["stderr.term.svg"]); + + assert_ui().subset_matches(current_dir!().join("out"), &project_root); +} diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/.cargo/config.toml b/tests/testsuite/cargo_info/with_default_registry_configured/out/.cargo/config.toml new file mode 100644 index 00000000000..ede2fad4cef --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/.cargo/config.toml @@ -0,0 +1,2 @@ +[registry] +default = "crates-io" diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.lock b/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.lock new file mode 100644 index 00000000000..4f842c40bfe --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "crate1" +version = "0.0.0" + +[[package]] +name = "foo" +version = "0.0.0" +dependencies = [ + "crate1", +] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.toml new file mode 100644 index 00000000000..be36b12df49 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = ["crates/*"] + +[package] +name = "foo" +version = "0.0.0" + +[dependencies] +crate1 = { path = "./crates/crate1" } diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/Cargo.toml new file mode 100644 index 00000000000..7a87e72a96e --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "crate1" +version = "0.0.0" + +[dependencies] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/crates/crate1/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/out/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured/out/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/out/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg b/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg new file mode 100644 index 00000000000..bdb1ed5b95a --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg @@ -0,0 +1,30 @@ + + + + + + + Updating `dummy-registry` index + + error: could not find `foo` in registry `https://github.com/rust-lang/crates.io-index` + + + + + + From bec86d38c42ac163817db8f70cc6d11bb136097e Mon Sep 17 00:00:00 2001 From: 0xPoe Date: Mon, 8 Dec 2025 22:23:05 +0100 Subject: [PATCH 2/3] test(info): add add the with default registry configured and specified case --- tests/testsuite/cargo_info/mod.rs | 1 + .../in/.cargo/config.toml | 2 ++ .../in/Cargo.lock | 14 ++++++++ .../in/Cargo.toml | 9 +++++ .../in/crates/crate1/Cargo.toml | 5 +++ .../in/crates/crate1/src/lib.rs | 1 + .../in/src/lib.rs | 1 + .../mod.rs | 29 +++++++++++++++ .../out/.cargo/config.toml | 2 ++ .../out/Cargo.lock | 14 ++++++++ .../out/Cargo.toml | 9 +++++ .../out/crates/crate1/Cargo.toml | 5 +++ .../out/crates/crate1/src/lib.rs | 1 + .../out/src/lib.rs | 1 + .../stderr.term.svg | 31 ++++++++++++++++ .../stdout.term.svg | 36 +++++++++++++++++++ 16 files changed, 161 insertions(+) create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/.cargo/config.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.lock create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/mod.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/.cargo/config.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.lock create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/Cargo.toml create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/src/lib.rs create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stderr.term.svg create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stdout.term.svg diff --git a/tests/testsuite/cargo_info/mod.rs b/tests/testsuite/cargo_info/mod.rs index 101a0294fdc..918dcdbcc22 100644 --- a/tests/testsuite/cargo_info/mod.rs +++ b/tests/testsuite/cargo_info/mod.rs @@ -18,6 +18,7 @@ mod specify_version_within_ws_and_match_with_lockfile; mod transitive_dependency_within_ws; mod verbose; mod with_default_registry_configured; +mod with_default_registry_configured_and_specified; mod with_frozen_outside_ws; mod with_frozen_within_ws; mod with_locked_outside_ws; diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/.cargo/config.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/.cargo/config.toml new file mode 100644 index 00000000000..ede2fad4cef --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/.cargo/config.toml @@ -0,0 +1,2 @@ +[registry] +default = "crates-io" diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.lock b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.lock new file mode 100644 index 00000000000..4f842c40bfe --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "crate1" +version = "0.0.0" + +[[package]] +name = "foo" +version = "0.0.0" +dependencies = [ + "crate1", +] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.toml new file mode 100644 index 00000000000..be36b12df49 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = ["crates/*"] + +[package] +name = "foo" +version = "0.0.0" + +[dependencies] +crate1 = { path = "./crates/crate1" } diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/Cargo.toml new file mode 100644 index 00000000000..7a87e72a96e --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "crate1" +version = "0.0.0" + +[dependencies] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/crates/crate1/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/in/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/mod.rs b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/mod.rs new file mode 100644 index 00000000000..8687fab615e --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/mod.rs @@ -0,0 +1,29 @@ +use crate::prelude::*; +use cargo_test_support::{Project, compare::assert_ui, current_dir, file}; + +use super::init_registry_without_token; + +#[cargo_test] +fn case() { + init_registry_without_token(); + + for ver in ["0.1.1+foo", "0.2.0+foo"] { + cargo_test_support::registry::Package::new("foo", ver).publish(); + } + + let project = Project::from_template(current_dir!().join("in")); + let project_root = project.root(); + let cwd = &project_root; + + snapbox::cmd::Command::cargo_ui() + .arg("info") + .arg_line("--verbose foo") + .arg("--registry=dummy-registry") + .current_dir(cwd) + .assert() + .success() + .stdout_eq(file!["stdout.term.svg"]) + .stderr_eq(file!["stderr.term.svg"]); + + assert_ui().subset_matches(current_dir!().join("out"), &project_root); +} diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/.cargo/config.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/.cargo/config.toml new file mode 100644 index 00000000000..ede2fad4cef --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/.cargo/config.toml @@ -0,0 +1,2 @@ +[registry] +default = "crates-io" diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.lock b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.lock new file mode 100644 index 00000000000..4f842c40bfe --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.lock @@ -0,0 +1,14 @@ +# This file is automatically @generated by Cargo. +# It is not intended for manual editing. +version = 4 + +[[package]] +name = "crate1" +version = "0.0.0" + +[[package]] +name = "foo" +version = "0.0.0" +dependencies = [ + "crate1", +] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.toml new file mode 100644 index 00000000000..be36b12df49 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/Cargo.toml @@ -0,0 +1,9 @@ +[workspace] +members = ["crates/*"] + +[package] +name = "foo" +version = "0.0.0" + +[dependencies] +crate1 = { path = "./crates/crate1" } diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/Cargo.toml b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/Cargo.toml new file mode 100644 index 00000000000..7a87e72a96e --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/Cargo.toml @@ -0,0 +1,5 @@ +[package] +name = "crate1" +version = "0.0.0" + +[dependencies] diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/crates/crate1/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/src/lib.rs b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/src/lib.rs new file mode 100644 index 00000000000..8b137891791 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/out/src/lib.rs @@ -0,0 +1 @@ + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stderr.term.svg b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stderr.term.svg new file mode 100644 index 00000000000..49f60dffcdc --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stderr.term.svg @@ -0,0 +1,31 @@ + + + + + + + Updating `dummy-registry` index + + Downloading crates ... + + Downloaded foo v0.2.0+foo (registry `dummy-registry`) + + + + + + diff --git a/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stdout.term.svg b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stdout.term.svg new file mode 100644 index 00000000000..94d63705091 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured_and_specified/stdout.term.svg @@ -0,0 +1,36 @@ + + + + + + + foo + + version: 0.2.0+foo (from registry `dummy-registry`) + + license: unknown + + rust-version: unknown + + + + + + From 0984acc63fb62f59ad69161e026ab69853552642 Mon Sep 17 00:00:00 2001 From: 0xPoe Date: Mon, 8 Dec 2025 21:43:32 +0100 Subject: [PATCH 3/3] fix(info): default to local without explicit reg When no registry is specified in the cargo info command, default to using the local crates.io registry. --- src/bin/cargo/commands/info.rs | 4 +- src/cargo/ops/registry/info/mod.rs | 12 +++++- .../with_default_registry_configured/mod.rs | 6 +-- .../stderr.term.svg | 30 -------------- .../stdout.term.svg | 40 +++++++++++++++++++ 5 files changed, 57 insertions(+), 35 deletions(-) delete mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg create mode 100644 tests/testsuite/cargo_info/with_default_registry_configured/stdout.term.svg diff --git a/src/bin/cargo/commands/info.rs b/src/bin/cargo/commands/info.rs index a06e4ce08ca..3184dd3927f 100644 --- a/src/bin/cargo/commands/info.rs +++ b/src/bin/cargo/commands/info.rs @@ -29,7 +29,9 @@ pub fn exec(gctx: &mut GlobalContext, args: &ArgMatches) -> CliResult { let spec = PackageIdSpec::parse(package) .with_context(|| format!("invalid package ID specification: `{package}`"))?; + // Check if --registry or --index was explicitly provided + let explicit_registry = args._contains("registry") || args._contains("index"); let reg_or_index = args.registry_or_index(gctx)?; - info(&spec, gctx, reg_or_index)?; + info(&spec, gctx, reg_or_index, explicit_registry)?; Ok(()) } diff --git a/src/cargo/ops/registry/info/mod.rs b/src/cargo/ops/registry/info/mod.rs index 385c6376165..f5a84437d6d 100644 --- a/src/cargo/ops/registry/info/mod.rs +++ b/src/cargo/ops/registry/info/mod.rs @@ -20,6 +20,7 @@ pub fn info( spec: &PackageIdSpec, gctx: &GlobalContext, reg_or_index: Option, + explicit_registry: bool, ) -> CargoResult<()> { let source_config = SourceConfigMap::new(gctx)?; let mut registry = PackageRegistry::new_with_source_config(gctx, source_config)?; @@ -39,8 +40,17 @@ pub fn info( .and_then(|path| ws.members().find(|p| p.manifest_path() == path)) }); let (mut package_id, is_member) = find_pkgid_in_ws(nearest_package, ws.as_ref(), spec); + + // If a local package exists and no explicit registry/index was provided, + // prefer the local package over the default registry + let reg_or_index_to_use = if package_id.is_some() && !explicit_registry { + None + } else { + reg_or_index.as_ref() + }; + let (use_package_source_id, source_ids) = - get_source_id_with_package_id(gctx, package_id, reg_or_index.as_ref())?; + get_source_id_with_package_id(gctx, package_id, reg_or_index_to_use)?; // If we don't use the package's source, we need to query the package ID from the specified registry. if !use_package_source_id { package_id = None; diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs b/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs index e9ccb8cb552..4f778f4c817 100644 --- a/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs +++ b/tests/testsuite/cargo_info/with_default_registry_configured/mod.rs @@ -16,9 +16,9 @@ fn case() { .arg_line("--verbose foo") .current_dir(cwd) .assert() - .failure() - .stdout_eq("") - .stderr_eq(file!["stderr.term.svg"]); + .success() + .stdout_eq(file!["stdout.term.svg"]) + .stderr_eq(""); assert_ui().subset_matches(current_dir!().join("out"), &project_root); } diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg b/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg deleted file mode 100644 index bdb1ed5b95a..00000000000 --- a/tests/testsuite/cargo_info/with_default_registry_configured/stderr.term.svg +++ /dev/null @@ -1,30 +0,0 @@ - - - - - - - Updating `dummy-registry` index - - error: could not find `foo` in registry `https://github.com/rust-lang/crates.io-index` - - - - - - diff --git a/tests/testsuite/cargo_info/with_default_registry_configured/stdout.term.svg b/tests/testsuite/cargo_info/with_default_registry_configured/stdout.term.svg new file mode 100644 index 00000000000..4c742d62d85 --- /dev/null +++ b/tests/testsuite/cargo_info/with_default_registry_configured/stdout.term.svg @@ -0,0 +1,40 @@ + + + + + + + foo + + version: 0.0.0 (from ./) + + license: unknown + + rust-version: unknown + + dependencies: + + +crate1 (./crates/crate1) + + + + + +