summaryrefslogtreecommitdiff
path: root/test/integration/test-apt-mark
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-11-09 15:40:19 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2014-11-09 21:45:55 +0100
commit374f8492e6f109e8427816a8f513e5e8feda9049 (patch)
tree886df5303b11fbde0ea895abc26336bb4705fb91 /test/integration/test-apt-mark
parent7824564bfde681eddf6969174bba7604d6f34848 (diff)
allow uninstalled packages to be put on hold
dpkg wants to know about a package before it can be put on hold, so we have to at least hint about its existance in the available file it "maintaince" to know about such stuff. The simple thing would probably be to just feed all Packages files into dpkg as well, but what would be the point really? Exactly, so we take a shortcut here and just create dummies in the available file if we need to which isn't going to be that common as usually you are holding packages back and not off. Who would have thought that a simple feature like setting a package on hold requires more than 200 lines of codeā€¦ at least with the testcase it is now explicitly tested code.
Diffstat (limited to 'test/integration/test-apt-mark')
-rwxr-xr-xtest/integration/test-apt-mark72
1 files changed, 72 insertions, 0 deletions
diff --git a/test/integration/test-apt-mark b/test/integration/test-apt-mark
new file mode 100755
index 000000000..69e0f933d
--- /dev/null
+++ b/test/integration/test-apt-mark
@@ -0,0 +1,72 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+insertpackage 'unstable' 'bar' 'amd64,i386' '1'
+insertpackage 'unstable' 'uninstalled' 'all' '1'
+insertpackage 'unstable' 'uninstalled-native' 'amd64' '1'
+
+insertinstalledpackage 'foo' 'all' '1'
+insertinstalledpackage 'bar' 'amd64' '1'
+
+setupaptarchive
+
+# dpkg is "installed" by our test framework
+testdpkginstalled dpkg
+
+testnoautopkg() {
+ testempty aptmark showauto
+ testequal 'bar
+dpkg
+foo' aptmark showmanual
+ testequal 'bar
+foo' aptmark showmanual bar foo uninstalled
+}
+testmarkonpkgasauto() {
+ testsuccess aptmark $1 foo
+ testequal 'foo' aptmark showauto
+ testequal 'foo' aptmark showauto foo
+ testequal 'bar
+dpkg' aptmark showmanual
+ testequal 'bar' aptmark showmanual bar
+
+ testsuccess aptmark $2 foo
+ testnoautopkg
+}
+
+testequal 'E: No packages found' aptmark auto
+testequal 'E: No packages found' aptmark manual
+
+testnoautopkg
+testmarkonpkgasauto 'auto' 'manual'
+testmarkonpkgasauto 'markauto' 'unmarkauto'
+
+testnoholdpkg() {
+ testempty aptmark showhold
+ testempty aptmark showholds # typical "typo"
+ testempty aptmark showhold dpkg
+ testempty aptmark showholds dpkg
+}
+testmarkonepkgashold() {
+ testsuccess aptmark hold $1
+ testequal "$1" aptmark showhold
+ testequal "$1" aptmark showholds
+ testsuccess aptmark unhold $1
+ testnoholdpkg
+}
+
+testequal 'E: No packages found' aptmark hold
+testequal 'E: No packages found' aptmark unhold
+
+testnoholdpkg
+testmarkonepkgashold 'foo'
+testmarkonepkgashold 'bar'
+testmarkonepkgashold 'uninstalled'
+testmarkonepkgashold 'uninstalled-native'
+
+testequal 'uninstalled set on hold.' aptmark hold uninstalled
+testequal 'uninstalled-native set on hold.' aptmark hold uninstalled-native