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 = ['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']),
128 ResolverPlaygroundTestCase(
130 options = {"--update" : True},
132 mergelist = ['dev-java/gcj-jdk-4.5-r1', 'virtual/jdk-1.5.0-r1', 'virtual/jre-1.5.0-r1']),
134 ResolverPlaygroundTestCase(
136 options = {"--update" : True},
138 mergelist = ['dev-java/icedtea-6.1-r1', 'virtual/jdk-1.6.0-r1', 'virtual/jre-1.6.0-r1']),
140 # Test that we don't pull in any unnecessary updates
141 # when --update is not specified, even though we
143 ResolverPlaygroundTestCase(
144 ["dev-java/ant-core"],
145 options = {"--deep" : True},
147 mergelist = ["dev-java/ant-core-1.8"]),
149 # FIXME: pulls in unwanted updates without --deep: ['dev-java/icedtea-6.1-r1', 'virtual/jdk-1.6.0-r1', 'dev-java/ant-core-1.8']
150 #ResolverPlaygroundTestCase(
151 # ["dev-java/ant-core"],
152 # options = {"--update" : True},
154 # mergelist = ["dev-java/ant-core-1.8"]),
156 ResolverPlaygroundTestCase(
158 options = {"--deep" : True},
160 mergelist = ["dev-db/hsqldb-1.8"]),
163 playground = ResolverPlayground(ebuilds=ebuilds, installed=installed,
166 for test_case in test_cases:
167 playground.run_TestCase(test_case)
168 self.assertEqual(test_case.test_success, True, test_case.fail_msg)