blob: 2421c531f5c49e8a2618db782bcebee38e92edc8 [file] [log] [blame]
# Copyright 2014 Gentoo Foundation
# Distributed under the terms of the GNU General Public License v2
from portage.tests import TestCase
from portage.tests.resolver.ResolverPlayground import (
ResolverPlayground, ResolverPlaygroundTestCase)
class ChangedDepsTestCase(TestCase):
def testChangedDeps(self):
ebuilds = {
"app-misc/A-0": {
"DEPEND": "app-misc/B",
"RDEPEND": "app-misc/B",
},
"app-misc/B-0": {
}
}
binpkgs = {
"app-misc/A-0": {},
}
installed = {
"app-misc/A-0": {},
}
world= (
"app-misc/A",
)
test_cases = (
# --dynamic-deps=n causes the original deps to be respected
ResolverPlaygroundTestCase(
["@world"],
success = True,
options = {
"--update": True,
"--deep": True,
"--dynamic-deps": "n",
"--usepkg": True,
},
mergelist = []
),
# --dynamic-deps causes app-misc/B to get pulled in
ResolverPlaygroundTestCase(
["@world"],
success = True,
options = {
"--update": True,
"--deep": True,
"--usepkg": True,
},
mergelist = ["app-misc/B-0"]
),
# --changed-deps causes app-misc/A to be rebuilt
ResolverPlaygroundTestCase(
["@world"],
success = True,
options = {
"--update": True,
"--deep": True,
"--changed-deps": "y",
"--usepkg": True,
},
mergelist = ["app-misc/B-0", "app-misc/A-0"]
),
# --usepkgonly prevents automatic --binpkg-changed-deps
ResolverPlaygroundTestCase(
["app-misc/A"],
success = True,
options = {
"--changed-deps": "y",
"--usepkgonly": True,
},
mergelist = ["[binary]app-misc/A-0"]
),
# Test automatic --binpkg-changed-deps, which cases the
# binpkg with stale deps to be ignored (with warning
# message)
ResolverPlaygroundTestCase(
["app-misc/A"],
success = True,
options = {
"--usepkg": True,
},
mergelist = ["app-misc/B-0", "app-misc/A-0"]
),
)
test_cases = (
# Forcibly disable --binpkg-changed-deps, which causes
# --changed-deps to be overridden by --binpkg-changed-deps
ResolverPlaygroundTestCase(
["app-misc/A"],
success = True,
options = {
"--binpkg-changed-deps": "n",
"--changed-deps": "y",
"--usepkg": True,
},
mergelist = ["[binary]app-misc/A-0"]
),
)
playground = ResolverPlayground(debug=False, ebuilds=ebuilds,
binpkgs=binpkgs, installed=installed, world=world)
try:
for test_case in test_cases:
playground.run_TestCase(test_case)
self.assertEqual(test_case.test_success,
True, test_case.fail_msg)
finally:
playground.cleanup()