aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
Diffstat (limited to 'lib/portage/tests/resolver/test_slot_operator_reverse_deps.py')
-rw-r--r--lib/portage/tests/resolver/test_slot_operator_reverse_deps.py113
1 files changed, 113 insertions, 0 deletions
diff --git a/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py
new file mode 100644
index 000000000..ce614a4dc
--- /dev/null
+++ b/lib/portage/tests/resolver/test_slot_operator_reverse_deps.py
@@ -0,0 +1,113 @@
+# Copyright 2016 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 SlotOperatorReverseDepsTestCase(TestCase):
+
+ def testSlotOperatorReverseDeps(self):
+
+ ebuilds = {
+
+ "media-libs/mesa-11.2.2" : {
+ "EAPI": "6",
+ "SLOT": "0",
+ "RDEPEND": ">=sys-devel/llvm-3.6.0:="
+ },
+
+ "sys-devel/clang-3.7.1-r100" : {
+ "EAPI": "6",
+ "SLOT": "0/3.7",
+ "RDEPEND": "~sys-devel/llvm-3.7.1"
+ },
+
+ "sys-devel/clang-3.8.0-r100" : {
+ "EAPI": "6",
+ "SLOT": "0/3.8",
+ "RDEPEND": "~sys-devel/llvm-3.8.0"
+ },
+
+ "sys-devel/llvm-3.7.1-r2" : {
+ "EAPI": "6",
+ "SLOT": "0/3.7.1",
+ "PDEPEND": "=sys-devel/clang-3.7.1-r100"
+ },
+
+ "sys-devel/llvm-3.8.0-r2" : {
+ "EAPI": "6",
+ "SLOT": "0/3.8.0",
+ "PDEPEND": "=sys-devel/clang-3.8.0-r100"
+ },
+
+ }
+
+ installed = {
+
+ "media-libs/mesa-11.2.2" : {
+ "EAPI": "6",
+ "SLOT": "0",
+ "RDEPEND": ">=sys-devel/llvm-3.6.0:0/3.7.1="
+ },
+
+ "sys-devel/clang-3.7.1-r100" : {
+ "EAPI": "6",
+ "SLOT": "0/3.7",
+ "RDEPEND": "~sys-devel/llvm-3.7.1"
+ },
+
+ "sys-devel/llvm-3.7.1-r2" : {
+ "EAPI": "6",
+ "SLOT": "0/3.7.1",
+ "PDEPEND": "=sys-devel/clang-3.7.1-r100"
+ },
+
+ }
+
+ world = ["media-libs/mesa"]
+
+ test_cases = (
+
+ # Test bug #584626, where an llvm update is missed due to
+ # the check_reverse_dependencies function seeing that
+ # updating llvm will break a dependency of the installed
+ # version of clang (though a clang update is available).
+ ResolverPlaygroundTestCase(
+ ["@world"],
+ options = {"--update": True, "--deep": True},
+ success = True,
+ mergelist = [
+ 'sys-devel/llvm-3.8.0-r2',
+ 'sys-devel/clang-3.8.0-r100',
+ 'media-libs/mesa-11.2.2',
+ ],
+ ),
+
+ ResolverPlaygroundTestCase(
+ ["@world"],
+ options = {
+ "--update": True,
+ "--deep": True,
+ "--ignore-built-slot-operator-deps": "y",
+ },
+ success = True,
+ mergelist = [
+ 'sys-devel/llvm-3.8.0-r2',
+ 'sys-devel/clang-3.8.0-r100',
+ ],
+ ),
+
+ )
+
+ playground = ResolverPlayground(ebuilds=ebuilds,
+ installed=installed, world=world, debug=False)
+ 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()