summaryrefslogtreecommitdiff
path: root/test/integration
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2014-11-09 21:38:53 +0100
committerDavid Kalnischkies <david@kalnischkies.de>2014-11-18 02:41:20 +0100
commit081c9d442a6d39fb9bc419fe3ce697cc791cb844 (patch)
tree52505e06aa24b79cbec7215dd1c0ef5305050eff /test/integration
parent546dbfc82ad9ff0308b365bca3731a1118b1d251 (diff)
various small additional tests and testcases
Usually they don't provide a lot in terms of what they test, but they help in covering many lines from strictly anecdotal commands (stats, moo) and error messages, so that stuff which really needs to be tested, but isn't is better visible in coverage reports. Git-Dch: Ignore
Diffstat (limited to 'test/integration')
-rw-r--r--test/integration/framework2
-rwxr-xr-xtest/integration/test-00-commands-have-help11
-rwxr-xr-xtest/integration/test-apt-cache124
-rwxr-xr-xtest/integration/test-apt-cli-search3
-rwxr-xr-xtest/integration/test-apt-cli-show11
-rwxr-xr-xtest/integration/test-apt-cli-update7
-rwxr-xr-xtest/integration/test-apt-config36
-rwxr-xr-xtest/integration/test-apt-helper12
-rwxr-xr-xtest/integration/test-apt-mark34
-rwxr-xr-xtest/integration/test-apt-update-stale6
-rwxr-xr-xtest/integration/test-external-dependency-solver-protocol32
11 files changed, 261 insertions, 17 deletions
diff --git a/test/integration/framework b/test/integration/framework
index d28085ee4..c9f62c141 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -300,7 +300,7 @@ getarchitecture() {
}
getarchitectures() {
- echo "$(aptconfig dump | grep APT::Architecture | cut -d'"' -f 2 | sed '/^$/ d' | sort | uniq | tr '\n' ' ')"
+ aptconfig dump --no-empty --format '%v%n' APT::Architecture APT::Architectures | sort -u | tr '\n' ' '
}
getarchitecturesfromcommalist() {
diff --git a/test/integration/test-00-commands-have-help b/test/integration/test-00-commands-have-help
index ebf8b8cfa..bbd1475eb 100755
--- a/test/integration/test-00-commands-have-help
+++ b/test/integration/test-00-commands-have-help
@@ -50,3 +50,14 @@ done
for CMD in 'apt-dump-solver' 'apt-internal-solver'; do
checkoptions "$(echo "$CMD" | tr -d '-')"
done
+
+# in times of need, we all look for super cow to save the day
+testsuccess aptget moo
+testsuccess aptget moo -q=2
+testsuccess aptget moo moo
+testsuccess aptget moo moo -q=2
+testsuccess aptget moo moo --color
+testsuccess aptget moo moo moo
+testsuccess aptget moo moo moo -q=2
+testsuccess aptget moo moo moo moo
+testsuccess aptget moo moo moo moo -q=2
diff --git a/test/integration/test-apt-cache b/test/integration/test-apt-cache
new file mode 100755
index 000000000..f47c0e08b
--- /dev/null
+++ b/test/integration/test-apt-cache
@@ -0,0 +1,124 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+
+setupenvironment
+configarchitecture 'amd64' 'i386'
+
+DESCR='Some description
+ That has multiple lines'
+insertpackage 'unstable' 'fancy' 'all' '1'
+insertpackage 'unstable,installed' 'foo' 'all' '1' 'Depends: bar
+Conflicts: foobar
+Recommends: cool (>= 2) | cooler (<< 5)' "$DESCR"
+insertpackage 'unstable' 'bar' 'all' '1' 'Depends: bar
+Breaks: foo (<< 1)
+Replaces: foo (<< 1)' "$DESCR"
+
+setupaptarchive
+
+# dpkg is installed by our framework
+testdpkginstalled 'dpkg'
+testempty aptcache unmet dpkg
+
+# FIXME: Find some usecase for unmet as it seems kinda useless/broken
+#testsuccess aptcache unmet
+#testsuccess aptcache unmet foo
+
+# not too useful to test, but makes coverage green…
+testsuccess aptcache stats
+cp rootdir/tmp/testsuccess.output stats.output
+testsuccess test -s stats.output
+testsuccess aptcache xvcg foo
+cp rootdir/tmp/testsuccess.output xvcg.output
+testsuccess test -s xvcg.output
+testsuccess aptcache dotty foo
+cp rootdir/tmp/testsuccess.output dotty.output
+testsuccess test -s dotty.output
+# for this, even the sourcecode says it is useless (expect debugging)
+testsuccess aptcache dump
+cp rootdir/tmp/testsuccess.output dump.output
+testsuccess test -s dump.output
+
+testequal 'dpkg
+bar
+fancy
+foo' aptcache pkgnames
+testequal 'bar' aptcache pkgnames bar
+testequal 'fancy
+foo' aptcache pkgnames f
+
+testequal " foo | 1 | file:$(readlink -f .)/aptarchive/ unstable/main amd64 Packages" aptcache madison foo
+
+### depends
+
+testequal 'foo
+ Depends: bar
+ |Recommends: <cool>
+ Recommends: <cooler>
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>' aptcache depends foo
+testequal 'foo
+ Depends: bar
+ Recommends: <cool>
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>' aptcache depends foo -o APT::Cache::ShowOnlyFirstOr=1
+testequal 'foo
+ Depends: bar
+ |Recommends: <cool> (>= 2)
+ Recommends: <cooler> (<< 5)
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>' aptcache depends foo -o APT::Cache::ShowVersion=1
+testequal 'foo
+ Depends: bar
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>' aptcache depends foo --no-recommends
+testequal 'foo
+ Depends: bar' aptcache depends foo --important
+testequal 'foo
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>' aptcache depends foo --important --no-depends --conflicts
+testequal 'foo
+ Depends: bar
+ |Recommends: <cool>
+ Recommends: <cooler>
+ Conflicts: <foobar>
+ Conflicts: <foobar:i386>
+bar
+ Depends: bar
+ Breaks: foo
+ Breaks: <foo:i386>
+ Replaces: foo
+ Replaces: <foo:i386>
+<cool>
+<cooler>
+<foobar>
+<foobar:i386>
+<foo:i386>' aptcache depends foo --recurse
+testequal 'foo
+ Depends: bar
+bar
+ Depends: bar
+ Replaces: foo
+ Replaces: <foo:i386>
+<foo:i386>' aptcache depends foo --recurse --important --replaces
+
+## rdpends
+
+testequal 'foo
+Reverse Depends:
+ bar
+ bar' aptcache rdepends foo
+testequal 'foo
+Reverse Depends:
+ Replaces: bar
+ Breaks: bar' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1
+testequal 'foo
+Reverse Depends:
+ Replaces: bar (<< 1)
+ Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1
+testequal 'foo
+Reverse Depends:
+ Breaks: bar (<< 1)' aptcache rdepends foo -o APT::Cache::ShowDependencyType=1 -o APT::Cache::ShowVersion=1 --important --breaks
diff --git a/test/integration/test-apt-cli-search b/test/integration/test-apt-cli-search
index 8f009d57c..1a28ba4da 100755
--- a/test/integration/test-apt-cli-search
+++ b/test/integration/test-apt-cli-search
@@ -25,6 +25,9 @@ setupaptarchive
APTARCHIVE=$(readlink -f ./aptarchive)
+testequal 'E: You must give at least one search pattern' aptcache search
+testequal 'E: You must give at least one search pattern' apt search
+
# with OP progress
testequal "Sorting...
Full Text Search...
diff --git a/test/integration/test-apt-cli-show b/test/integration/test-apt-cli-show
index 4c8e134d6..930e591e0 100755
--- a/test/integration/test-apt-cli-show
+++ b/test/integration/test-apt-cli-show
@@ -36,3 +36,14 @@ APT-Sources: file:$APTARCHIVE/ unstable/main i386 Packages
Description: Some description
That has multiple lines
" apt show foo
+
+# this is the default, but disabled by the testcases
+testsuccess apt show foo -o Apt::Cmd::Disable-Script-Warning=0
+cp rootdir/tmp/testsuccess.output aptshow.output
+testsuccess grep '^WARNING: ' aptshow.output
+
+if [ "$(id -u)" != '0' ]; then
+ testsuccess apt install foo -s -o APT::Get::Show-User-Simulation-Note=1
+ cp rootdir/tmp/testsuccess.output aptshow.output
+ testsuccess grep '^NOTE: ' aptshow.output
+fi
diff --git a/test/integration/test-apt-cli-update b/test/integration/test-apt-cli-update
index 987bb9adb..83cc94b93 100755
--- a/test/integration/test-apt-cli-update
+++ b/test/integration/test-apt-cli-update
@@ -8,10 +8,17 @@ setupenvironment
configarchitecture "i386"
insertpackage 'unstable' 'foo' 'all' '2.0'
+cp rootdir/var/lib/dpkg/status dpkg.status
insertinstalledpackage 'foo' 'all' '1.0'
setupaptarchive --no-update
APTARCHIVE=$(readlink -f ./aptarchive)
+testequal 'E: The update command takes no arguments' apt update -q arguments
+
testequal "1 package can be upgraded. Run 'apt list --upgradable' to see it." apt update -q
+
+cp dpkg.status rootdir/var/lib/dpkg/status
+insertinstalledpackage 'foo' 'all' '2.0'
+testequal 'All packages are up to date.' apt update -q
diff --git a/test/integration/test-apt-config b/test/integration/test-apt-config
new file mode 100755
index 000000000..2f2ff9d38
--- /dev/null
+++ b/test/integration/test-apt-config
@@ -0,0 +1,36 @@
+#!/bin/sh
+set -e
+
+TESTDIR=$(readlink -f $(dirname $0))
+. $TESTDIR/framework
+
+setupenvironment
+configarchitecture 'amd64'
+
+testsuccess aptconfig dump
+testequal 'APT::Architecture "amd64";' aptconfig dump APT::Architecture
+testempty aptconfig dump config::which::does::not::exist
+
+testequal 'APT::Architectures "";
+APT::Architectures:: "amd64";' aptconfig dump APT::Architectures
+testequal 'APT::Architectures:: "amd64";' aptconfig dump --no-empty APT::Architectures
+testequal 'amd64' aptconfig dump --no-empty --format='%v%n' APT::Architectures
+
+testempty aptconfig shell
+testequal 'E: Arguments not in pairs' aptconfig shell APT::Architecture
+testempty aptconfig shell APT::Architecture ARCH # incorrect order
+testequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture
+
+ROOTDIR="$(readlink -f rootdir)"
+testequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main
+testequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f
+testequal "CONFIG='etc/apt/'" aptconfig shell CONFIG Dir::Etc
+testequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style
+testequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d
+
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+export DEB_BUILD_PROFILES='nodoc stage1'
+testequal 'nodoc
+stage1' aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
+unset DEB_BUILD_PROFILES
+testempty aptconfig dump --no-empty --format='%v%n' APT::Build-Profiles
diff --git a/test/integration/test-apt-helper b/test/integration/test-apt-helper
index 06e497ff7..3c1d393a6 100755
--- a/test/integration/test-apt-helper
+++ b/test/integration/test-apt-helper
@@ -53,7 +53,7 @@ echo "http://some-proxy"
EOF
chmod 755 apt-proxy-detect
echo "Acquire::http::Proxy-Auto-Detect \"$(pwd)/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
-
+
testequal "Using proxy 'http://some-proxy' for URL 'http://www.example.com/'" apthelper auto-detect-proxy http://www.example.com
@@ -64,13 +64,15 @@ echo "https://https-proxy"
EOF
chmod 755 apt-proxy-detect
echo "Acquire::https::Proxy-Auto-Detect \"$(pwd)/apt-proxy-detect\";" > rootdir/etc/apt/apt.conf.d/02proxy-detect
-
- testequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
-
-
+ testequal "Using proxy 'https://https-proxy' for URL 'https://ssl.example.com/'" apthelper auto-detect-proxy https://ssl.example.com
}
test_apt_helper_download
test_apt_helper_detect_proxy
+# test failure modes
+testequal 'E: Invalid operation download' apthelper download
+testequal 'E: Must specify at least one pair url/filename' apthelper download-file
+testequal 'E: Must specify at least one pair url/filename' apthelper download-file http://example.org/
+testequal 'E: Need one URL as argument' apthelper auto-detect-proxy
diff --git a/test/integration/test-apt-mark b/test/integration/test-apt-mark
index 69e0f933d..0f62a12b4 100755
--- a/test/integration/test-apt-mark
+++ b/test/integration/test-apt-mark
@@ -20,21 +20,31 @@ testdpkginstalled dpkg
testnoautopkg() {
testempty aptmark showauto
+ testempty aptcache showauto
testequal 'bar
dpkg
foo' aptmark showmanual
testequal 'bar
foo' aptmark showmanual bar foo uninstalled
}
-testmarkonpkgasauto() {
- testsuccess aptmark $1 foo
+testfooisauto() {
testequal 'foo' aptmark showauto
+ testequal 'foo' aptcache showauto
testequal 'foo' aptmark showauto foo
+ testequal 'foo' aptcache showauto foo
testequal 'bar
dpkg' aptmark showmanual
testequal 'bar' aptmark showmanual bar
+}
+testmarkonpkgasauto() {
+ testsuccess $1 $2 foo
+ testfooisauto
+ testsuccess $1 $2 foo
+ testfooisauto
- testsuccess aptmark $2 foo
+ testsuccess $1 $3 foo
+ testnoautopkg
+ testsuccess $1 $3 foo
testnoautopkg
}
@@ -42,8 +52,9 @@ testequal 'E: No packages found' aptmark auto
testequal 'E: No packages found' aptmark manual
testnoautopkg
-testmarkonpkgasauto 'auto' 'manual'
-testmarkonpkgasauto 'markauto' 'unmarkauto'
+testmarkonpkgasauto 'aptmark' 'auto' 'manual'
+testmarkonpkgasauto 'aptmark' 'markauto' 'unmarkauto'
+testmarkonpkgasauto 'aptget' 'markauto' 'unmarkauto'
testnoholdpkg() {
testempty aptmark showhold
@@ -51,10 +62,19 @@ testnoholdpkg() {
testempty aptmark showhold dpkg
testempty aptmark showholds dpkg
}
-testmarkonepkgashold() {
- testsuccess aptmark hold $1
+testpkgonhold() {
testequal "$1" aptmark showhold
testequal "$1" aptmark showholds
+ testequal "$1" aptmark showhold $1
+ testequal "$1" aptmark showholds $1
+}
+testmarkonepkgashold() {
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark hold $1
+ testpkgonhold $1
+ testsuccess aptmark unhold $1
+ testnoholdpkg
testsuccess aptmark unhold $1
testnoholdpkg
}
diff --git a/test/integration/test-apt-update-stale b/test/integration/test-apt-update-stale
index 52f94591f..277aa5b09 100755
--- a/test/integration/test-apt-update-stale
+++ b/test/integration/test-apt-update-stale
@@ -14,9 +14,11 @@ configarchitecture "i386"
insertpackage 'unstable' 'foo' 'all' '1.0'
-setupaptarchive
+setupaptarchive --no-update
changetowebserver
-aptget update -qq
+
+echo "Acquire::Languages \"none\";" > rootdir/etc/apt/apt.conf.d/00nolanguages
+testsuccess aptget update
listcurrentlistsdirectory > lists.before
# insert new version
diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol
index 07d2441b6..fd68578c5 100755
--- a/test/integration/test-external-dependency-solver-protocol
+++ b/test/integration/test-external-dependency-solver-protocol
@@ -12,7 +12,10 @@ insertinstalledpackage 'stuff' 'all' '1'
insertpackage 'unstable' 'cool' 'all' '2' 'Multi-Arch: foreign'
insertpackage 'unstable' 'stuff' 'all' '2' 'Multi-Arch: foreign'
insertpackage 'unstable' 'coolstuff' 'i386,amd64' '2' 'Depends: cool, stuff'
-insertpackage 'unstable' 'awesome' 'all' '2' 'Multi-Arch: foreign'
+insertpackage 'unstable' 'awesome' 'all' '2' 'Multi-Arch: foreign
+Conflicts: badstuff'
+insertpackage 'unstable' 'badstuff' 'all' '2' 'Multi-Arch: foreign
+Conflicts: awesome'
insertpackage 'unstable' 'awesomecoolstuff' 'i386' '2' 'Depends: coolstuff, awesome'
insertpackage 'experimental' 'cool' 'all' '3' 'Multi-Arch: foreign'
@@ -44,6 +47,14 @@ The following NEW packages will be installed:
Inst coolstuff (3 experimental [amd64])
Conf coolstuff (3 experimental [amd64])' aptget install --solver apt coolstuff -s
+testequal 'Reading package lists...
+Building dependency tree...
+Execute external solver...
+The following packages will be REMOVED:
+ cool*
+0 upgraded, 0 newly installed, 1 to remove and 1 not upgraded.
+Purg cool [1]' aptget purge --solver apt cool -s
+
testsuccess aptget install awesomecoolstuff:i386 -s
testsuccess aptget install --solver apt awesomecoolstuff:i386 -s
@@ -57,9 +68,13 @@ testsuccess aptget dist-upgrade -s --solver apt
testsuccess aptget upgrade -s
testsuccess aptget upgrade -s --solver apt
+testfailure aptget install awesome badstuff -s
+testfailure aptget install awesome badstuff -s --solver apt
+testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output
+
configarchitecture 'armel'
msgtest 'Test direct calling is okay for' 'apt-internal-solver'
-cat /tmp/dump.edsp | aptinternalsolver > solver.result 2>&1 || true
+cat /tmp/dump.edsp | aptinternalsolver -q=0 > solver.result 2>&1 || true
if [ "$(tail -n2 solver.result | head -n1 )" = "Message: Done" ]; then
msgpass
else
@@ -69,3 +84,16 @@ fi
rm -f /tmp/dump.edsp
testfailure aptget install --solver apt awesomecoolstuff:i386 -s
+
+testsuccess aptinternalsolver scenario
+testequal 'Package: stuff
+Source: stuff
+Architecture: all
+Version: 1
+Installed: yes
+APT-ID: 2
+Priority: optional
+Section: other
+APT-Pin: 100
+APT-Candidate: yes
+' aptinternalsolver scenario stuff