Add __contains__ to Spec.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
This commit is contained in:
@@ -255,6 +255,11 @@ class Spec(object):
|
||||
else: # pragma: no cover
|
||||
raise ValueError('Unexpected match kind: %r' % self.kind)
|
||||
|
||||
def __contains__(self, version):
|
||||
if isinstance(version, Version):
|
||||
return self.match(version)
|
||||
return False
|
||||
|
||||
def __str__(self):
|
||||
return '%s%s' % (self.kind, self.spec)
|
||||
|
||||
|
||||
@@ -145,5 +145,18 @@ class VersionTestCase(unittest.TestCase):
|
||||
self.assertNotEqual(text, base.Version(text, partial=True))
|
||||
|
||||
|
||||
class SpecTestCase(unittest.TestCase):
|
||||
def test_equality(self):
|
||||
spec1 = base.Spec('==0.1.0')
|
||||
spec2 = base.Spec('==0.1.0')
|
||||
self.assertEqual(spec1, spec2)
|
||||
self.assertFalse(spec1 == '==0.1.0')
|
||||
|
||||
def test_to_string(self):
|
||||
spec = base.Spec('==0.1.0')
|
||||
self.assertEqual('==0.1.0', str(spec))
|
||||
self.assertEqual(base.Spec.KIND_EQUAL, spec.kind)
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
unittest.main()
|
||||
|
||||
@@ -83,6 +83,17 @@ class MatchTestCase(unittest.TestCase):
|
||||
version = semantic_version.Version(version_txt)
|
||||
self.assertTrue(spec.match(version), "%r does not match %r" % (version, spec))
|
||||
self.assertTrue(semantic_version.match(spec_txt, version_txt))
|
||||
self.assertTrue(version in spec, "%r not in %r" % (version, spec))
|
||||
|
||||
def test_contains(self):
|
||||
spec = semantic_version.Spec('<=0.1.1')
|
||||
self.assertFalse('0.1.0' in spec, "0.1.0 should not be in %r" % spec)
|
||||
|
||||
version = semantic_version.Version('0.1.1+4.2')
|
||||
self.assertFalse(version in spec, "%r should not be in %r" % (version, spec))
|
||||
|
||||
version = semantic_version.Version('0.1.1-rc1+4.2')
|
||||
self.assertTrue(version in spec, "%r should be in %r" % (version, spec))
|
||||
|
||||
|
||||
if __name__ == '__main__': # pragma: no cover
|
||||
|
||||
Reference in New Issue
Block a user