dc670052e8189f8941fb6ffcbfd88173052e3d7a
[portage.git] / pym / portage / tests / resolver / test_depth.py
1 # Copyright 2011 Gentoo Foundation
2 # Distributed under the terms of the GNU General Public License v2
3
4 from portage.tests import TestCase
5 from portage.tests.resolver.ResolverPlayground import (ResolverPlayground,
6         ResolverPlaygroundTestCase)
7
8 class ResolverDepthTestCase(TestCase):
9
10         def testResolverDepth(self):
11
12                 ebuilds = {
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"},
17                         "dev-libs/C-1": {},
18                         "dev-libs/C-2": {},
19                         }
20
21                 installed = {
22                         "dev-libs/A-1": {"RDEPEND" : "dev-libs/B"},
23                         "dev-libs/B-1": {"RDEPEND" : "dev-libs/C"},
24                         "dev-libs/C-1": {},
25                         }
26
27                 world = ["dev-libs/A"]
28
29                 test_cases = (
30                         ResolverPlaygroundTestCase(
31                                 ["dev-libs/A"],
32                                 options = {"--update": True, "--deep": 0},
33                                 success = True,
34                                 mergelist = ["dev-libs/A-2"]),
35
36                         ResolverPlaygroundTestCase(
37                                 ["dev-libs/A"],
38                                 options = {"--update": True, "--deep": 1},
39                                 success = True,
40                                 mergelist = ["dev-libs/B-2", "dev-libs/A-2"]),
41
42                         ResolverPlaygroundTestCase(
43                                 ["dev-libs/A"],
44                                 options = {"--update": True, "--deep": 2},
45                                 success = True,
46                                 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
47
48                         ResolverPlaygroundTestCase(
49                                 ["@world"],
50                                 options = {"--update": True, "--deep": True},
51                                 success = True,
52                                 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
53
54                         ResolverPlaygroundTestCase(
55                                 ["@world"],
56                                 options = {"--emptytree": True},
57                                 success = True,
58                                 mergelist = ["dev-libs/C-2", "dev-libs/B-2", "dev-libs/A-2"]),
59
60                         ResolverPlaygroundTestCase(
61                                 ["@world"],
62                                 options = {"--selective": True, "--deep": True},
63                                 success = True,
64                                 mergelist = []),
65
66                         ResolverPlaygroundTestCase(
67                                 ["dev-libs/A"],
68                                 options = {"--deep": 2},
69                                 success = True,
70                                 mergelist = ["dev-libs/A-2"]),
71                         )
72
73                 playground = ResolverPlayground(ebuilds=ebuilds, installed=installed,
74                         world=world)
75                 try:
76                         for test_case in test_cases:
77                                 playground.run_TestCase(test_case)
78                                 self.assertEqual(test_case.test_success, True, test_case.fail_msg)
79                 finally:
80                         playground.cleanup()