123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176 |
- # Copyright (c) Twisted Matrix Laboratories.
- # See LICENSE for details.
- """
- Tests for L{twisted.python.versions}.
- """
- from __future__ import division, absolute_import
- import operator
- from twisted.python.versions import getVersionString, IncomparableVersions
- from twisted.python.versions import Version
- from incremental import _inf
- from twisted.trial.unittest import SynchronousTestCase as TestCase
- class VersionsTests(TestCase):
- def test_versionComparison(self):
- """
- Versions can be compared for equality and order.
- """
- va = Version("dummy", 1, 0, 0)
- vb = Version("dummy", 0, 1, 0)
- self.assertTrue(va > vb)
- self.assertTrue(vb < va)
- self.assertTrue(va >= vb)
- self.assertTrue(vb <= va)
- self.assertTrue(va != vb)
- self.assertTrue(vb == Version("dummy", 0, 1, 0))
- self.assertTrue(vb == vb)
- def test_versionComparisonCaseInsensitive(self):
- """
- Version packages are compared case insensitively.
- """
- va = Version("twisted", 1, 0, 0)
- vb = Version("Twisted", 0, 1, 0)
- self.assertTrue(va > vb)
- self.assertTrue(vb < va)
- self.assertTrue(va >= vb)
- self.assertTrue(vb <= va)
- self.assertTrue(va != vb)
- self.assertTrue(vb == Version("twisted", 0, 1, 0))
- self.assertTrue(vb == Version("TWISted", 0, 1, 0))
- self.assertTrue(vb == vb)
- def test_comparingPrereleasesWithReleases(self):
- """
- Prereleases are always less than versions without prereleases.
- """
- va = Version("whatever", 1, 0, 0, prerelease=1)
- vb = Version("whatever", 1, 0, 0)
- self.assertTrue(va < vb)
- self.assertFalse(va > vb)
- self.assertNotEqual(vb, va)
- def test_comparingPrereleases(self):
- """
- The value specified as the prerelease is used in version comparisons.
- """
- va = Version("whatever", 1, 0, 0, prerelease=1)
- vb = Version("whatever", 1, 0, 0, prerelease=2)
- self.assertTrue(va < vb)
- self.assertTrue(vb > va)
- self.assertTrue(va <= vb)
- self.assertTrue(vb >= va)
- self.assertTrue(va != vb)
- self.assertTrue(vb == Version("whatever", 1, 0, 0, prerelease=2))
- self.assertTrue(va == va)
- def test_infComparison(self):
- """
- L{_inf} is equal to L{_inf}.
- This is a regression test.
- """
- self.assertEqual(_inf, _inf)
- def test_disallowBuggyComparisons(self):
- """
- The package names of the Version objects need to be the same,
- """
- self.assertRaises(IncomparableVersions,
- operator.eq,
- Version("dummy", 1, 0, 0),
- Version("dumym", 1, 0, 0))
- def test_notImplementedComparisons(self):
- """
- Comparing a L{Version} to some other object type results in
- C{NotImplemented}.
- """
- va = Version("dummy", 1, 0, 0)
- vb = ("dummy", 1, 0, 0) # a tuple is not a Version object
- self.assertEqual(va.__cmp__(vb), NotImplemented)
- def test_repr(self):
- """
- Calling C{repr} on a version returns a human-readable string
- representation of the version.
- """
- self.assertEqual(repr(Version("dummy", 1, 2, 3)),
- "Version('dummy', 1, 2, 3)")
- def test_reprWithPrerelease(self):
- """
- Calling C{repr} on a version with a prerelease returns a human-readable
- string representation of the version including the prerelease.
- """
- self.assertEqual(repr(Version("dummy", 1, 2, 3, prerelease=4)),
- "Version('dummy', 1, 2, 3, release_candidate=4)")
- def test_str(self):
- """
- Calling C{str} on a version returns a human-readable string
- representation of the version.
- """
- self.assertEqual(str(Version("dummy", 1, 2, 3)),
- "[dummy, version 1.2.3]")
- def test_strWithPrerelease(self):
- """
- Calling C{str} on a version with a prerelease includes the prerelease.
- """
- self.assertEqual(str(Version("dummy", 1, 0, 0, prerelease=1)),
- "[dummy, version 1.0.0rc1]")
- def testShort(self):
- self.assertEqual(Version('dummy', 1, 2, 3).short(), '1.2.3')
- def test_getVersionString(self):
- """
- L{getVersionString} returns a string with the package name and the
- short version number.
- """
- self.assertEqual(
- 'Twisted 8.0.0', getVersionString(Version('Twisted', 8, 0, 0)))
- def test_getVersionStringWithPrerelease(self):
- """
- L{getVersionString} includes the prerelease, if any.
- """
- self.assertEqual(
- getVersionString(Version("whatever", 8, 0, 0, prerelease=1)),
- "whatever 8.0.0rc1")
- def test_base(self):
- """
- The L{base} method returns a very simple representation of the version.
- """
- self.assertEqual(Version("foo", 1, 0, 0).base(), "1.0.0")
- def test_baseWithPrerelease(self):
- """
- The base version includes 'preX' for versions with prereleases.
- """
- self.assertEqual(Version("foo", 1, 0, 0, prerelease=8).base(),
- "1.0.0rc8")
|