# Copyright 2010-2013 Gentoo Foundation # Distributed under the terms of the GNU General Public License v2 from portage.tests import TestCase from portage.dep import paren_reduce from portage.exception import InvalidDependString class TestParenReduce(TestCase): def testParenReduce(self): test_cases = ( ( "A", ["A"]), ( "( A )", ["A"]), ( "|| ( A B )", [ "||", ["A", "B"] ]), ( "|| ( A || ( B C ) )", [ "||", ["A", "||", ["B", "C"]]]), ( "|| ( A || ( B C D ) )", [ "||", ["A", "||", ["B", "C", "D"]] ]), ( "|| ( A || ( B || ( C D ) E ) )", [ "||", ["A", "||", ["B", "||", ["C", "D"], "E"]] ]), ( "a? ( A )", ["a?", ["A"]]), ( "( || ( ( ( A ) B ) ) )", ["A", "B"]), ( "( || ( || ( ( A ) B ) ) )", [ "||", ["A", "B"] ]), ( "|| ( A )", ["A"]), ( "( || ( || ( || ( A ) foo? ( B ) ) ) )", [ "||", ["A", "foo?", ["B"] ]]), ( "( || ( || ( bar? ( A ) || ( foo? ( B ) ) ) ) )", [ "||", ["bar?", ["A"], "foo?", ["B"] ]]), ( "A || ( ) foo? ( ) B", ["A", "B"]), ( "|| ( A ) || ( B )", ["A", "B"]), ( "foo? ( A ) foo? ( B )", ["foo?", ["A"], "foo?", ["B"]]), ( "|| ( ( A B ) C )", [ "||", [ ["A", "B"], "C"] ]), ( "|| ( ( A B ) ( C ) )", [ "||", [ ["A", "B"], "C"] ]), # test USE dep defaults for bug #354003 ( ">=dev-lang/php-5.2[pcre(+)]", [ ">=dev-lang/php-5.2[pcre(+)]" ]), ) test_cases_xfail = ( "( A", "A )", "||( A B )", "|| (A B )", "|| ( A B)", "|| ( A B", "|| A B )", "|| A B", "|| ( A B ) )", "|| || B C", "|| ( A B || )", "a? A", ( "( || ( || || ( A ) foo? ( B ) ) )"), ( "( || ( || bar? ( A ) foo? ( B ) ) )"), ) for dep_str, expected_result in test_cases: self.assertEqual(paren_reduce(dep_str, _deprecation_warn=False), expected_result, "input: '%s' result: %s != %s" % (dep_str, paren_reduce(dep_str, _deprecation_warn=False), expected_result)) for dep_str in test_cases_xfail: self.assertRaisesMsg(dep_str, InvalidDependString, paren_reduce, dep_str, _deprecation_warn=False)