debian/lib/python/debian_linux/debian.py: Add unit tests for Version class

Three of these currently fail and will be fixed in the next commit.
This commit is contained in:
Ben Hutchings 2018-07-01 00:03:49 +01:00
parent 6fcfc170b9
commit ed60e27410
1 changed files with 78 additions and 0 deletions

View File

@ -1,6 +1,7 @@
import collections
import os.path
import re
import unittest
from . import utils
@ -143,6 +144,79 @@ $
return self.revision
class _VersionTest(unittest.TestCase):
def test_native(self):
v = Version('1.2+c~4')
self.assertEqual(v.epoch, None)
self.assertEqual(v.upstream, '1.2+c~4')
self.assertEqual(v.revision, None)
self.assertEqual(v.complete, '1.2+c~4')
self.assertEqual(v.complete_noepoch, '1.2+c~4')
def test_nonnative(self):
v = Version('1-2+d~3')
self.assertEqual(v.epoch, None)
self.assertEqual(v.upstream, '1')
self.assertEqual(v.revision, '2+d~3')
self.assertEqual(v.complete, '1-2+d~3')
self.assertEqual(v.complete_noepoch, '1-2+d~3')
def test_native_epoch(self):
v = Version('5:1.2.3')
self.assertEqual(v.epoch, 5)
self.assertEqual(v.upstream, '1.2.3')
self.assertEqual(v.revision, None)
self.assertEqual(v.complete, '5:1.2.3')
self.assertEqual(v.complete_noepoch, '1.2.3')
def test_nonnative_epoch(self):
v = Version('5:1.2.3-4')
self.assertEqual(v.epoch, 5)
self.assertEqual(v.upstream, '1.2.3')
self.assertEqual(v.revision, '4')
self.assertEqual(v.complete, '5:1.2.3-4')
self.assertEqual(v.complete_noepoch, '1.2.3-4')
def test_multi_hyphen(self):
v = Version('1-2-3')
self.assertEqual(v.epoch, None)
self.assertEqual(v.upstream, '1-2')
self.assertEqual(v.revision, '3')
self.assertEqual(v.complete, '1-2-3')
def test_multi_colon(self):
v = Version('1:2:3')
self.assertEqual(v.epoch, 1)
self.assertEqual(v.upstream, '2:3')
self.assertEqual(v.revision, None)
def test_invalid_epoch(self):
with self.assertRaises(RuntimeError):
v = Version('a:1')
with self.assertRaises(RuntimeError):
v = Version('-1:1')
with self.assertRaises(RuntimeError):
v = Version('1a:1')
def test_invalid_upstream(self):
with self.assertRaises(RuntimeError):
v = Version('1_2')
with self.assertRaises(RuntimeError):
v = Version('1/2')
with self.assertRaises(RuntimeError):
v = Version('a1')
with self.assertRaises(RuntimeError):
v = Version('1 2')
def test_invalid_revision(self):
with self.assertRaises(RuntimeError):
v = Version('1-2_3')
with self.assertRaises(RuntimeError):
v = Version('1-2/3')
with self.assertRaises(RuntimeError):
v = Version('1-2:3')
class VersionLinux(Version):
_version_linux_rules = r"""
^
@ -501,3 +575,7 @@ class TestsControl(_ControlFileDict):
('Tests-Directory', str),
('Classes', str),
))
if __name__ == '__main__':
unittest.main()