use_reduce: Another fix for bug 340973.
authorZac Medico <zmedico@gentoo.org>
Fri, 15 Oct 2010 12:01:22 +0000 (05:01 -0700)
committerZac Medico <zmedico@gentoo.org>
Fri, 15 Oct 2010 12:07:24 +0000 (05:07 -0700)
pym/portage/dep/__init__.py
pym/portage/tests/dep/test_use_reduce.py

index 010d88351611577da41a148b900f1f40d0a74c8b..3db2ae02d17cbcf309c02c132476607c3ca77da0 100644 (file)
@@ -447,7 +447,11 @@ def use_reduce(depstr, uselist=[], masklist=[], matchall=False, excludeall=[], i
                                                        # l = [[...]]
                                                        last = last_any_of_operator_level(level)
                                                        if last == -1:
-                                                               stack[level].extend(l[0])
+                                                               if opconvert and isinstance(l[0], list) \
+                                                                       and l[0] and l[0][0] == '||':
+                                                                       stack[level].append(l[0])
+                                                               else:
+                                                                       stack[level].extend(l[0])
                                                        else:
                                                                stack[level].append(l[0])
                                                else:
index 44f9fd710795a2a7aba91fa8e5405f67acf716c7..f7e9b101233716ab332e0b0e482300d616bf7d38 100644 (file)
@@ -317,12 +317,16 @@ class UseReduce(TestCase):
                                "A || ( B C )",
                                opconvert = True,
                                expected_result = ['A', ['||', 'B', 'C']]),
-                       # ['A', ['||', 'B', '||', 'C', 'D', 'E'], 'G'] != ['A', ['||', 'B', 'C', 'D', 'E'], 'G']
-                       #UseReduceTestCase(
-                       #       "A foo? ( || ( B || ( bar? ( || ( C D E ) ) !bar? ( F ) ) ) ) G",
-                       #       uselist = ["foo", "bar"],
-                       #       opconvert = True,
-                       #       expected_result = ['A', ['||', 'B', 'C', 'D', 'E'], 'G']),
+                       UseReduceTestCase(
+                               "A foo? ( || ( B || ( bar? ( || ( C D E ) ) !bar? ( F ) ) ) ) G",
+                               uselist = ["foo", "bar"],
+                               opconvert = True,
+                               expected_result = ['A', ['||', 'B', ['||', 'C', 'D', 'E']], 'G']),
+                       UseReduceTestCase(
+                               "A foo? ( || ( B || ( bar? ( || ( C D E ) ) !bar? ( F ) ) ) ) G",
+                               uselist = ["foo", "bar"],
+                               opconvert = False,
+                               expected_result = ['A', '||', ['B', 'C', 'D', 'E'], 'G']),
 
                        UseReduceTestCase(
                                "|| ( A )",
@@ -366,13 +370,13 @@ class UseReduce(TestCase):
                                "|| ( foo? ( || ( A B ) ) )",
                                uselist = ["foo"],
                                opconvert = True,
-                               expected_result = ["||", "A", "B"]),
+                               expected_result = [['||', 'A', 'B']]),
 
                        UseReduceTestCase(
                                "|| ( ( A B ) foo? ( || ( C D ) ) )",
                                uselist = ["foo"],
                                opconvert = True,
-                               expected_result = [['||', ['A', 'B'], '||', 'C', 'D']]),
+                               expected_result = [['||', ['A', 'B'], ['||', 'C', 'D']]]),
 
                        UseReduceTestCase(
                                "|| ( ( A B ) foo? ( || ( C D ) ) )",