# rpmvercmp.at: rpm version comparison tests m4_define([RPMVERCMP],[ RPMTEST_CHECK([ runroot rpm --eval '%{lua: print(rpm.vercmp("$1", "$2"))}'], [0], [$3 ], []) ]) AT_SETUP([rpm version comparison]) AT_KEYWORDS([vercmp]) RPMVERCMP(1.0, 1.0, 0) RPMVERCMP(1.0, 2.0, -1) RPMVERCMP(2.0, 1.0, 1) RPMVERCMP(2.0.1, 2.0.1, 0) RPMVERCMP(2.0, 2.0.1, -1) RPMVERCMP(2.0.1, 2.0, 1) RPMVERCMP(2.0.1a, 2.0.1a, 0) RPMVERCMP(2.0.1a, 2.0.1, 1) RPMVERCMP(2.0.1, 2.0.1a, -1) RPMVERCMP(5.5p1, 5.5p1, 0) RPMVERCMP(5.5p1, 5.5p2, -1) RPMVERCMP(5.5p2, 5.5p1, 1) RPMVERCMP(5.5p10, 5.5p10, 0) RPMVERCMP(5.5p1, 5.5p10, -1) RPMVERCMP(5.5p10, 5.5p1, 1) RPMVERCMP(10xyz, 10.1xyz, -1) RPMVERCMP(10.1xyz, 10xyz, 1) RPMVERCMP(xyz10, xyz10, 0) RPMVERCMP(xyz10, xyz10.1, -1) RPMVERCMP(xyz10.1, xyz10, 1) RPMVERCMP(xyz.4, xyz.4, 0) RPMVERCMP(xyz.4, 8, -1) RPMVERCMP(8, xyz.4, 1) RPMVERCMP(xyz.4, 2, -1) RPMVERCMP(2, xyz.4, 1) RPMVERCMP(5.5p2, 5.6p1, -1) RPMVERCMP(5.6p1, 5.5p2, 1) RPMVERCMP(5.6p1, 6.5p1, -1) RPMVERCMP(6.5p1, 5.6p1, 1) RPMVERCMP(6.0.rc1, 6.0, 1) RPMVERCMP(6.0, 6.0.rc1, -1) RPMVERCMP(10b2, 10a1, 1) RPMVERCMP(10a2, 10b2, -1) RPMVERCMP(1.0aa, 1.0aa, 0) RPMVERCMP(1.0a, 1.0aa, -1) RPMVERCMP(1.0aa, 1.0a, 1) RPMVERCMP(10.0001, 10.0001, 0) RPMVERCMP(10.0001, 10.1, 0) RPMVERCMP(10.1, 10.0001, 0) RPMVERCMP(10.0001, 10.0039, -1) RPMVERCMP(10.0039, 10.0001, 1) RPMVERCMP(4.999.9, 5.0, -1) RPMVERCMP(5.0, 4.999.9, 1) RPMVERCMP(20101121, 20101121, 0) RPMVERCMP(20101121, 20101122, -1) RPMVERCMP(20101122, 20101121, 1) RPMVERCMP(2_0, 2_0, 0) RPMVERCMP(2.0, 2_0, 0) RPMVERCMP(2_0, 2.0, 0) dnl RhBug:178798 case RPMVERCMP(a, a, 0) RPMVERCMP(a+, a+, 0) RPMVERCMP(a+, a_, 0) RPMVERCMP(a_, a+, 0) RPMVERCMP(+a, +a, 0) RPMVERCMP(+a, _a, 0) RPMVERCMP(_a, +a, 0) RPMVERCMP(+_, +_, 0) RPMVERCMP(_+, +_, 0) RPMVERCMP(_+, _+, 0) RPMVERCMP(+, _, 0) RPMVERCMP(_, +, 0) dnl Basic testcases for tilde sorting RPMVERCMP(1.0~rc1, 1.0~rc1, 0) RPMVERCMP(1.0~rc1, 1.0, -1) RPMVERCMP(1.0, 1.0~rc1, 1) RPMVERCMP(1.0~rc1, 1.0~rc2, -1) RPMVERCMP(1.0~rc2, 1.0~rc1, 1) RPMVERCMP(1.0~rc1~git123, 1.0~rc1~git123, 0) RPMVERCMP(1.0~rc1~git123, 1.0~rc1, -1) RPMVERCMP(1.0~rc1, 1.0~rc1~git123, 1) dnl Basic testcases for caret sorting RPMVERCMP(1.0^, 1.0^, 0) RPMVERCMP(1.0^, 1.0, 1) RPMVERCMP(1.0, 1.0^, -1) RPMVERCMP(1.0^git1, 1.0^git1, 0) RPMVERCMP(1.0^git1, 1.0, 1) RPMVERCMP(1.0, 1.0^git1, -1) RPMVERCMP(1.0^git1, 1.0^git2, -1) RPMVERCMP(1.0^git2, 1.0^git1, 1) RPMVERCMP(1.0^git1, 1.01, -1) RPMVERCMP(1.01, 1.0^git1, 1) RPMVERCMP(1.0^20160101, 1.0^20160101, 0) RPMVERCMP(1.0^20160101, 1.0.1, -1) RPMVERCMP(1.0.1, 1.0^20160101, 1) RPMVERCMP(1.0^20160101^git1, 1.0^20160101^git1, 0) RPMVERCMP(1.0^20160102, 1.0^20160101^git1, 1) RPMVERCMP(1.0^20160101^git1, 1.0^20160102, -1) dnl Basic testcases for tilde and caret sorting RPMVERCMP(1.0~rc1^git1, 1.0~rc1^git1, 0) RPMVERCMP(1.0~rc1^git1, 1.0~rc1, 1) RPMVERCMP(1.0~rc1, 1.0~rc1^git1, -1) RPMVERCMP(1.0^git1~pre, 1.0^git1~pre, 0) RPMVERCMP(1.0^git1, 1.0^git1~pre, 1) RPMVERCMP(1.0^git1~pre, 1.0^git1, -1) dnl These are included here to document current, arguably buggy behaviors dnl for reference purposes and for easy checking against unintended dnl behavior changes. dnl dnl AT_BANNER([RPM version comparison oddities]) dnl RhBug:811992 case dnl RPMVERCMP(1b.fc17, 1b.fc17, 0) dnl RPMVERCMP(1b.fc17, 1.fc17, -1) dnl RPMVERCMP(1.fc17, 1b.fc17, 1) dnl RPMVERCMP(1g.fc17, 1g.fc17, 0) dnl RPMVERCMP(1g.fc17, 1.fc17, 1) dnl RPMVERCMP(1.fc17, 1g.fc17, -1) dnl Non-ascii characters are considered equal so these are all the same, eh... dnl RPMVERCMP(1.1.α, 1.1.α, 0) dnl RPMVERCMP(1.1.α, 1.1.β, 0) dnl RPMVERCMP(1.1.β, 1.1.α, 0) dnl RPMVERCMP(1.1.αα, 1.1.α, 0) dnl RPMVERCMP(1.1.α, 1.1.ββ, 0) dnl RPMVERCMP(1.1.ββ, 1.1.αα, 0) RPMTEST_CLEANUP