def check_result(all_versions, acceptable_versions, expected_range): version_ranges = find_version_ranges(all_versions, acceptable_versions) assert expected_range == version_ranges if expected_range: specifier = VersionSpec(expected_range) try: assert all(specifier.any_match(v) for v in acceptable_versions) except AttributeError: assert all(specifier.match(v) for v in acceptable_versions)
def test_local_identifier(self): """The separator for the local identifier should be either `.` or `+`""" # a valid versionstr should match itself versions = ( '1.7.0' '1.7.0.post123' '1.7.0.post123.gabcdef9', '1.7.0.post123+gabcdef9', ) for version in versions: m = VersionSpec(version) self.assertTrue(m.match(version))
def test_local_identifier(self): """The separator for the local identifier should be either `.` or `+`""" # a valid versionstr should match itself versions = ( '1.7.0' '1.7.0.post123' '1.7.0.post123.gabcdef9', '1.7.0.post123+gabcdef9', ) for version in versions: m = VersionSpec(version) self.assertTrue(m.match(version))
def test_compound_versions(self): vs = VersionSpec('>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*') assert not vs.match('2.6.8') assert vs.match('2.7.2') assert not vs.match('3.3') assert not vs.match('3.3.4') assert vs.match('3.4') assert vs.match('3.4a')
def test_compound_versions(self): vs = VersionSpec('>=2.7, !=3.0.*, !=3.1.*, !=3.2.*, !=3.3.*') assert not vs.match('2.6.8') assert vs.match('2.7.2') assert not vs.match('3.3') assert not vs.match('3.3.4') assert vs.match('3.4') assert vs.match('3.4a')
def test_match(self): for vspec, res in [ ('1.7.*', True), ('1.7.1', True), ('1.7.0', False), ('1.7', False), ('1.5.*', False), ('>=1.5', True), ('!=1.5', True), ('!=1.7.1', False), ('==1.7.1', True), ('==1.7', False), ('==1.7.2', False), ('==1.7.1.0', True), ('1.7.*|1.8.*', True), # ('1.8/*|1.9.*', False), what was this supposed to be? ('>1.7,<1.8', True), ('>1.7.1,<1.8', False), ('^1.7.1$', True), ('^1\.7\.1$', True), ('^1\.7\.[0-9]+$', True), ('^1\.8.*$', False), ('^1\.[5-8]\.1$', True), ('^[^1].*$', False), ('^[0-9+]+\.[0-9+]+\.[0-9]+$', True), ('^$', False), ('^.*$', True), ('1.7.*|^0.*$', True), ('1.6.*|^0.*$', False), ('1.6.*|^0.*$|1.7.1', True), ('^0.*$|1.7.1', True), ('1.6.*|^.*\.7\.1$|0.7.1', True), ('*', True), ('1.*.1', True), ('1.5.*|>1.7,<1.8', True), ('1.5.*|>1.7,<1.7.1', False), ]: m = VersionSpec(vspec) assert VersionSpec(m) is m assert str(m) == vspec assert repr(m) == "VersionSpec('%s')" % vspec assert m.match('1.7.1') == res, vspec
def test_match(self): for vspec, res in [ ('1.7.*', True), ('1.7.1', True), ('1.7.0', False), ('1.7', False), ('1.5.*', False), ('>=1.5', True), ('!=1.5', True), ('!=1.7.1', False), ('==1.7.1', True), ('==1.7', False), ('==1.7.2', False), ('==1.7.1.0', True), ('1.7.*|1.8.*', True), # ('1.8/*|1.9.*', False), what was this supposed to be? ('>1.7,<1.8', True), ('>1.7.1,<1.8', False), ('^1.7.1$', True), ('^1\.7\.1$', True), ('^1\.7\.[0-9]+$', True), ('^1\.8.*$', False), ('^1\.[5-8]\.1$', True), ('^[^1].*$', False), ('^[0-9+]+\.[0-9+]+\.[0-9]+$', True), ('^$', False), ('^.*$', True), ('1.7.*|^0.*$', True), ('1.6.*|^0.*$', False), ('1.6.*|^0.*$|1.7.1', True), ('^0.*$|1.7.1', True), ('1.6.*|^.*\.7\.1$|0.7.1', True), ('*', True), ('1.*.1', True), ('1.5.*|>1.7,<1.8', True), ('1.5.*|>1.7,<1.7.1', False), ]: m = VersionSpec(vspec) assert VersionSpec(m) is m assert str(m) == vspec assert repr(m) == "VersionSpec('%s')" % vspec assert m.match('1.7.1') == res, vspec