blob: 1dfa648536bc2bce54b476bb4f2acd23decaf2d1 [file] [log] [blame]
# 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)