Skip to content

Commit 21dfe88

Browse files
committed
fix(update): Call out pre-releases when relevant
1 parent c89ac1f commit 21dfe88

File tree

2 files changed

+16
-2
lines changed

2 files changed

+16
-2
lines changed

src/cargo/ops/cargo_generate_lockfile.rs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -186,10 +186,18 @@ pub fn update_lockfile(ws: &Workspace<'_>, opts: &UpdateOptions<'_>) -> CargoRes
186186
}
187187
};
188188
let warn = style::WARN;
189+
let present_version = present.version();
189190
possibilities
190191
.iter()
191192
.map(|s| s.as_summary())
192-
.filter(|s| s.version().pre.is_empty())
193+
.filter(|s| {
194+
let s_version = s.version();
195+
s_version.pre.is_empty()
196+
// Only match pre-release if major.minor.patch are the same
197+
|| (s_version.major == present_version.major
198+
&& s_version.minor == present_version.minor
199+
&& s_version.patch == present_version.patch)
200+
})
193201
.map(|s| s.version().clone())
194202
.max()
195203
.filter(|v| present.version() < v)

tests/testsuite/update.rs

Lines changed: 7 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1480,6 +1480,8 @@ fn precise_yanked_multiple_presence() {
14801480

14811481
#[cargo_test]
14821482
fn report_behind() {
1483+
Package::new("pre", "1.0.0-alpha.0").publish();
1484+
Package::new("pre", "1.0.0-alpha.1").publish();
14831485
Package::new("breaking", "0.1.0").publish();
14841486
Package::new("breaking", "0.2.0").publish();
14851487
Package::new("breaking", "0.2.1-alpha.0").publish();
@@ -1492,6 +1494,7 @@ fn report_behind() {
14921494
14931495
[dependencies]
14941496
breaking = "0.1"
1497+
pre = "=1.0.0-alpha.0"
14951498
"#,
14961499
)
14971500
.file("src/lib.rs", "")
@@ -1505,6 +1508,7 @@ fn report_behind() {
15051508
"\
15061509
[UPDATING] `dummy-registry` index
15071510
[UPDATING] breaking v0.1.0 -> v0.1.1 (latest: v0.2.0)
1511+
[NOTE] Pass `--verbose` to see 1 unchanged dependencies behind latest
15081512
[WARNING] not updating lockfile due to dry run
15091513
",
15101514
)
@@ -1515,6 +1519,7 @@ fn report_behind() {
15151519
"\
15161520
[UPDATING] `dummy-registry` index
15171521
[UPDATING] breaking v0.1.0 -> v0.1.1 (latest: v0.2.0)
1522+
[UNCHANGED] pre v1.0.0-alpha.0 (latest: v1.0.0-alpha.1)
15181523
[WARNING] not updating lockfile due to dry run
15191524
",
15201525
)
@@ -1526,7 +1531,7 @@ fn report_behind() {
15261531
.with_stderr(
15271532
"\
15281533
[UPDATING] `dummy-registry` index
1529-
[NOTE] Pass `--verbose` to see 1 unchanged dependencies behind latest
1534+
[NOTE] Pass `--verbose` to see 2 unchanged dependencies behind latest
15301535
[WARNING] not updating lockfile due to dry run
15311536
",
15321537
)
@@ -1537,6 +1542,7 @@ fn report_behind() {
15371542
"\
15381543
[UPDATING] `dummy-registry` index
15391544
[UNCHANGED] breaking v0.1.1 (latest: v0.2.0)
1545+
[UNCHANGED] pre v1.0.0-alpha.0 (latest: v1.0.0-alpha.1)
15401546
[WARNING] not updating lockfile due to dry run
15411547
",
15421548
)

0 commit comments

Comments
 (0)