From ae23e53f99ea0b7920744a7303fdee64796b7cce Mon Sep 17 00:00:00 2001 From: David Kalnischkies Date: Mon, 27 Apr 2020 13:51:46 +0200 Subject: Protect a package while resolving in MarkInstall MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Strange things happen if while resolving the dependencies of a package said dependencies want to remove the package. The allow-scores test e.g. removed the preferred alternative in favor of the last one now that they were exclusive. In our or-group for Recommends we would "just" not statisfy the Recommends and for Depends we engage the ProblemResolver… --- .../test-allow-scores-for-all-dependency-types | 34 ++++------------------ .../test-explore-or-groups-in-markinstall | 14 +++++++++ 2 files changed, 19 insertions(+), 29 deletions(-) (limited to 'test') diff --git a/test/integration/test-allow-scores-for-all-dependency-types b/test/integration/test-allow-scores-for-all-dependency-types index 9b300b7a7..b8a9ed3ea 100755 --- a/test/integration/test-allow-scores-for-all-dependency-types +++ b/test/integration/test-allow-scores-for-all-dependency-types @@ -116,42 +116,18 @@ Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned testsuccessequal 'Reading package lists... Building dependency tree... The following additional packages will be installed: - foo -The following packages will be REMOVED: bar -The following NEW packages will be installed: - baz -The following packages will be upgraded: - foo -1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. -Remv bar [1] -Inst foo [1] (2 versioned [amd64]) -Inst baz (2 versioned [amd64]) -Conf foo (2 versioned [amd64]) -Conf baz (2 versioned [amd64])' aptget install baz -st versioned - -testsuccessequal 'Reading package lists... -Building dependency tree... -The following NEW packages will be installed: - baz -0 upgraded, 1 newly installed, 0 to remove and 2 not upgraded. -Inst baz (2 unversioned [amd64]) -Conf baz (2 unversioned [amd64])' aptget install baz -st unversioned -testsuccessequal 'Reading package lists... -Building dependency tree... -The following additional packages will be installed: - foo The following packages will be REMOVED: - bar + foo The following NEW packages will be installed: baz The following packages will be upgraded: - foo + bar 1 upgraded, 1 newly installed, 1 to remove and 0 not upgraded. -Remv bar [1] -Inst foo [1] (2 versioned [amd64]) +Remv foo [1] +Inst bar [1] (2 versioned [amd64]) Inst baz (2 versioned [amd64]) -Conf foo (2 versioned [amd64]) +Conf bar (2 versioned [amd64]) Conf baz (2 versioned [amd64])' aptget install baz -st versioned # recreating the exact situation is hard, so we pull tricks to get the score diff --git a/test/integration/test-explore-or-groups-in-markinstall b/test/integration/test-explore-or-groups-in-markinstall index 259155854..5669e47b3 100755 --- a/test/integration/test-explore-or-groups-in-markinstall +++ b/test/integration/test-explore-or-groups-in-markinstall @@ -15,6 +15,10 @@ insertpackage 'unstable' 'bad-level0' 'all' '1' 'Depends: unneeded, unknown' insertpackage 'unstable' 'bad-level1' 'all' '1' 'Depends: bad-level0' insertpackage 'unstable' 'bad-upgrade-level0' 'all' '2' 'Depends: unneeded, unknown' insertpackage 'unstable' 'bad-upgrade-level1' 'all' '2' 'Depends: bad-upgrade-level0 (>= 2)' +insertpackage 'unstable' 'bad-conflict-level0' 'all' '1' 'Depends: unneeded +Conflicts: bad-conflict-level2' +insertpackage 'unstable' 'bad-conflict-level1' 'all' '1' 'Depends: bad-conflict-level0' +insertpackage 'unstable' 'bad-conflict-level2' 'all' '1' 'Depends: bad-conflict-level1' insertinstalledpackage 'upgrade' 'all' '1' insertinstalledpackage 'bad-upgrade' 'all' '1' @@ -29,6 +33,8 @@ insertfoos() { insertpackage 'unstable' "foo-${1}-upgrade-level0" 'all' '1' "${2}: bad-upgrade (>= 2) | okay | upgrade (>= 2) | later" insertpackage 'unstable' "foo-${1}-upgrade-level1" 'all' '1' "${2}: bad-upgrade-level0 (>= 2) | bad-upgrade-level0 (>= 2) | bad-level0 | okay | upgrade (>= 2) | later" insertpackage 'unstable' "foo-${1}-upgrade-level2" 'all' '1' "${2}: bad-upgrade-level1 (>= 2) | bad-upgrade-level1 (>= 2) | bad-level1 | okay | upgrade (>= 2) | later" + + insertpackage 'unstable' "foo-${1}-conflict" 'all' '1' "${2}: unknown | bad-conflict-level2 | okay | later" } insertfoos 'd' 'Depends' insertfoos 'r' 'Recommends' @@ -65,6 +71,14 @@ The following packages will be upgraded: upgrade 1 upgraded, 1 newly installed, 0 to remove and $((2-${level})) not upgraded." apt install foo-${1}-upgrade-level${level} -s done + + testsuccessheadequal 7 "Reading package lists... +Building dependency tree... +The following additional packages will be installed: + okay +The following NEW packages will be installed: + foo-${1}-conflict okay +0 upgraded, 2 newly installed, 0 to remove and 3 not upgraded." apt install foo-${1}-conflict -s } checkfoos 'd' 'Depends' checkfoos 'r' 'Recommends' -- cgit v1.2.3