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),
+ # 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),
+ # 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),
+ # 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.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.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', '=', '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', '=', '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'), 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'), 0), # ???
+ (('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'), 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'), 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'), 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'), ('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'), 0), # ???
+ (('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'), 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'), 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'), 0), # ???
+ (('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']