summaryrefslogtreecommitdiff
path: root/test/integration/test-apt-never-markauto-sections
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2015-08-10 14:44:14 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2015-08-10 17:27:59 +0200
commit7c2cc4a7bc999c8e07fba607354bfaa3b09118f9 (patch)
tree52a42b23caf8fa83ff4979bf39116a4dbe17e6a6 /test/integration/test-apt-never-markauto-sections
parent22df31be37d56c07ed029f5a4d5041f21070d2d6 (diff)
move APT::Never-MarkAuto-Sections handling to MarkDelete
Having the handling in MarkInstall means that it just effects installation of the metapackage, but if the dependencies change the new dependencies aren't protected (and the old dependencies are still protected for no 'reason'). Having it in MarkDelete means that if a metapackage is sheduled for removal all its currently installed dependencies are marked as manual, which helps against both as in this case there is no new/old and additionally if a user decides the installation of a metapackage was wrong he can just remove it explicitely avoid the manual marking entirely.
Diffstat (limited to 'test/integration/test-apt-never-markauto-sections')
-rwxr-xr-xtest/integration/test-apt-never-markauto-sections60
1 files changed, 20 insertions, 40 deletions
diff --git a/test/integration/test-apt-never-markauto-sections b/test/integration/test-apt-never-markauto-sections
index 6c88c69fa..a469b4c15 100755
--- a/test/integration/test-apt-never-markauto-sections
+++ b/test/integration/test-apt-never-markauto-sections
@@ -9,22 +9,6 @@ configarchitecture 'amd64' 'i386'
aptconfig dump --no-empty --format '%v%n' APT::Never-MarkAuto-Sections > nevermarkauto.sections
testsuccess grep '^metapackages$' nevermarkauto.sections
-# this is a very crude regression test, not a "this is how it should be" test:
-# In theory mydesktop-core and texteditor should be marked as manual, but
-# texteditor is installed as a dependency of bad-texteditor, not of
-# mydesktop-core and mydesktop-core is removed while bad-texteditor is
-# installed losing the manual bit as the problem resolver will later decide to
-# drop bad-texteditor and re-instate mydesktop-core which is considered an
-# auto-install at that point (in theory the never-auto handling should be
-# copied to this place – as to the many other places dependencies are resolved
-# 'by hand' instead of via MarkInstall AutoInst…
-#
-# Both could be fixed if apt would figure out early that installing
-# bad-texteditor is a bad idea and eventually it should (as mydesktop-core is
-# a direct descendant of mydesktop which was a user-request mydesktop-core should
-# be as protected from removal as mydesktop is), but this is hard in the general case
-# as with more or-groups and provides you can produce 'legal' examples for this.
-
buildsimplenativepackage 'mydesktop' 'all' '1' 'unstable' 'Depends: mydesktop-core, foreignpkg
Recommends: notavailable' '' 'metapackages'
buildsimplenativepackage 'mydesktop-core' 'amd64' '1' 'unstable' 'Depends: bad-texteditor | texteditor, browser (>= 42), nosection, foreignpkg
@@ -45,21 +29,21 @@ testequal 'dpkg' aptmark showmanual
testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
-testequal 'browser
-dpkg
-foreignpkg:i386
-mydesktop
-nosection' aptmark showmanual
-testmarkedauto 'mydesktop-core' 'texteditor'
+testmarkedmanual 'dpkg' 'mydesktop'
+testmarkedauto 'mydesktop-core' 'foreignpkg:i386' 'texteditor' 'browser' 'nosection'
+# if the remove is from a user, don't do manual-bit passing
testequal 'Reading package lists...
Building dependency tree...
Reading state information...
The following packages will be REMOVED:
- mydesktop mydesktop-core texteditor
-0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
+ browser foreignpkg:i386 mydesktop mydesktop-core nosection texteditor
+0 upgraded, 0 newly installed, 6 to remove and 0 not upgraded.
Remv mydesktop [1]
Remv mydesktop-core [1]
+Remv browser [42]
+Remv foreignpkg:i386 [1]
+Remv nosection [1]
Remv texteditor [1]' aptget autoremove mydesktop -s
testequal 'Reading package lists...
@@ -70,37 +54,33 @@ The following packages will be REMOVED:
0 upgraded, 0 newly installed, 3 to remove and 0 not upgraded.
Remv mydesktop [1]
Remv mydesktop-core [1]
-Remv texteditor [1]' aptget autoremove texteditor -s
+Remv texteditor [1]' aptget autoremove texteditor -s #-o Debug::pkgDepCache::AutoInstall=1 -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1
testsuccess aptget autoremove texteditor -y
testdpkgnotinstalled mydesktop mydesktop-core texteditor
testdpkginstalled browser
-testequal 'browser
-dpkg
-foreignpkg:i386
-nosection' aptmark showmanual
+testmarkedmanual 'browser' 'dpkg' 'foreignpkg:i386' 'nosection'
testmarkedauto
# test that installed/upgraded auto-pkgs are not set to manual
testsuccess aptget install browser=41 -y --force-yes
-testequal 'browser
-dpkg
-foreignpkg:i386
-nosection' aptmark showmanual
+testmarkedmanual 'browser' 'dpkg' 'foreignpkg:i386' 'nosection'
testmarkedauto
testsuccess aptmark auto browser
testmarkedauto 'browser'
testsuccess aptmark auto nosection
testmarkedauto 'browser' 'nosection'
-testequal 'dpkg
-foreignpkg:i386' aptmark showmanual
+testmarkedmanual 'dpkg' 'foreignpkg:i386'
+
+# nosection should be auto, not manual, but is marked as such by the resolver
+# removing mydesktop-core temporally… the resolver should be figuring out here
+# that there is no point of removing mydesktop-core as its an unavoidable
+# dependency of the user-requested mydesktop
-testsuccess aptget install mydesktop -y
+testsuccess aptget install mydesktop -y -o Debug::pkgProblemResolver=1 -o Debug::pkgDepCache::Marker=1 -o Debug::pkgDepCache::AutoInstall=1
-testequal 'dpkg
-foreignpkg:i386
-mydesktop' aptmark showmanual
-testmarkedauto 'browser' 'nosection' 'mydesktop-core' 'texteditor'
+testmarkedmanual 'dpkg' 'foreignpkg:i386' 'mydesktop' 'nosection'
+testmarkedauto 'browser' 'mydesktop-core' 'texteditor'