From 3eee661ebc7c6276af2a085c9132e130e09b398e Mon Sep 17 00:00:00 2001 From: Didier Raboud Date: Wed, 23 May 2012 13:22:30 +0200 Subject: [PATCH] PyUT: Add test_sort_releases to test multiple sorting syntaxes. Git-Dch: None --- lsb_release.py | 9 +++++++++ test/test_lsb_release.py | 30 ++++++++++++++++++++++++++++++ 2 files changed, 39 insertions(+) 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) -- 2.30.2