1 # rpmvercmp.at: rpm version comparison tests
3 m4_define([RPMVERCMP],[
4 AT_SETUP([rpmvercmp($1, $2) = $3])
6 AT_CHECK([runroot rpm --eval '%{lua: print(rpm.vercmp("$1", "$2"))}'], [0], [$3
11 AT_BANNER([RPM version comparison])
13 RPMVERCMP(1.0, 1.0, 0)
14 RPMVERCMP(1.0, 2.0, -1)
15 RPMVERCMP(2.0, 1.0, 1)
17 RPMVERCMP(2.0.1, 2.0.1, 0)
18 RPMVERCMP(2.0, 2.0.1, -1)
19 RPMVERCMP(2.0.1, 2.0, 1)
21 RPMVERCMP(2.0.1a, 2.0.1a, 0)
22 RPMVERCMP(2.0.1a, 2.0.1, 1)
23 RPMVERCMP(2.0.1, 2.0.1a, -1)
25 RPMVERCMP(5.5p1, 5.5p1, 0)
26 RPMVERCMP(5.5p1, 5.5p2, -1)
27 RPMVERCMP(5.5p2, 5.5p1, 1)
29 RPMVERCMP(5.5p10, 5.5p10, 0)
30 RPMVERCMP(5.5p1, 5.5p10, -1)
31 RPMVERCMP(5.5p10, 5.5p1, 1)
33 RPMVERCMP(10xyz, 10.1xyz, -1)
34 RPMVERCMP(10.1xyz, 10xyz, 1)
36 RPMVERCMP(xyz10, xyz10, 0)
37 RPMVERCMP(xyz10, xyz10.1, -1)
38 RPMVERCMP(xyz10.1, xyz10, 1)
40 RPMVERCMP(xyz.4, xyz.4, 0)
41 RPMVERCMP(xyz.4, 8, -1)
42 RPMVERCMP(8, xyz.4, 1)
43 RPMVERCMP(xyz.4, 2, -1)
44 RPMVERCMP(2, xyz.4, 1)
46 RPMVERCMP(5.5p2, 5.6p1, -1)
47 RPMVERCMP(5.6p1, 5.5p2, 1)
49 RPMVERCMP(5.6p1, 6.5p1, -1)
50 RPMVERCMP(6.5p1, 5.6p1, 1)
52 RPMVERCMP(6.0.rc1, 6.0, 1)
53 RPMVERCMP(6.0, 6.0.rc1, -1)
55 RPMVERCMP(10b2, 10a1, 1)
56 RPMVERCMP(10a2, 10b2, -1)
58 RPMVERCMP(1.0aa, 1.0aa, 0)
59 RPMVERCMP(1.0a, 1.0aa, -1)
60 RPMVERCMP(1.0aa, 1.0a, 1)
62 RPMVERCMP(10.0001, 10.0001, 0)
63 RPMVERCMP(10.0001, 10.1, 0)
64 RPMVERCMP(10.1, 10.0001, 0)
65 RPMVERCMP(10.0001, 10.0039, -1)
66 RPMVERCMP(10.0039, 10.0001, 1)
68 RPMVERCMP(4.999.9, 5.0, -1)
69 RPMVERCMP(5.0, 4.999.9, 1)
71 RPMVERCMP(20101121, 20101121, 0)
72 RPMVERCMP(20101121, 20101122, -1)
73 RPMVERCMP(20101122, 20101121, 1)
75 RPMVERCMP(2_0, 2_0, 0)
76 RPMVERCMP(2.0, 2_0, 0)
77 RPMVERCMP(2_0, 2.0, 0)
93 dnl Basic testcases for tilde sorting
94 RPMVERCMP(1.0~rc1, 1.0~rc1, 0)
95 RPMVERCMP(1.0~rc1, 1.0, -1)
96 RPMVERCMP(1.0, 1.0~rc1, 1)
97 RPMVERCMP(1.0~rc1, 1.0~rc2, -1)
98 RPMVERCMP(1.0~rc2, 1.0~rc1, 1)
99 RPMVERCMP(1.0~rc1~git123, 1.0~rc1~git123, 0)
100 RPMVERCMP(1.0~rc1~git123, 1.0~rc1, -1)
101 RPMVERCMP(1.0~rc1, 1.0~rc1~git123, 1)
103 dnl These are included here to document current, arguably buggy behaviors
104 dnl for reference purposes and for easy checking against unintended
105 dnl behavior changes.
107 dnl AT_BANNER([RPM version comparison oddities])
108 dnl RhBug:811992 case
109 dnl RPMVERCMP(1b.fc17, 1b.fc17, 0)
110 dnl RPMVERCMP(1b.fc17, 1.fc17, -1)
111 dnl RPMVERCMP(1.fc17, 1b.fc17, 1)
112 dnl RPMVERCMP(1g.fc17, 1g.fc17, 0)
113 dnl RPMVERCMP(1g.fc17, 1.fc17, 1)
114 dnl RPMVERCMP(1.fc17, 1g.fc17, -1)
116 dnl Non-ascii characters are considered equal so these are all the same, eh...
117 dnl RPMVERCMP(1.1.α, 1.1.α, 0)
118 dnl RPMVERCMP(1.1.α, 1.1.β, 0)
119 dnl RPMVERCMP(1.1.β, 1.1.α, 0)
120 dnl RPMVERCMP(1.1.αα, 1.1.α, 0)
121 dnl RPMVERCMP(1.1.α, 1.1.ββ, 0)
122 dnl RPMVERCMP(1.1.ββ, 1.1.αα, 0)