diff options
Diffstat (limited to 'pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py')
-rw-r--r-- | pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py | 61 |
1 files changed, 61 insertions, 0 deletions
diff --git a/pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py b/pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py index 13f7e67e3..846ba0e59 100644 --- a/pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py +++ b/pym/portage/tests/resolver/test_slot_conflict_unsatisfied_deep_deps.py @@ -79,6 +79,7 @@ class SlotConflictUnsatisfiedDeepDepsTestCase(TestCase): ["@world"], options={ "--autounmask": "y", + "--autounmask-backtrack": "y", "--complete-graph": True, "--selective": True, "--deep": 1 @@ -89,11 +90,63 @@ class SlotConflictUnsatisfiedDeepDepsTestCase(TestCase): unsatisfied_deps=["dev-libs/initially-unsatisfied"], success=False), + # With --autounmask-backtrack=y: + #[ebuild N ~] dev-libs/A-2 + #[ebuild N ] dev-libs/C-1 + #[ebuild N ] dev-libs/D-1 + #[ebuild N ] dev-libs/B-1 + # + #The following keyword changes are necessary to proceed: + # (see "package.accept_keywords" in the portage(5) man page for more details) + ## required by dev-libs/C-1::test_repo + ## required by @selected + ## required by @world (argument) + #=dev-libs/A-2 ~x86 + # + #!!! Problems have been detected with your world file + #!!! Please run emaint --check world + # + # + #!!! Ebuilds for the following packages are either all + #!!! masked or don't exist: + #dev-libs/broken + # + #emerge: there are no ebuilds to satisfy "dev-libs/initially-unsatisfied". + #(dependency required by "dev-libs/broken-1::test_repo" [installed]) + #(dependency required by "@selected" [set]) + #(dependency required by "@world" [argument]) + + # Without --autounmask-backtrack=y: + #!!! Multiple package instances within a single package slot have been pulled + #!!! into the dependency graph, resulting in a slot conflict: + # + #dev-libs/A:0 + # + # (dev-libs/A-1:0/0::test_repo, ebuild scheduled for merge) pulled in by + # (no parents that aren't satisfied by other packages in this slot) + # + # (dev-libs/A-2:0/0::test_repo, ebuild scheduled for merge) pulled in by + # >=dev-libs/A-2 required by (dev-libs/C-1:0/0::test_repo, ebuild scheduled for merge) + # ^^ ^ + # + #The following keyword changes are necessary to proceed: + # (see "package.accept_keywords" in the portage(5) man page for more details) + ## required by dev-libs/C-1::test_repo + ## required by @selected + ## required by @world (argument) + #=dev-libs/A-2 ~x86 + # + #emerge: there are no ebuilds to satisfy "dev-libs/initially-unsatisfied". + #(dependency required by "dev-libs/broken-1::test_repo" [installed]) + #(dependency required by "@selected" [set]) + #(dependency required by "@world" [argument]) + # Test --deep = True ResolverPlaygroundTestCase( ["@world"], options={ "--autounmask": "y", + "--autounmask-backtrack": "y", "--complete-graph": True, "--selective": True, "--deep": True @@ -103,6 +156,14 @@ class SlotConflictUnsatisfiedDeepDepsTestCase(TestCase): unstable_keywords=["dev-libs/A-2"], unsatisfied_deps=["dev-libs/initially-unsatisfied"], success=False), + + # The effects of --autounmask-backtrack are the same as the previous test case. + # Both test cases can randomly succeed with --autounmask-backtrack=n, when + # "backtracking due to unsatisfied dep" randomly occurs before the autounmask + # unstable keyword change. It would be possible to eliminate backtracking here + # by recognizing that there are no alternatives to satisfy the dev-libs/broken + # atom in the world file. Then the test cases will consistently succeed with + # --autounmask-backtrack=n. ) playground = ResolverPlayground(ebuilds=ebuilds, installed=installed, |