compatibility: Implement a version comparator.

This commit is contained in:
Greg Price
2018-12-04 14:22:05 -08:00
committed by Tim Abbott
parent 60de598cb5
commit 557aca2aa7
2 changed files with 82 additions and 1 deletions

View File

@@ -1,5 +1,43 @@
from zerver.lib.test_classes import ZulipTestCase
from zerver.views.compatibility import version_lt
class VersionTest(ZulipTestCase):
data = [case.split() for case in '''
1.2.3 < 1.2.4
1.2.3 = 1.2.3
1.4.1 > 1.2.3
1.002a = 1.2a
1.2.3 ? 1.2-dev
1.2-dev ? 1.2a
1.2a ? 1.2rc3
1.2rc3 ? 1.2
1.2 ? 1.2-g0f1e2d3c4
10.1 > 1.2
0.17.18 < 16.2.96
9.10.11 < 16.2.96
15.1.95 < 16.2.96
16.2.96 = 16.2.96
20.0.103 > 16.2.96
'''.strip().split('\n')]
def test_version_lt(self) -> None:
for ver1, cmp, ver2 in self.data:
msg = 'expected {} {} {}'.format(ver1, cmp, ver2)
if cmp == '<':
self.assertTrue(version_lt(ver1, ver2), msg=msg)
self.assertFalse(version_lt(ver2, ver1), msg=msg)
elif cmp == '=':
self.assertFalse(version_lt(ver1, ver2), msg=msg)
self.assertFalse(version_lt(ver2, ver1), msg=msg)
elif cmp == '>':
self.assertFalse(version_lt(ver1, ver2), msg=msg)
self.assertTrue(version_lt(ver2, ver1), msg=msg)
elif cmp == '?':
self.assertIsNone(version_lt(ver1, ver2), msg=msg)
self.assertIsNone(version_lt(ver2, ver1), msg=msg)
else:
assert False # nocoverage
class CompatibilityTest(ZulipTestCase):
def test_compatibility(self) -> None: