| # 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) |