Auto merge of #12923 - Eh2406:bug_12920, r=epage

Bug 12920

Fix for #12920, a regression introduced in #12749.

This also as a test case for an existing Terrible error message.
This commit is contained in:
bors 2023-11-06 20:58:55 +00:00
commit f095603db0
2 changed files with 54 additions and 6 deletions

View file

@ -76,12 +76,6 @@ impl OptVersionReq {
}
pub fn update_precise(&mut self, version: &Version) {
assert!(
self.matches(version),
"cannot update_precise {} to {}",
self,
version
);
use OptVersionReq::*;
let version = version.clone();
*self = match self {

View file

@ -391,6 +391,60 @@ fn update_precise() {
.run();
}
#[cargo_test]
fn update_precise_mismatched() {
Package::new("serde", "1.2.0").publish();
Package::new("serde", "1.2.1").publish();
Package::new("serde", "1.6.0").publish();
let p = project()
.file(
"Cargo.toml",
r#"
[package]
name = "bar"
version = "0.0.1"
authors = []
[dependencies]
serde = "~1.2"
"#,
)
.file("src/lib.rs", "")
.build();
p.cargo("check").run();
// `1.6.0` does not match `"~1.2"`
p.cargo("update serde:1.2 --precise 1.6.0")
.with_stderr(
"\
[UPDATING] `[..]` index
[ERROR] failed to select a version for the requirement `serde = \"~1.2\"`
candidate versions found which didn't match: 1.6.0
location searched: `[..]` index (which is replacing registry `crates-io`)
required by package `bar v0.0.1 ([..]/foo)`
perhaps a crate was updated and forgotten to be re-vendored?
",
)
.with_status(101)
.run();
// `1.9.0` does not exist
p.cargo("update serde:1.2 --precise 1.9.0")
// This terrible error message has been the same for a long time. A fix is more than welcome!
.with_stderr(
"\
[UPDATING] `[..]` index
[ERROR] no matching package named `serde` found
location searched: registry `crates-io`
required by package `bar v0.0.1 ([..]/foo)`
",
)
.with_status(101)
.run();
}
#[cargo_test]
fn update_precise_build_metadata() {
Package::new("serde", "0.0.1+first").publish();