mirror of
https://github.com/rust-lang/cargo
synced 2024-10-13 19:22:33 +00:00
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:
commit
f095603db0
|
@ -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 {
|
||||
|
|
|
@ -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();
|
||||
|
|
Loading…
Reference in a new issue