Add __contains__ to Spec.

Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
This commit is contained in:
Raphaël Barrois
2012-05-16 00:51:05 +02:00
parent 8e541f24ba
commit fcda834a18
3 changed files with 29 additions and 0 deletions

View File

@@ -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)

View File

@@ -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()

View File

@@ -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