# test_best_match_to_list.py -- Portage Unit Testing Functionality # Copyright 2010-2012 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from itertools import permutations from portage.tests import TestCase from portage.dep import Atom, best_match_to_list class Test_best_match_to_list(TestCase): def best_match_to_list_wrapper(self, mypkg, mylist): """ This function uses best_match_to_list to create sorted list of matching atoms. """ ret = [] mylist = list(mylist) while mylist: m = best_match_to_list(mypkg, mylist) if m is not None: ret.append(m) mylist.remove(m) else: break return ret def testBest_match_to_list(self): tests = [ ("dev-libs/A-4", [Atom(">=dev-libs/A-3"), Atom(">=dev-libs/A-2")], \ [Atom(">=dev-libs/A-3"), Atom(">=dev-libs/A-2")], True), ("dev-libs/A-4", [Atom("<=dev-libs/A-5"), Atom("<=dev-libs/A-6")], \ [Atom("<=dev-libs/A-5"), Atom("<=dev-libs/A-6")], True), ("dev-libs/A-1", [Atom("dev-libs/A"), Atom("=dev-libs/A-1")], \ [Atom("=dev-libs/A-1"), Atom("dev-libs/A")], True), ("dev-libs/A-1", [Atom("dev-libs/B"), Atom("=dev-libs/A-1:0")], \ [Atom("=dev-libs/A-1:0")], True), ("dev-libs/A-1", [Atom("dev-libs/*", allow_wildcard=True), Atom("=dev-libs/A-1:0")], \ [Atom("=dev-libs/A-1:0"), Atom("dev-libs/*", allow_wildcard=True)], True), ("dev-libs/A-4.9999-r1", [Atom("dev-libs/*", allow_wildcard=True), Atom("=*/*-*9999*", allow_wildcard=True)], \ [Atom("=*/*-*9999*", allow_wildcard=True), Atom("dev-libs/*", allow_wildcard=True)], True), ("dev-libs/A-4_beta-r1", [Atom("dev-libs/*", allow_wildcard=True), Atom("=*/*-*_beta*", allow_wildcard=True)], \ [Atom("=*/*-*_beta*", allow_wildcard=True), Atom("dev-libs/*", allow_wildcard=True)], True), ("dev-libs/A-4_beta1-r1", [Atom("dev-libs/*", allow_wildcard=True), Atom("=*/*-*_beta*", allow_wildcard=True)], \ [Atom("=*/*-*_beta*", allow_wildcard=True), Atom("dev-libs/*", allow_wildcard=True)], True), ("dev-libs/A-1:0", [Atom("dev-*/*", allow_wildcard=True), Atom("dev-*/*:0", allow_wildcard=True),\ Atom("dev-libs/A"), Atom("<=dev-libs/A-2"), Atom("dev-libs/A:0"), \ Atom("=dev-libs/A-1*"), Atom("~dev-libs/A-1"), Atom("=dev-libs/A-1")], \ [Atom("=dev-libs/A-1"), Atom("~dev-libs/A-1"), Atom("=dev-libs/A-1*"), \ Atom("dev-libs/A:0"), Atom("<=dev-libs/A-2"), Atom("dev-libs/A"), \ Atom("dev-*/*:0", allow_wildcard=True), Atom("dev-*/*", allow_wildcard=True)], False) ] for pkg, atom_list, result, all_permutations in tests: if all_permutations: atom_lists = permutations(atom_list) else: atom_lists = [atom_list] for atom_list in atom_lists: self.assertEqual( self.best_match_to_list_wrapper(pkg, atom_list), result)