From 9b2402b047cb1902b05195280d7b13a0ff22974c Mon Sep 17 00:00:00 2001 From: Ed Page Date: Thu, 21 Nov 2024 09:48:26 -0600 Subject: [PATCH] fix(publish): Allow dry-run of a non-bumped workspace Fixes #14789 --- src/cargo/sources/overlay.rs | 16 ++++------------ tests/testsuite/package.rs | 17 +++++++++-------- tests/testsuite/registry_overlay.rs | 15 ++++++--------- 3 files changed, 19 insertions(+), 29 deletions(-) diff --git a/src/cargo/sources/overlay.rs b/src/cargo/sources/overlay.rs index fcdca88df88f..8031d9151eac 100644 --- a/src/cargo/sources/overlay.rs +++ b/src/cargo/sources/overlay.rs @@ -63,24 +63,16 @@ impl<'gctx> Source for DependencyConfusionThreatOverlaySource<'gctx> { }; ready!(self.local.query(&local_dep, kind, &mut local_callback))?; - let mut package_collision = None; let mut remote_callback = |index: IndexSummary| { if local_packages.contains(index.as_summary()) { - package_collision = Some(index.as_summary().clone()); + tracing::debug!(?local_source, ?remote_source, ?index, "package collision"); + } else { + f(index) } - f(index) }; ready!(self.remote.query(dep, kind, &mut remote_callback))?; - if let Some(collision) = package_collision { - std::task::Poll::Ready(Err(anyhow::anyhow!( - "found a package in the remote registry and the local overlay: {}@{}", - collision.name(), - collision.version() - ))) - } else { - std::task::Poll::Ready(Ok(())) - } + std::task::Poll::Ready(Ok(())) } fn invalidate_cache(&mut self) { diff --git a/tests/testsuite/package.rs b/tests/testsuite/package.rs index b834493aeaf9..1e743c88c607 100644 --- a/tests/testsuite/package.rs +++ b/tests/testsuite/package.rs @@ -6056,20 +6056,21 @@ fn workspace_with_local_dep_already_published_nightly() { p.cargo("package -Zpackage-workspace") .masquerade_as_nightly_cargo(&["package-workspace"]) .replace_crates_io(reg.index_url()) - .with_status(101) .with_stderr_data( str![[r#" [PACKAGING] dep v0.1.0 ([ROOT]/foo/dep) [PACKAGING] main v0.0.1 ([ROOT]/foo/main) [UPDATING] crates.io index -[ERROR] failed to prepare local package for uploading - -Caused by: - failed to get `dep` as a dependency of package `main v0.0.1 ([ROOT]/foo/main)` - -Caused by: - found a package in the remote registry and the local overlay: dep@0.1.0 [PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed) +[PACKAGED] 4 files, [FILE_SIZE]B ([FILE_SIZE]B compressed) +[VERIFYING] dep v0.1.0 ([ROOT]/foo/dep) +[COMPILING] dep v0.1.0 ([ROOT]/foo/target/package/dep-0.1.0) +[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s +[VERIFYING] main v0.0.1 ([ROOT]/foo/main) +[UNPACKING] dep v0.1.0 (registry `[ROOT]/foo/target/package/tmp-registry`) +[COMPILING] dep v0.1.0 +[COMPILING] main v0.0.1 ([ROOT]/foo/target/package/main-0.0.1) +[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]] .unordered(), diff --git a/tests/testsuite/registry_overlay.rs b/tests/testsuite/registry_overlay.rs index ae55685db2d9..923296b4227c 100644 --- a/tests/testsuite/registry_overlay.rs +++ b/tests/testsuite/registry_overlay.rs @@ -133,7 +133,7 @@ fn overlay_version_wins() { } #[cargo_test] -fn version_collision() { +fn version_precedence() { let (reg, alt_path) = setup(); let p = project() .file( @@ -161,16 +161,13 @@ fn version_collision() { p.cargo("check") .overlay_registry(®.index_url(), &alt_path) - .with_status(101) .with_stderr_data(str![[r#" [UPDATING] `sparse+http://127.0.0.1:[..]/index/` index -[ERROR] failed to get `baz` as a dependency of package `foo v0.0.1 ([ROOT]/foo)` - -Caused by: - failed to query replaced source registry `crates-io` - -Caused by: - found a package in the remote registry and the local overlay: baz@0.1.1 +[LOCKING] 1 package to latest compatible version +[UNPACKING] baz v0.1.1 (registry `[ROOT]/alternative-registry`) +[CHECKING] baz v0.1.1 +[CHECKING] foo v0.0.1 ([ROOT]/foo) +[FINISHED] `dev` profile [unoptimized + debuginfo] target(s) in [ELAPSED]s "#]]) .run();