1 # Copyright 2011 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
4 from portage.tests import TestCase
5 from portage.tests.resolver.ResolverPlayground import (ResolverPlayground,
6 ResolverPlaygroundTestCase)
8 class ResolverDepthTestCase(TestCase):
10 def testResolverDepth(self):
13 "dev-libs/A-1": {"RDEPEND" : "dev-libs/B"},
14 "dev-libs/A-2": {"RDEPEND" : "dev-libs/B"},
15 "dev-libs/B-1": {"RDEPEND" : "dev-libs/C"},
16 "dev-libs/B-2": {"RDEPEND" : "dev-libs/C"},
20 "virtual/jre-1.5.0" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =dev-java/sun-jre-bin-1.5.0* =virtual/jdk-1.5.0* )"},
21 "virtual/jre-1.5.0-r1" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =dev-java/sun-jre-bin-1.5.0* =virtual/jdk-1.5.0* )"},
22 "virtual/jre-1.6.0" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =dev-java/sun-jre-bin-1.6.0* =virtual/jdk-1.6.0* )"},
23 "virtual/jre-1.6.0-r1" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =dev-java/sun-jre-bin-1.6.0* =virtual/jdk-1.6.0* )"},
24 "virtual/jdk-1.5.0" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =dev-java/sun-jdk-1.5.0* dev-java/gcj-jdk )"},
25 "virtual/jdk-1.5.0-r1" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =dev-java/sun-jdk-1.5.0* dev-java/gcj-jdk )"},
26 "virtual/jdk-1.6.0" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =dev-java/icedtea-6* =dev-java/sun-jdk-1.6.0* )"},
27 "virtual/jdk-1.6.0-r1" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =dev-java/icedtea-6* =dev-java/sun-jdk-1.6.0* )"},
28 "dev-java/gcj-jdk-4.5" : {},
29 "dev-java/gcj-jdk-4.5-r1" : {},
30 "dev-java/icedtea-6.1" : {},
31 "dev-java/icedtea-6.1-r1" : {},
32 "dev-java/sun-jdk-1.5" : {"SLOT" : "1.5"},
33 "dev-java/sun-jdk-1.6" : {"SLOT" : "1.6"},
34 "dev-java/sun-jre-bin-1.5" : {"SLOT" : "1.5"},
35 "dev-java/sun-jre-bin-1.6" : {"SLOT" : "1.6"},
37 "dev-java/ant-core-1.8" : {"DEPEND" : ">=virtual/jdk-1.4"},
38 "dev-db/hsqldb-1.8" : {"RDEPEND" : ">=virtual/jre-1.6"},
42 "dev-libs/A-1": {"RDEPEND" : "dev-libs/B"},
43 "dev-libs/B-1": {"RDEPEND" : "dev-libs/C"},
46 "virtual/jre-1.5.0" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =virtual/jdk-1.5.0* =dev-java/sun-jre-bin-1.5.0* )"},
47 "virtual/jre-1.6.0" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =virtual/jdk-1.6.0* =dev-java/sun-jre-bin-1.6.0* )"},
48 "virtual/jdk-1.5.0" : {"SLOT" : "1.5", "RDEPEND" : "|| ( =dev-java/sun-jdk-1.5.0* dev-java/gcj-jdk )"},
49 "virtual/jdk-1.6.0" : {"SLOT" : "1.6", "RDEPEND" : "|| ( =dev-java/icedtea-6* =dev-java/sun-jdk-1.6.0* )"},
50 "dev-java/gcj-jdk-4.5" : {},
51 "dev-java/icedtea-6.1" : {},
54 world = ["dev-libs/A"]
57 ResolverPlaygroundTestCase(
59 options = {"--update": True, "--deep": 0},
61 mergelist = ["dev-libs/A-2"]),
63 ResolverPlaygroundTestCase(
65 options = {"--update": True, "--deep": 1},
67 mergelist = ["dev-libs/B-2", "dev-libs/A-2"]),
69 ResolverPlaygroundTestCase(
71 options = {"--update": True, "--deep": 2},
73 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
75 ResolverPlaygroundTestCase(
77 options = {"--update": True, "--deep": True},
79 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
81 ResolverPlaygroundTestCase(
83 options = {"--emptytree": True},
85 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
87 ResolverPlaygroundTestCase(
89 options = {"--selective": True, "--deep": True},
93 ResolverPlaygroundTestCase(
95 options = {"--deep": 2},
97 mergelist = ["dev-libs/A-2"]),
99 ResolverPlaygroundTestCase(
103 mergelist = ['virtual/jre-1.6.0-r1']),
105 ResolverPlaygroundTestCase(
107 options = {"--deep" : True},
109 mergelist = ['virtual/jre-1.6.0-r1']),
111 # Test bug #141118, where we avoid pulling in
112 # redundant deps, satisfying nested virtuals
113 # as efficiently as possible.
114 ResolverPlaygroundTestCase(
116 options = {"--selective" : True, "--deep" : True},
120 # Test bug #150361, where depgraph._greedy_slots()
121 # is triggered by --update with AtomArg.
122 ResolverPlaygroundTestCase(
124 options = {"--update" : True},
126 mergelist = ['virtual/jre-1.6.0-r1', 'virtual/jre-1.5.0-r1']),
128 # Recursively traversed virtual dependencies, and their
129 # direct dependencies, are considered to have the same
130 # depth as direct dependencies.
131 ResolverPlaygroundTestCase(
133 options = {"--update" : True, "--deep" : 1},
135 mergelist = ['dev-java/icedtea-6.1-r1', 'dev-java/gcj-jdk-4.5-r1', 'virtual/jdk-1.6.0-r1', 'virtual/jdk-1.5.0-r1', 'virtual/jre-1.6.0-r1', 'virtual/jre-1.5.0-r1']),
137 ResolverPlaygroundTestCase(
139 options = {"--update" : True},
141 mergelist = ['virtual/jre-1.5.0-r1']),
143 ResolverPlaygroundTestCase(
145 options = {"--update" : True},
147 mergelist = ['virtual/jre-1.6.0-r1']),
149 # Test that we don't pull in any unnecessary updates
150 # when --update is not specified, even though we
152 ResolverPlaygroundTestCase(
153 ["dev-java/ant-core"],
154 options = {"--deep" : True},
156 mergelist = ["dev-java/ant-core-1.8"]),
158 ResolverPlaygroundTestCase(
159 ["dev-java/ant-core"],
160 options = {"--update" : True},
162 mergelist = ["dev-java/ant-core-1.8"]),
164 # Recursively traversed virtual dependencies, and their
165 # direct dependencies, are considered to have the same
166 # depth as direct dependencies.
167 ResolverPlaygroundTestCase(
168 ["dev-java/ant-core"],
169 options = {"--update" : True, "--deep" : 1},
171 mergelist = ['dev-java/icedtea-6.1-r1', 'virtual/jdk-1.6.0-r1', 'dev-java/ant-core-1.8']),
173 ResolverPlaygroundTestCase(
175 options = {"--deep" : True},
177 mergelist = ["dev-db/hsqldb-1.8"]),
180 playground = ResolverPlayground(ebuilds=ebuilds, installed=installed,
183 for test_case in test_cases:
184 playground.run_TestCase(test_case)
185 self.assertEqual(test_case.test_success, True, test_case.fail_msg)