mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
parent
ffe59de494
commit
ad23d73fae
@ -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) {
|
||||
|
@ -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(),
|
||||
|
@ -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();
|
||||
|
Loading…
x
Reference in New Issue
Block a user