PyUT: Implement a unittest for valid_lsb_versions.
authorDidier Raboud <odyx@debian.org>
Sat, 5 May 2012 10:36:53 +0000 (12:36 +0200)
committerDidier Raboud <odyx@debian.org>
Mon, 7 May 2012 19:04:24 +0000 (21:04 +0200)
Take the opportunity to fix its output for cxx in 3.1.

lsb_release.py
test/test_lsb_release.py

index 2727d13cab8230404a99580af8a13459692a06de..ed0667b9ae0dae5a6927ba566e6f276dfbe26e91 100644 (file)
@@ -68,6 +68,8 @@ def valid_lsb_versions(version, module):
     elif version == '3.1':
         if module in ('desktop', 'qt4'):
             return ['3.1']
+        elif module == 'cxx':
+            return ['3.0', '3.1']
         else:
             return ['2.0', '3.0', '3.1']
     elif version == '3.2':
index 5aa821d05d66061394f58caa0992d1f1d22bda67..c22a3db55a86931577aabc61427b95f6435852a0 100644 (file)
@@ -20,7 +20,43 @@ class TestLSBRelease(unittest.TestCase):
                        self.assertEqual(lr.lookup_codename('inexistent_release' + str(random.randint(0,9)),badDefault),badDefault,'Default release codename is not accepted.')
 
        def test_valid_lsb_versions(self):
-               raise NotImplementedError()
+               # List versions in which the modules are available
+               lsb_modules = {
+                       'cxx'           : ['3.0', '3.1', '3.2', '4.0', '4.1'],
+                       'desktop'       : ['3.1', '3.2', '4.0', '4.1'],
+                       'languages'  : ['3.2', '4.0', '4.1'],
+                       'multimedia' : ['3.2', '4.0', '4.1'],
+                       'printing'   : ['3.2', '4.0', '4.1'],
+                       'qt4'           : ['3.1'],
+                       'security'   : ['4.0','4.1'],
+               }
+               lsb_known_versions = ['2.0', '3.0', '3.1', '3.2', '4.0', '4.1'];
+               for lsb_module in lsb_modules:
+                       in_versions = lsb_modules[lsb_module]
+                       for test_v in lsb_known_versions:
+                               vlv_result = lr.valid_lsb_versions(test_v,lsb_module)
+                               assert_text = 'valid_lsb_versions(' + test_v + ',' + lsb_module + ')'
+                               # For 2.0, all output 2.0 only.
+                               if test_v == '2.0':
+                                       self.assertEqual(vlv_result,
+                                                                        ['2.0'],
+                                                                        assert_text)
+                               # For 3.0, all output 2.0 and 3.0.
+                               elif test_v == '3.0':
+                                       self.assertEqual(vlv_result,
+                                                                        ['2.0', '3.0'],
+                                                                        assert_text)
+                               # Before appearance, it outputs all past LSB versions
+                               elif int(float(test_v)*10) < int(float(in_versions[0])*10):
+                                       self.assertEqual(vlv_result,
+                                                                        [elem for elem in lsb_known_versions if int(float(elem)*10) <= int(float(test_v)*10)],
+                                                                        assert_text)
+                               # From appearence on, it outputs all lower versions from the in_versions
+                               else:
+                                       self.assertEqual(vlv_result,
+                                                                        [elem for elem in in_versions if int(float(elem)*10) <= int(float(test_v)*10)],
+                                                                        assert_text)
+
        def test_check_modules_installed(self):
                raise NotImplementedError()
        def test_parse_policy_line(self):