summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDavid Kalnischkies <david@kalnischkies.de>2016-07-15 21:17:11 +0200
committerDavid Kalnischkies <david@kalnischkies.de>2016-07-15 21:59:10 +0200
commit87f99f6fa701d2557811134380c1f232cf07a422 (patch)
tree1ebbbb1ffb490f936aa3bf8b97aea9f9052bebeb
parentf883d2c3675eae2700e4cd1532c1a236cae69a4e (diff)
tests: activate dpkg multi-arch even if test is single arch
Most tests are either multiarch, do not care for the specific architecture or do not interact with dpkg, so really effect by this is only test-external-installation-planner-protocol, but its a general issue that while APT can be told to treat any architecture as native dpkg has the native architecture hardcoded so if we run tests we must make sure that dpkg knows about the architecture we will treat as "native" in apt as otherwise dpkg will refuse to install packages from such an architecture. This reverts f883d2c3675eae2700e4cd1532c1a236cae69a4e as it complicates the test slightly for no practical gain after the generic fix.
-rw-r--r--test/integration/framework24
-rwxr-xr-xtest/integration/test-external-installation-planner-protocol45
2 files changed, 36 insertions, 33 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 21f41aa17..27239cce4 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -482,17 +482,21 @@ configdpkg() {
rm -f rootdir/etc/apt/apt.conf.d/00foreigndpkg
if command dpkg --assert-multi-arch >/dev/null 2>&1 ; then
local ARCHS="$(getarchitectures)"
- if echo "$ARCHS" | grep -E -q '[^ ]+ [^ ]+'; then
- DPKGARCH="$(dpkg --print-architecture)"
- for ARCH in ${ARCHS}; do
- if [ "${ARCH}" != "${DPKGARCH}" ]; then
- if ! dpkg --add-architecture ${ARCH} >/dev/null 2>&1; then
- # old-style used e.g. in Ubuntu-P – and as it seems travis
- echo "DPKG::options:: \"--foreign-architecture\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
- echo "DPKG::options:: \"${ARCH}\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
- fi
+ local DPKGARCH="$(dpkg --print-architecture)"
+ # this ensures that even if multi-arch isn't active in the view
+ # of apt, given that dpkg can't be told which arch is native
+ # the arch apt treats as native might be foreign for dpkg
+ for ARCH in ${ARCHS}; do
+ if [ "${ARCH}" != "${DPKGARCH}" ]; then
+ if ! dpkg --add-architecture ${ARCH} >/dev/null 2>&1; then
+ # old-style used e.g. in Ubuntu-P – and as it seems travis
+ echo "DPKG::options:: \"--foreign-architecture\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
+ echo "DPKG::options:: \"${ARCH}\";" >> rootdir/etc/apt/apt.conf.d/00foreigndpkg
fi
- done
+ fi
+ done
+ # if multi-arch make sure dpkg can detect itself as capable of it
+ if echo "$ARCHS" | grep -E -q '[^ ]+ [^ ]+'; then
if [ "0" = "$(dpkg -l dpkg 2> /dev/null | grep '^i' | wc -l)" ]; then
# dpkg doesn't really check the version as long as it is fully installed,
# but just to be sure we choose one above the required version
diff --git a/test/integration/test-external-installation-planner-protocol b/test/integration/test-external-installation-planner-protocol
index c499c53af..bd3c99c32 100755
--- a/test/integration/test-external-installation-planner-protocol
+++ b/test/integration/test-external-installation-planner-protocol
@@ -2,18 +2,17 @@
set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
-NATIVE="$(command dpkg --print-architecture)"
. "$TESTDIR/framework"
setupenvironment
-configarchitecture "${NATIVE}"
+configarchitecture 'amd64'
-buildsimplenativepackage 'libfoo' "${NATIVE}" '3' 'experimental' 'Multi-Arch: same'
+buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same'
buildsimplenativepackage 'foo' 'all' '3' 'experimental' 'Depends: newstuff'
-buildsimplenativepackage 'foo' 'all' '2' 'unstable' "Depends: libfoo:$NATIVE, stuff
+buildsimplenativepackage 'foo' 'all' '2' 'unstable' 'Depends: libfoo:amd64, stuff
Conflicts: bar, libfoo:i386
-Recommends: unrelated"
-buildsimplenativepackage 'libfoo' "${NATIVE}" '2' 'unstable' 'Multi-Arch: same'
-buildsimplenativepackage 'unrelated-2' "${NATIVE}" '2' 'unstable'
+Recommends: unrelated'
+buildsimplenativepackage 'libfoo' 'amd64' '2' 'unstable' 'Multi-Arch: same'
+buildsimplenativepackage 'unrelated-2' 'amd64' '2' 'unstable'
insertinstalledpackage 'foo' 'all' '1'
insertinstalledpackage 'bar' 'all' '1'
insertinstalledpackage 'stuff' 'all' '1'
@@ -37,12 +36,12 @@ testsuccessequal 'Planner: dump' grep '^Planner: ' "$APT_EDSP_DUMP_FILENAME"
testsuccess aptget install foo -s
testsuccess aptget install foo -y
testsuccess test -r "$EIPPLOG"
-testsuccessequal "Request: EIPP 0.1
-Architecture: ${NATIVE}
-Architectures: ${NATIVE}
-Remove: bar:${NATIVE}
-Install: libfoo:${NATIVE} foo:${NATIVE}
-Planner: internal" head -n 6 "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: bar:amd64
+Install: libfoo:amd64 foo:amd64
+Planner: internal' head -n 6 "$EIPPLOG"
aptinternalplanner < "$EIPPLOG" > planner.log || true
testsuccessequal 'Remove: 6
Unpack: 2
@@ -54,11 +53,11 @@ rm -f "$EIPPLOG"
testsuccess aptget install foo -s --reinstall
testsuccess aptget install foo -y --reinstall
testsuccess test -r "$EIPPLOG"
-testsuccessequal "Request: EIPP 0.1
-Architecture: ${NATIVE}
-Architectures: ${NATIVE}
-ReInstall: foo:${NATIVE}
-Planner: internal" head -n 5 "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+ReInstall: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
aptinternalplanner < "$EIPPLOG" > planner.log || true
testsuccessequal 'Unpack: 4
Configure: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log
@@ -67,10 +66,10 @@ rm -f "$EIPPLOG"
testsuccess aptget purge foo -s
testsuccess aptget purge foo -y
testsuccess test -r "$EIPPLOG"
-testsuccessequal "Request: EIPP 0.1
-Architecture: ${NATIVE}
-Architectures: ${NATIVE}
-Remove: foo:${NATIVE}
-Planner: internal" head -n 5 "$EIPPLOG"
+testsuccessequal 'Request: EIPP 0.1
+Architecture: amd64
+Architectures: amd64
+Remove: foo:amd64
+Planner: internal' head -n 5 "$EIPPLOG"
aptinternalplanner < "$EIPPLOG" > planner.log || true
testsuccessequal 'Remove: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log