Skip to content

Commit 326c026

Browse files
authored
fix: pre-release range comparison (#45)
1 parent cd73ee4 commit 326c026

2 files changed

Lines changed: 22 additions & 1 deletion

File tree

src/lib.rs

Lines changed: 11 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -206,7 +206,10 @@ impl std::cmp::Ord for Version {
206206
// prefer numbers
207207
if let Ok(a_num) = a.parse::<u64>() {
208208
if let Ok(b_num) = b.parse::<u64>() {
209-
return a_num.cmp(&b_num);
209+
let cmp_result = a_num.cmp(&b_num);
210+
if cmp_result != Ordering::Equal {
211+
return cmp_result;
212+
}
210213
} else {
211214
return Ordering::Less;
212215
}
@@ -433,6 +436,13 @@ mod test {
433436
assert_eq!(cmp("0.0.0", "0.0.0-pre"), Ordering::Greater);
434437
assert_eq!(cmp("0.0.0-a", "0.0.0-b"), Ordering::Less);
435438
assert_eq!(cmp("0.0.0-a", "0.0.0-a"), Ordering::Equal);
439+
assert_eq!(cmp("2.0.0-rc.3.0.5", "2.0.0-rc.3.0.6"), Ordering::Less);
440+
assert_eq!(cmp("2.0.0-rc.3.0.5", "2.0.0-rc.3.1.0"), Ordering::Less);
441+
assert_eq!(cmp("2.0.0-rc.3.1.0", "2.0.0-rc.3.0.5"), Ordering::Greater);
442+
assert_eq!(cmp("2.0.0-rc.3.1.0", "2.0.0-rc.3.1.0"), Ordering::Equal);
443+
assert_eq!(cmp("2.0.0-rc.3.0.5", "2.0.0"), Ordering::Less);
444+
assert_eq!(cmp("2.0.0-rc.3.0.5", "2.1.0"), Ordering::Less);
445+
assert_eq!(cmp("2.0.0", "2.0.0-rc.3.0.5"), Ordering::Greater);
436446
}
437447

438448
#[test]

src/range.rs

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -992,6 +992,17 @@ mod test {
992992
run_test(">1.0.0-beta.1 <=1.1.0", ">1.0.0-beta.1 <=1.1.0");
993993
run_test(">1.0.0 <1.1.0", ">1.0.0 <1.1.0");
994994

995+
run_test(
996+
">=2.0.0-rc.3.0.5 <2.0.0-rc.3.1.0",
997+
">=2.0.0-rc.3.0.5 <2.0.0-rc.3.1.0",
998+
);
999+
run_test(
1000+
">2.0.0-rc.3.0.5 <2.0.0-rc.3.1.0",
1001+
">2.0.0-rc.3.0.5 <2.0.0-rc.3.1.0",
1002+
);
1003+
1004+
run_test(">=2.0.0-rc.3.0.5 <2.1.0", "~2.0.0-rc.3.0.5");
1005+
9951006
// Pre-release with tilde normalization
9961007
run_test("^0.2.3-beta.1", "~0.2.3-beta.1"); // normalizes
9971008

0 commit comments

Comments
 (0)