rpm/tests/rpmdepmatch.at

242 lines
9.5 KiB
Plaintext

AT_BANNER([RPM dependency matching])
RPMPY_CHECK([provide - require pairs],[
# ((provides), (requires), match) expected values
tests = [
# Different names never match
(('b',), ('a',), 0),
(('b',), ('a', '=', '1.2'), 0),
(('b',), ('a', '>=', '1.2'), 0),
(('b',), ('a', '<=', '1.2'), 0),
(('b',), ('a', '<', '1.2'), 0),
(('b',), ('a', '>', '1.2'), 0),
(('b',), ('a', '<>', '1.2'), 0),
# Unversioned provide matches all versions
(('a',), ('a',), 1),
(('a',), ('a', '=', '1.2'), 1),
(('a',), ('a', '>=', '1.2'), 1),
(('a',), ('a', '<=', '1.2'), 1),
(('a',), ('a', '<', '1.2'), 1),
(('a',), ('a', '>', '1.2'), 1),
(('a',), ('a', '<>', '1.2'), 1),
# Unversioned require matches all versions
(('a', '=', '1.2'), ('a',), 1),
(('a', '<', '1.2'), ('a',), 1),
(('a', '>', '1.2'), ('a',), 1),
(('a', '<=', '1.2'), ('a',), 1),
(('a', '>=', '1.2'), ('a',), 1),
(('a', '<>', '1.2'), ('a',), 1),
# Simple, obvious version comparisons
(('a', '=', '1.2'), ('a', '=', '1.2'), 1),
(('a', '=', '1.2'), ('a', '>=', '1.2'), 1),
(('a', '=', '1.2'), ('a', '<=', '1.2'), 1),
(('a', '=', '1.2'), ('a', '<', '1.2'), 0),
(('a', '=', '1.2'), ('a', '>', '1.2'), 0),
(('a', '=', '1.2'), ('a', '<>', '1.2'), 0),
(('a', '=', '1.2'), ('a', '=', '1.3'), 0),
(('a', '=', '1.2'), ('a', '>=', '1.3'), 0),
(('a', '=', '1.2'), ('a', '<=', '1.3'), 1),
(('a', '=', '1.2'), ('a', '<', '1.3'), 1),
(('a', '=', '1.2'), ('a', '>', '1.3'), 0),
(('a', '=', '1.2'), ('a', '<>', '1.3'), 1),
# Simple, obvious version-release comparisons
(('a', '=', '1.2-1'), ('a', '=', '1.2-1'), 1),
(('a', '=', '1.2-1'), ('a', '>=', '1.2-1'), 1),
(('a', '=', '1.2-1'), ('a', '<=', '1.2-1'), 1),
(('a', '=', '1.2-1'), ('a', '<', '1.2-1'), 0),
(('a', '=', '1.2-1'), ('a', '>', '1.2-1'), 0),
(('a', '=', '1.2-1'), ('a', '<>', '1.2-1'), 0),
(('a', '=', '1.2-1'), ('a', '=', '1.2-2'), 0),
(('a', '=', '1.2-1'), ('a', '>=', '1.2-2'), 0),
(('a', '=', '1.2-1'), ('a', '<=', '1.2-2'), 1),
(('a', '=', '1.2-1'), ('a', '<', '1.2-2'), 1),
(('a', '=', '1.2-1'), ('a', '>', '1.2-2'), 0),
(('a', '=', '1.2-1'), ('a', '<>', '1.2-2'), 1),
(('a', '=', '1.3-1'), ('a', '=', '1.2-2'), 0),
(('a', '=', '1.3-1'), ('a', '>=', '1.2-2'), 1),
(('a', '=', '1.3-1'), ('a', '<=', '1.2-2'), 0),
(('a', '=', '1.3-1'), ('a', '<', '1.2-2'), 0),
(('a', '=', '1.3-1'), ('a', '>', '1.2-2'), 1),
(('a', '=', '1.3-1'), ('a', '<>', '1.2-2'), 1),
# Zero epoch is same as no epoch
(('a', '=', '0:1.2'), ('a', '=', '1.2'), 1),
(('a', '=', '0:1.2'), ('a', '>=', '1.2'), 1),
(('a', '=', '0:1.2'), ('a', '<=', '1.2'), 1),
(('a', '=', '0:1.2'), ('a', '<', '1.2'), 0),
(('a', '=', '0:1.2'), ('a', '>', '1.2'), 0),
(('a', '=', '0:1.2'), ('a', '<>', '1.2'), 0),
(('a', '=', '1.2'), ('a', '=', '0:1.2'), 1),
(('a', '=', '1.2'), ('a', '>=', '0:1.2'), 1),
(('a', '=', '1.2'), ('a', '<=', '0:1.2'), 1),
(('a', '=', '1.2'), ('a', '<', '0:1.2'), 0),
(('a', '=', '1.2'), ('a', '>', '0:1.2'), 0),
(('a', '=', '1.2'), ('a', '<>', '0:1.2'), 0),
# Non-zero epochs
(('a', '=', '1:1.2'), ('a', '=', '1.2'), 0),
(('a', '=', '1:1.2'), ('a', '>=', '1.2'), 1),
(('a', '=', '1:1.2'), ('a', '<=', '1.2'), 0),
(('a', '=', '1:1.2'), ('a', '<', '1.2'), 0),
(('a', '=', '1:1.2'), ('a', '>', '1.2'), 1),
(('a', '=', '1:1.2'), ('a', '<>', '1.2'), 1),
(('a', '=', '1.2'), ('a', '=', '1:1.2'), 0),
(('a', '=', '1.2'), ('a', '>=', '1:1.2'), 0),
(('a', '=', '1.2'), ('a', '<=', '1:1.2'), 1),
(('a', '=', '1.2'), ('a', '<', '1:1.2'), 1),
(('a', '=', '1.2'), ('a', '>', '1:1.2'), 0),
(('a', '=', '1.2'), ('a', '<>', '1:1.2'), 1),
(('a', '=', '2:1.2'), ('a', '=', '2:1.2'), 1),
(('a', '=', '2:1.2'), ('a', '>=', '2:1.2'), 1),
(('a', '=', '2:1.2'), ('a', '<=', '2:1.2'), 1),
(('a', '=', '2:1.2'), ('a', '<', '2:1.2'), 0),
(('a', '=', '2:1.2'), ('a', '>', '2:1.2'), 0),
(('a', '=', '2:1.2'), ('a', '<>', '2:1.2'), 0),
# Simple, obvious version comparisons with provide ranges
(('a', '>', '1.2'), ('a', '=', '1.2'), 0),
(('a', '>', '1.2'), ('a', '>=', '1.2'), 1),
(('a', '>', '1.2'), ('a', '<=', '1.2'), 0),
(('a', '>', '1.2'), ('a', '<', '1.2'), 0),
(('a', '>', '1.2'), ('a', '>', '1.2'), 1),
(('a', '>', '1.2'), ('a', '<>', '1.2'), 1),
(('a', '<', '1.2'), ('a', '=', '1.2'), 0),
(('a', '<', '1.2'), ('a', '>=', '1.2'), 0),
(('a', '<', '1.2'), ('a', '<=', '1.2'), 1),
(('a', '<', '1.2'), ('a', '<', '1.2'), 1),
(('a', '<', '1.2'), ('a', '>', '1.2'), 0),
(('a', '<', '1.2'), ('a', '<>', '1.2'), 1),
(('a', '>=', '1.2'), ('a', '=', '1.2'), 1),
(('a', '>=', '1.2'), ('a', '>=', '1.2'), 1),
(('a', '>=', '1.2'), ('a', '<=', '1.2'), 1),
(('a', '>=', '1.2'), ('a', '<', '1.2'), 0),
(('a', '>=', '1.2'), ('a', '>', '1.2'), 1),
(('a', '>=', '1.2'), ('a', '<>', '1.2'), 1),
(('a', '<=', '1.2'), ('a', '=', '1.2'), 1),
(('a', '<=', '1.2'), ('a', '>=', '1.2'), 1),
(('a', '<=', '1.2'), ('a', '<=', '1.2'), 1),
(('a', '<=', '1.2'), ('a', '<', '1.2'), 1),
(('a', '<=', '1.2'), ('a', '>', '1.2'), 0),
(('a', '<=', '1.2'), ('a', '<>', '1.2'), 1),
(('a', '<>', '1.2'), ('a', '=', '1.2'), 0),
(('a', '<>', '1.2'), ('a', '>=', '1.2'), 1),
(('a', '<>', '1.2'), ('a', '<=', '1.2'), 1),
(('a', '<>', '1.2'), ('a', '<', '1.2'), 1),
(('a', '<>', '1.2'), ('a', '>', '1.2'), 1),
(('a', '<>', '1.2'), ('a', '<>', '1.2'), 1),
# Missing release should be considered "any release will do"
# but this is not always so (the cases with "???")
(('a', '=', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '=', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '=', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '=', '1.2-1'), ('a', '<', '1.2'), 0),
(('a', '=', '1.2-1'), ('a', '>', '1.2'), 0),
(('a', '=', '1.2-1'), ('a', '<>', '1.2'), 0),
(('a', '>', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '>', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '>', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '>', '1.2-1'), ('a', '<', '1.2'), 0),
(('a', '>', '1.2-1'), ('a', '>', '1.2'), 1),
(('a', '>', '1.2-1'), ('a', '<>', '1.2'), 1),
(('a', '<', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '<', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '<', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '<', '1.2-1'), ('a', '<', '1.2'), 1),
(('a', '<', '1.2-1'), ('a', '>', '1.2'), 0),
(('a', '<', '1.2-1'), ('a', '<>', '1.2'), 1),
(('a', '>=', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '>=', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '>=', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '>=', '1.2-1'), ('a', '<', '1.2'), 0),
(('a', '>=', '1.2-1'), ('a', '>', '1.2'), 1),
(('a', '>=', '1.2-1'), ('a', '<>', '1.2'), 1),
(('a', '<=', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '<=', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '<=', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '<=', '1.2-1'), ('a', '<', '1.2'), 1),
(('a', '<=', '1.2-1'), ('a', '>', '1.2'), 0),
(('a', '<=', '1.2-1'), ('a', '<>', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '=', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '>=', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '<=', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '<', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '>', '1.2'), 1),
(('a', '<>', '1.2-1'), ('a', '<>', '1.2'), 1),
(('a', '=', '1.2'), ('a', '=', '1.2-1'), 1),
(('a', '=', '1.2'), ('a', '>=', '1.2-1'), 1),
(('a', '=', '1.2'), ('a', '<=', '1.2-1'), 1),
(('a', '=', '1.2'), ('a', '<', '1.2-1'), 1),
(('a', '=', '1.2'), ('a', '>', '1.2-1'), 1),
(('a', '=', '1.2'), ('a', '<>', '1.2-1'), 1),
(('a', '>', '1.2'), ('a', '=', '1.2-1'), 0),
(('a', '>', '1.2'), ('a', '>=', '1.2-1'), 1),
(('a', '>', '1.2'), ('a', '<=', '1.2-1'), 0),
(('a', '>', '1.2'), ('a', '<', '1.2-1'), 0),
(('a', '>', '1.2'), ('a', '>', '1.2-1'), 1),
(('a', '>', '1.2'), ('a', '<>', '1.2-1'), 1),
(('a', '<', '1.2'), ('a', '=', '1.2-1'), 0),
(('a', '<', '1.2'), ('a', '>=', '1.2-1'), 0),
(('a', '<', '1.2'), ('a', '<=', '1.2-1'), 1),
(('a', '<', '1.2'), ('a', '<', '1.2-1'), 1),
(('a', '<', '1.2'), ('a', '>', '1.2-1'), 0),
(('a', '<', '1.2'), ('a', '<>', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '=', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '>=', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '<=', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '<', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '>', '1.2-1'), 1),
(('a', '>=', '1.2'), ('a', '<>', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '=', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '>=', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '<=', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '<', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '>', '1.2-1'), 1),
(('a', '<=', '1.2'), ('a', '<>', '1.2-1'), 1),
(('a', '<>', '1.2'), ('a', '=', '1.2-1'), 0),
(('a', '<>', '1.2'), ('a', '>=', '1.2-1'), 1),
(('a', '<>', '1.2'), ('a', '<=', '1.2-1'), 1),
(('a', '<>', '1.2'), ('a', '<', '1.2-1'), 1),
(('a', '<>', '1.2'), ('a', '>', '1.2-1'), 1),
(('a', '<>', '1.2'), ('a', '<>', '1.2-1'), 1),
]
ms = ['no match', 'match']
myprint() # dumb kludge to fixup expected output
for p, r, res in tests:
d1 = rpm.ds(p, 'provides')
d2 = rpm.ds(r, 'requires')
match = d1.Compare(d2)
if match != res:
myprint('FAILED: %s with %s: %s' % (d1.DNEVR(), d2.DNEVR(),ms[res]))
],
[]
)