aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJani Välimaa <wally@mageia.org>2026-03-20 21:50:54 +0200
committerJani Välimaa <wally@mageia.org>2026-03-20 21:50:54 +0200
commit77d182fe03929b920c0cb1f236d542044b1f1d1f (patch)
tree998e23ac6e7a11a48b48c84c6af732ebb24e1cbc
parent1e32b47277d59bdb02f4cd0fcb1a16842a8aa319 (diff)
downloadperl-URPM-master.tar
perl-URPM-master.tar.gz
perl-URPM-master.tar.bz2
perl-URPM-master.tar.xz
perl-URPM-master.zip
Add tests from RPM for tilde and caret sortingHEADmaster
-rw-r--r--Changes2
-rw-r--r--t/parse.t38
2 files changed, 39 insertions, 1 deletions
diff --git a/Changes b/Changes
index e53d21c..118c9e2 100644
--- a/Changes
+++ b/Changes
@@ -1,3 +1,5 @@
+- add tests from RPM for tilde and caret sorting
+
Version 5.226 - 19 Dec 2025
- fix segfault in parse_property() (mga#34833, mga34837)
diff --git a/t/parse.t b/t/parse.t
index 6ebe8fe..cae8707 100644
--- a/t/parse.t
+++ b/t/parse.t
@@ -10,7 +10,7 @@ use URPM::Build;
if (`uname -a` =~ /BSD/i) {
plan skip_all => "*BSD fails those";
} else {
- plan tests => 41;
+ plan tests => 71;
}
@@ -88,6 +88,42 @@ ok(URPM::rpmvercmp("1-1mdk", "1-2mdk") == -1, "Right value win = -1");
ok(URPM::rpmvercmp("1-2mdk", "1-1mdk") == 1, "Left value win = 1");
ok(URPM::rpmvercmp("1:1-1mdk", "2:1-1mdk") == -1, "epoch 1 vs 2 = -1");
+# Basic testcases for tilde sorting
+ok(URPM::rpmvercmp("1.0~rc1", "1.0~rc1") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0~rc1", "1.0") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0", "1.0~rc1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0~rc1", "1.0~rc2") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0~rc2", "1.0~rc1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0~rc1~git123", "1.0~rc1~git123") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0~rc1~git123", "1.0~rc1") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0~rc1", "1.0~rc1~git123") == 1, "Left value win = 1");
+
+# Basic testcases for caret sorting
+ok(URPM::rpmvercmp("1.0^", "1.0^") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0^", "1.0") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0", "1.0^") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0^git1", "1.0^git1") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0^git1", "1.0") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0", "1.0^git1") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0^git1", "1.0^git2") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0^git2", "1.0^git1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0^git1", "1.01") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.01", "1.0^git1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0^20160101", "1.0^20160101") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0^20160101", "1.0.1") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0.1", "1.0^20160101") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0^20160101^git1", "1.0^20160101^git1") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0^20160102", "1.0^20160101^git1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0^20160101^git1", "1.0^20160102") == -1, "Right value win = -1");
+
+# Basic testcases for tilde and caret sorting
+ok(URPM::rpmvercmp("1.0~rc1^git1", "1.0~rc1^git1") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0~rc1^git1", "1.0~rc1") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0~rc1", "1.0~rc1^git1") == -1, "Right value win = -1");
+ok(URPM::rpmvercmp("1.0^git1~pre", "1.0^git1~pre") == 0, "Same value = 0");
+ok(URPM::rpmvercmp("1.0^git1", "1.0^git1~pre") == 1, "Left value win = 1");
+ok(URPM::rpmvercmp("1.0^git1~pre", "1.0^git1") == -1, "Right value win = -1");
+
{
open(my $hdfh, "zcat hdlist.cz 2>/dev/null |") or die $!;
my $pkg = URPM::stream2header($hdfh);