From: Didier Raboud Date: Wed, 23 May 2012 11:22:30 +0000 (+0200) Subject: PyUT: Add test_sort_releases to test multiple sorting syntaxes. X-Git-Tag: archive/raspbian/10.2018112800+rpi1^2~103 X-Git-Url: https://dgit.raspbian.org/?a=commitdiff_plain;h=3eee661ebc7c6276af2a085c9132e130e09b398e;p=lsb.git PyUT: Add test_sort_releases to test multiple sorting syntaxes. Git-Dch: None --- diff --git a/lsb_release.py b/lsb_release.py index eb3c45a..d4335c6 100644 --- a/lsb_release.py +++ b/lsb_release.py @@ -177,6 +177,15 @@ def parse_policy_line(data): retval[longnames[k]] = v return retval +def release_index(x): + suite = x[1].get('suite') + if suite: + if suite in RELEASES_ORDER: + return int(len(RELEASES_ORDER) - RELEASES_ORDER.index(suite)) + else: + return suite + return 0 + def compare_release(x, y): suite_x = x[1].get('suite') suite_y = y[1].get('suite') diff --git a/test/test_lsb_release.py b/test/test_lsb_release.py index d095664..4966d54 100644 --- a/test/test_lsb_release.py +++ b/test/test_lsb_release.py @@ -101,6 +101,36 @@ class TestLSBRelease(unittest.TestCase): release_line = string.strip(release_line,',') self.assertEqual(sorted(lr.parse_policy_line(release_line)),sorted(longnames),'parse_policy_line(' + release_line + ')') + def test_sort_releases(self): + # Compare suites with random suite names + releases = [] + suites = [] + for i in range(random.randint(5,40)): + suite_name = rnd_string(8,25) + suites.append(suite_name) + releases.append([rnd_string(1,12), {'suite': suite_name}]) + suites_from_releases = [x[1]['suite'] for x in sorted(releases,lr.compare_release)] + suites_from_releases_new = [x[1]['suite'] for x in sorted(releases,key=lr.release_index)] + suites.sort() + self.assertEqual(suites,suites_from_releases) + self.assertEqual(suites,suites_from_releases_new) + + # Compare suites with known suite names + releases = [] + suites = [] + RO_min = 0 + RO_max = len(lr.RELEASES_ORDER) - 1 + for i in range(random.randint(5,7)): + suite_i = random.randint(RO_min,RO_max) + suite_name = lr.RELEASES_ORDER[suite_i] + suites.append(suite_name) + releases.append([rnd_string(1,12), {'suite': suite_name}]) + suites_from_releases = [x[1]['suite'] for x in sorted(releases,lr.compare_release)] + suites_from_releases_new = [x[1]['suite'] for x in sorted(releases,key=lr.release_index)] + suites.sort(key=lambda suite: int(lr.RELEASES_ORDER.index(suite)),reverse=True) + self.assertEqual(suites,suites_from_releases) + self.assertEqual(suites,suites_from_releases_new) + def test_compare_release(self): # Test that equal suite strings lead to 0 fake_release_equal = rnd_string(1,25)