mirror of
https://github.com/rust-lang/cargo.git
synced 2025-09-28 11:20:36 +00:00
test: add more test for pre-release matches semantic
This commit is contained in:
parent
8f40fc59fb
commit
e62c271b3f
@ -237,6 +237,14 @@ mod matches_prerelease {
|
|||||||
(">=1.2.3-0, <1.2.3", "1.2.3-0", false), // upper bound semantic
|
(">=1.2.3-0, <1.2.3", "1.2.3-0", false), // upper bound semantic
|
||||||
(">=1.2.3-0, <1.2.3", "1.2.3-1", false), // upper bound semantic
|
(">=1.2.3-0, <1.2.3", "1.2.3-1", false), // upper bound semantic
|
||||||
(">=1.2.3-0, <1.2.3", "1.2.4-0", false),
|
(">=1.2.3-0, <1.2.3", "1.2.4-0", false),
|
||||||
|
//
|
||||||
|
("1.2.3", "2.0.0-0", false), // upper bound semantics
|
||||||
|
("=1.2.3-0", "1.2.3", false),
|
||||||
|
("=1.2.3-0", "1.2.3-0", false), // bug, must be true
|
||||||
|
("=1.2.3-0", "1.2.4", false),
|
||||||
|
(">=1.2.3-2, <1.2.3-4", "1.2.3-0", false),
|
||||||
|
(">=1.2.3-2, <1.2.3-4", "1.2.3-3", false), // bug, must be true
|
||||||
|
(">=1.2.3-2, <1.2.3-4", "1.2.3-5", false), // upper bound semantics
|
||||||
];
|
];
|
||||||
for (req, ver, expected) in cases {
|
for (req, ver, expected) in cases {
|
||||||
let version_req = req.parse().unwrap();
|
let version_req = req.parse().unwrap();
|
||||||
|
@ -76,13 +76,10 @@ fn update_pre_release() {
|
|||||||
}
|
}
|
||||||
|
|
||||||
#[cargo_test]
|
#[cargo_test]
|
||||||
fn update_pre_release_differ() {
|
fn pre_release_should_unmatched() {
|
||||||
cargo_test_support::registry::init();
|
cargo_test_support::registry::init();
|
||||||
|
|
||||||
for version in ["0.1.2", "0.1.2-pre.0", "0.1.2-pre.1"] {
|
cargo_test_support::registry::Package::new("my-dependency", "0.1.2").publish();
|
||||||
cargo_test_support::registry::Package::new("my-dependency", version).publish();
|
|
||||||
}
|
|
||||||
|
|
||||||
let p = project()
|
let p = project()
|
||||||
.file(
|
.file(
|
||||||
"Cargo.toml",
|
"Cargo.toml",
|
||||||
@ -95,7 +92,11 @@ fn update_pre_release_differ() {
|
|||||||
)
|
)
|
||||||
.file("src/lib.rs", "")
|
.file("src/lib.rs", "")
|
||||||
.build();
|
.build();
|
||||||
|
p.cargo("generate-lockfile").run();
|
||||||
|
let lockfile = p.read_lockfile();
|
||||||
|
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.2\""));
|
||||||
|
|
||||||
|
cargo_test_support::registry::Package::new("my-dependency", "0.1.2-pre.0").publish();
|
||||||
p.cargo("update -p my-dependency --precise 0.1.2-pre.0 -Zunstable-options")
|
p.cargo("update -p my-dependency --precise 0.1.2-pre.0 -Zunstable-options")
|
||||||
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
||||||
.with_stderr_data(str![[r#"
|
.with_stderr_data(str![[r#"
|
||||||
@ -105,15 +106,75 @@ fn update_pre_release_differ() {
|
|||||||
"#]])
|
"#]])
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
p.cargo("update -p my-dependency --precise 0.1.2-pre.1 -Zunstable-options")
|
cargo_test_support::registry::Package::new("my-dependency", "0.2.0-0").publish();
|
||||||
|
p.cargo("update -p my-dependency --precise 0.2.0-0 -Zunstable-options")
|
||||||
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
||||||
|
.with_status(101)
|
||||||
.with_stderr_data(str![[r#"
|
.with_stderr_data(str![[r#"
|
||||||
[UPDATING] `dummy-registry` index
|
[UPDATING] `dummy-registry` index
|
||||||
[UPDATING] my-dependency v0.1.2-pre.0 -> v0.1.2-pre.1
|
[ERROR] failed to select a version for the requirement `my-dependency = "^0.1.2"`
|
||||||
|
candidate versions found which didn't match: 0.2.0-0
|
||||||
|
location searched: `dummy-registry` index (which is replacing registry `crates-io`)
|
||||||
|
required by package `package v0.0.0 ([ROOT]/foo)`
|
||||||
|
if you are looking for the prerelease package it needs to be specified explicitly
|
||||||
|
my-dependency = { version = "0.2.0-0" }
|
||||||
|
perhaps a crate was updated and forgotten to be re-vendored?
|
||||||
|
|
||||||
"#]])
|
"#]])
|
||||||
.run();
|
.run();
|
||||||
|
|
||||||
let lockfile = p.read_lockfile();
|
let lockfile = p.read_lockfile();
|
||||||
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.2-pre.1\""));
|
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.2-pre.0\""));
|
||||||
|
}
|
||||||
|
|
||||||
|
#[cargo_test]
|
||||||
|
fn pre_release_should_matched() {
|
||||||
|
cargo_test_support::registry::init();
|
||||||
|
|
||||||
|
cargo_test_support::registry::Package::new("my-dependency", "0.1.2").publish();
|
||||||
|
let p = project()
|
||||||
|
.file(
|
||||||
|
"Cargo.toml",
|
||||||
|
r#"
|
||||||
|
[package]
|
||||||
|
name = "package"
|
||||||
|
[dependencies]
|
||||||
|
my-dependency = "0.1.2"
|
||||||
|
"#,
|
||||||
|
)
|
||||||
|
.file("src/lib.rs", "")
|
||||||
|
.build();
|
||||||
|
p.cargo("generate-lockfile").run();
|
||||||
|
let lockfile = p.read_lockfile();
|
||||||
|
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.2\""));
|
||||||
|
|
||||||
|
// Test upgrade
|
||||||
|
// 0.1.3 is in the range, so it match
|
||||||
|
cargo_test_support::registry::Package::new("my-dependency", "0.1.3").publish();
|
||||||
|
p.cargo("update -p my-dependency --precise 0.1.3 -Zunstable-options")
|
||||||
|
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
||||||
|
.with_stderr_data(str![[r#"
|
||||||
|
[UPDATING] `dummy-registry` index
|
||||||
|
[UPDATING] my-dependency v0.1.2 -> v0.1.3
|
||||||
|
|
||||||
|
"#]])
|
||||||
|
.run();
|
||||||
|
|
||||||
|
let lockfile = p.read_lockfile();
|
||||||
|
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.3\""));
|
||||||
|
|
||||||
|
// Test downgrade
|
||||||
|
// v0.1.3-pre.1 is in the range, so it match
|
||||||
|
cargo_test_support::registry::Package::new("my-dependency", "0.1.3-pre.1").publish();
|
||||||
|
p.cargo("update -p my-dependency --precise 0.1.3-pre.1 -Zunstable-options")
|
||||||
|
.masquerade_as_nightly_cargo(&["precise-pre-release"])
|
||||||
|
.with_stderr_data(str![[r#"
|
||||||
|
[UPDATING] `dummy-registry` index
|
||||||
|
[DOWNGRADING] my-dependency v0.1.3 -> v0.1.3-pre.1
|
||||||
|
|
||||||
|
"#]])
|
||||||
|
.run();
|
||||||
|
|
||||||
|
let lockfile = p.read_lockfile();
|
||||||
|
assert!(lockfile.contains("\nname = \"my-dependency\"\nversion = \"0.1.3-pre.1\""));
|
||||||
}
|
}
|
||||||
|
Loading…
x
Reference in New Issue
Block a user