diff options
author | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-05-16 00:51:05 +0200 |
---|---|---|
committer | Raphaël Barrois <raphael.barrois@polytechnique.org> | 2012-05-16 00:51:05 +0200 |
commit | fcda834a18405bee937198daf154a94a3993cbcc (patch) | |
tree | 71df1ef88a0bc674b9ad4f86aae07bc307b15aff | |
parent | 8e541f24baa9cfeab8aa49a70c52ea477a9f7747 (diff) | |
download | semantic-version-fcda834a18405bee937198daf154a94a3993cbcc.tar.gz |
Add __contains__ to Spec.
Signed-off-by: Raphaël Barrois <raphael.barrois@polytechnique.org>
-rw-r--r-- | src/semantic_version/base.py | 5 | ||||
-rwxr-xr-x | tests/test_base.py | 13 | ||||
-rwxr-xr-x | tests/test_match.py | 11 |
3 files changed, 29 insertions, 0 deletions
diff --git a/src/semantic_version/base.py b/src/semantic_version/base.py index 9bd5932..a3fbdba 100644 --- a/src/semantic_version/base.py +++ b/src/semantic_version/base.py @@ -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) diff --git a/tests/test_base.py b/tests/test_base.py index 28bfc7a..ee6e348 100755 --- a/tests/test_base.py +++ b/tests/test_base.py @@ -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() diff --git a/tests/test_match.py b/tests/test_match.py index cd3acea..9d05c7c 100755 --- a/tests/test_match.py +++ b/tests/test_match.py @@ -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 |