summaryrefslogtreecommitdiff
path: root/test
diff options
context:
space:
mode:
authorJulian Andres Klode <jak@debian.org>2016-08-27 00:31:03 +0200
committerJulian Andres Klode <jak@debian.org>2016-08-27 00:31:03 +0200
commit6a68315e938eb2611806658828ecea86805822e7 (patch)
tree5ff552cf0e6bac9a35bedaf544cb19332663fa70 /test
parent75d238ba66576c04f257e9d7c0a6995721f1441d (diff)
parent01d207a5076b6fc37a064645b13f2c6550f58b94 (diff)
Merge branch 'portability/freebsd'
Diffstat (limited to 'test')
-rw-r--r--test/integration/framework122
-rwxr-xr-xtest/integration/run-tests6
-rwxr-xr-xtest/integration/test-apt-config2
-rwxr-xr-xtest/integration/test-apt-ftparchive-cachedb-lp127446611
-rwxr-xr-xtest/integration/test-apt-get-changelog6
-rwxr-xr-xtest/integration/test-authentication-basic2
-rwxr-xr-xtest/integration/test-bug-661537-build-profiles-support2
-rwxr-xr-xtest/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch2
-rwxr-xr-xtest/integration/test-bug-769609-triggers-still-pending-after-run12
-rwxr-xr-xtest/integration/test-external-dependency-solver-protocol4
-rwxr-xr-xtest/integration/test-kernel-helper-autoremove4
-rwxr-xr-xtest/integration/test-no-fds-leaked-to-maintainer-scripts7
-rw-r--r--test/interactive-helper/test_fileutl.cc1
13 files changed, 120 insertions, 61 deletions
diff --git a/test/integration/framework b/test/integration/framework
index 0daf776f5..62720fedd 100644
--- a/test/integration/framework
+++ b/test/integration/framework
@@ -31,7 +31,6 @@ if [ "${MSGCOLOR:-YES}" = 'YES' ]; then
fi
fi
-
if [ "$MSGCOLOR" != 'NO' ]; then
CERROR="\033[1;31m" # red
CWARNING="\033[1;33m" # yellow
@@ -196,6 +195,9 @@ aptinternalplanner() { runapt "${APTINTERNALPLANNER}" "$@"; }
dpkg() {
"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
}
+dpkg_version() {
+ command perl -MDpkg -E 'say $Dpkg::PROGVERSION'
+}
dpkgcheckbuilddeps() {
command dpkg-checkbuilddeps --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@"
}
@@ -276,8 +278,13 @@ find_project_binary_dir() {
fi
}
setupenvironment() {
+ # Next check needs a gnu stat, let's figure that out early.
+ stat=stat
+ if command -v gnustat >/dev/null 2>&1; then
+ stat=gnustat
+ fi
# privilege dropping and testing doesn't work if /tmp isn't world-writeable (as e.g. with libpam-tmpdir)
- if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$(stat --format '%a' "$TMPDIR")" != '1777' ]; then
+ if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$($stat --format '%a' "$TMPDIR")" != '1777' ]; then
unset TMPDIR
fi
TMPWORKINGDIRECTORY="$(mktemp -d)"
@@ -290,12 +297,24 @@ setupenvironment() {
fi
msgninfo "Preparing environment for ${0##*/} in ${TMPWORKINGDIRECTORY}…"
+ # Setup coreutils on BSD systems
+ mkdir "${TMPWORKINGDIRECTORY}/bin"
+ for prefix in gnu g; do
+ for command in stat touch sed cp tr sha1sum sha256sum md5sum sha512sum grep date wc chmod head readlink tar expr base64; do
+ if command -v $prefix$command 2>/dev/null >/dev/null; then
+ [ -e "${TMPWORKINGDIRECTORY}/bin/$command" ] || ln -sf $(command -v $prefix$command) "${TMPWORKINGDIRECTORY}/bin/$command"
+ fi
+ done
+ done
+ export PATH="${TMPWORKINGDIRECTORY}/bin/:$PATH"
+
+
mkdir -m 700 "${TMPWORKINGDIRECTORY}/downloaded"
if [ "$(id -u)" = '0' ]; then
# relax permissions so that running as root with user switching works
umask 022
chmod 711 "$TMPWORKINGDIRECTORY"
- chown _apt:root "${TMPWORKINGDIRECTORY}/downloaded"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/downloaded"
fi
TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
@@ -352,6 +371,11 @@ setupenvironment() {
ln -s "${TMPWORKINGDIRECTORY}/keys/joesixpack.pub" rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc\";" >> aptconfig.conf
+ echo "Dir::State \"var/lib/apt\";" >> aptconfig.conf
+ echo "Dir::Cache \"var/cache/apt\";" >> aptconfig.conf
+ echo "Dir::Etc \"etc/apt\";" >> aptconfig.conf
+ echo "Dir::Log \"var/log/apt\";" >> aptconfig.conf
echo "APT::Get::Show-User-Simulation-Note \"false\";" >> aptconfig.conf
echo "Dir::Bin::Methods \"${TMPWORKINGDIRECTORY}/rootdir/usr/lib/apt/methods\";" >> aptconfig.conf
# either store apt-key were we can access it, even if we run it as a different user
@@ -386,11 +410,13 @@ EOF
cp "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
exec fakeroot '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
--log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
--force-not-root --force-bad-path "\$@"
EOF
cat >> "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" <<EOF
exec fakeroot gdb --quiet -ex run '${DPKG:-dpkg}' --args '${DPKG:-dpkg}' --root='${TMPWORKINGDIRECTORY}/rootdir' \\
+ --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" \\
--log='${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log' \\
--force-not-root --force-bad-path "\$@"
EOF
@@ -416,7 +442,7 @@ EOF
cp "${TESTDIRECTORY}/apt.pem" "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
if [ "$(id -u)" = '0' ]; then
- chown _apt:root "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem"
fi
echo "Acquire::https::CaInfo \"${TMPWORKINGDIRECTORY}/rootdir/etc/webserver.pem\";" > rootdir/etc/apt/apt.conf.d/99https
echo "Apt::Cmd::Disable-Script-Warning \"1\";" > rootdir/etc/apt/apt.conf.d/apt-binary
@@ -428,16 +454,13 @@ EOF
# create some files in /tmp and look at user/group to get what this means
TEST_DEFAULT_USER="$(id -un)"
- if [ "$(uname)" = 'GNU/kFreeBSD' ]; then
- TEST_DEFAULT_GROUP='root'
- else
- TEST_DEFAULT_GROUP="$(id -gn)"
- fi
+ touch "${TMPWORKINGDIRECTORY}/test-file"
+ TEST_DEFAULT_GROUP=$(stat --format '%G' "${TMPWORKINGDIRECTORY}/test-file")
# cleanup the environment a bit
# prefer our apt binaries over the system apt binaries
export PATH="${BUILDDIRECTORY}:${PATH}:/usr/local/sbin:/usr/sbin:/sbin"
- export LC_ALL=C.UTF-8
+ export LC_ALL=C
unset LANGUAGE APT_CONFIG
unset GREP_OPTIONS DEB_BUILD_PROFILES
unset http_proxy HTTP_PROXY https_proxy HTTPS_PROXY no_proxy
@@ -500,7 +523,15 @@ configdpkg() {
fi
fi
rm -f rootdir/etc/apt/apt.conf.d/00foreigndpkg
- if command dpkg --assert-multi-arch >/dev/null 2>&1 ; then
+ # if multi-arch make sure dpkg can detect itself as capable of it
+ if getarchitectures | 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
+ insertinstalledpackage 'dpkg' "all" '1.16.2+fake'
+ fi
+ fi
+ if dpkg --assert-multi-arch >/dev/null 2>&1 ; then
local ARCHS="$(getarchitectures)"
local DPKGARCH="$(dpkg --print-architecture)"
# this ensures that even if multi-arch isn't active in the view
@@ -515,14 +546,6 @@ configdpkg() {
fi
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
- insertinstalledpackage 'dpkg' "all" '1.16.2+fake'
- fi
- fi
fi
}
@@ -568,7 +591,11 @@ int execvp(const char *file, char *const argv[]) {
return func_execvp(newfile, argv);
}
EOF
- testempty --nomsg gcc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl
+ if cc -ldl 2>&1 | grep -q dl; then
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c
+ else
+ testempty --nomsg cc -Wall -Wextra -fPIC -shared -o noopchroot.so noopchroot.c -ldl
+ fi
}
configcompression() {
if [ "$1" = 'ALL' ]; then
@@ -626,10 +653,10 @@ _setupsimplenativepackage() {
local VERSION="$3"
local RELEASE="${4:-unstable}"
local DEPENDENCIES="$5"
- local DESCRIPTION="${6:-"an autogenerated dummy ${NAME}=${VERSION}/${RELEASE}
+ local DESCRIPTION="${6:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASE}
If you find such a package installed on your system,
something went horribly wrong! They are autogenerated
- und used only by testcases and serve no other purpose…"}"
+ und used only by testcases and serve no other purpose…}"
local SECTION="${7:-others}"
local PRIORITY="${8:-optional}"
@@ -662,7 +689,7 @@ Standards-Version: 3.9.3"
if [ "$SECTION" != '<none>' ]; then
echo "Section: $SECTION"
fi
- local BUILDDEPS="$(echo "$DEPENDENCIES" | grep '^Build-')"
+ local BUILDDEPS="$(printf "%b\n" "$DEPENDENCIES" | grep '^Build-')"
test -z "$BUILDDEPS" || echo "$BUILDDEPS"
echo "
Package: $NAME"
@@ -672,21 +699,33 @@ Package: $NAME"
else
echo "Architecture: any"
fi
- local DEPS="$(echo "$DEPENDENCIES" | grep -v '^Build-')"
+ local DEPS="$(printf "%b\n" "$DEPENDENCIES" | grep -v '^Build-')"
test -z "$DEPS" || echo "$DEPS"
- echo "Description: $DESCRIPTION"
+ printf "%b\n" "Description: $DESCRIPTION"
} > "${BUILDDIR}/debian/control"
echo '3.0 (native)' > "${BUILDDIR}/debian/source/format"
}
+make_tiny_rules() {
+ local OUT="$1"
+ if command -v gmake >/dev/null 2>&1; then
+ [ -e ${TMPWORKINGDIRECTORY}/bin/make ] || ln -s $(command -v gmake) ${TMPWORKINGDIRECTORY}/bin/make
+ echo "#!${TMPWORKINGDIRECTORY}/bin/make -f" > "$OUT"
+ else
+ echo '#!/usr/bin/make -f' > "$OUT"
+ fi
+ echo '%:' >> "$OUT"
+ echo ' dh $@' >> "$OUT"
+}
+
setupsimplenativepackage() {
_setupsimplenativepackage "$@"
local NAME="$1"
local VERSION="$3"
local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
test -e "${BUILDDIR}/debian/compat" || echo '7' > "${BUILDDIR}/debian/compat"
- test -e "${BUILDDIR}/debian/rules" || cp /usr/share/doc/debhelper/examples/rules.tiny "${BUILDDIR}/debian/rules"
+ test -e "${BUILDDIR}/debian/rules" || make_tiny_rules "${BUILDDIR}/debian/rules"
}
buildsimplenativepackage() {
@@ -844,10 +883,10 @@ insertpackage() {
local VERSION="$4"
local DEPENDENCIES="$5"
local PRIORITY="${6:-optional}"
- local DESCRIPTION="${7:-"an autogenerated dummy ${NAME}=${VERSION}/${RELEASES}
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/${RELEASES}
If you find such a package installed on your system,
something went horribly wrong! They are autogenerated
- und used only by testcases and serve no other purpose…"}"
+ und used only by testcases and serve no other purpose…}"
local ARCHS=""
for RELEASE in $(printf '%s' "$RELEASES" | tr ',' '\n'); do
if [ "$RELEASE" = 'installed' ]; then
@@ -872,7 +911,7 @@ Maintainer: Joe Sixpack <joe@example.org>"
test "$arch" = 'none' || echo "Architecture: $arch"
echo "Version: $VERSION
Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb"
- test -z "$DEPENDENCIES" || echo "$DEPENDENCIES"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES"
echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)"
echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)"
echo "SHA256: 0000000000000000000000000000000000000000000000000000000000000000"
@@ -908,7 +947,7 @@ Binary: $BINARY
Version: $VERSION
Maintainer: Joe Sixpack <joe@example.org>
Architecture: $ARCH" >> $FILE
- test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
echo "Files:
$(echo -n "$DSCFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
$(echo -n "$TARFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
@@ -926,10 +965,10 @@ insertinstalledpackage() {
local DEPENDENCIES="$4"
local PRIORITY="${5:-optional}"
local STATUS="${6:-install ok installed}"
- local DESCRIPTION="${7:-"an autogenerated dummy ${NAME}=${VERSION}/installed
+ local DESCRIPTION="${7:-an autogenerated dummy ${NAME}=${VERSION}/installed
If you find such a package installed on your system,
something went horribly wrong! They are autogenerated
- und used only by testcases and serve no other purpose…"}"
+ und used only by testcases and serve no other purpose…}"
local FILE='rootdir/var/lib/dpkg/status'
local INFO='rootdir/var/lib/dpkg/info'
@@ -942,8 +981,8 @@ Installed-Size: 42
Maintainer: Joe Sixpack <joe@example.org>
Version: $VERSION" >> "$FILE"
test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE"
- test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE"
- echo "Description: $DESCRIPTION" >> "$FILE"
+ test -z "$DEPENDENCIES" || printf "%b\n" "$DEPENDENCIES" >> "$FILE"
+ printf "%b\n" "Description: $DESCRIPTION" >> "$FILE"
echo >> "$FILE"
if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then
echo -n > "${INFO}/${NAME}:${arch}.list"
@@ -1276,7 +1315,12 @@ changetowebserver() {
}
changetohttpswebserver() {
- if ! command -v stunnel4 >/dev/null 2>&1; then
+ local stunnel4
+ if command -v stunnel4 >/dev/null 2>&1; then
+ stunnel4=stunnel4
+ elif command -v stunnel >/dev/null 2>&1; then
+ stunnel4=stunnel
+ else
msgdie 'You need to install stunnel4 for https testcases'
fi
if [ ! -e "${TMPWORKINGDIRECTORY}/aptarchive/aptwebserver.pid" ]; then
@@ -1290,14 +1334,14 @@ output = /dev/null
accept = 0
connect = $APTHTTPPORT
" > "${TMPWORKINGDIRECTORY}/stunnel.conf"
- stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
+ $stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid"
local PID="$(cat "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid")"
if [ -z "$PID" ]; then
- msgdie 'Could not fork stunnel4 successfully'
+ msgdie 'Could not fork $stunnel4 successfully'
fi
addtrap 'prefix' "kill ${PID};"
- APTHTTPSPORT="$(lsof -i -n | awk "/^stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)"
+ APTHTTPSPORT="$(lsof -i -n | awk "/^$stunnel4 / && \$2 == \"${PID}\" {print \$9; exit; }" | cut -d':' -f 2)"
webserverconfig 'aptwebserver::port::https' "$APTHTTPSPORT" "https://localhost:${APTHTTPSPORT}"
rewritesourceslist "https://localhost:${APTHTTPSPORT}/"
}
@@ -1917,7 +1961,7 @@ mkdir() {
command mkdir -m 700 -p "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
touch "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/lock"
if [ "$(id -u)" = '0' ]; then
- chown _apt:root "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
+ chown _apt:$(id -gn) "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial"
fi
else
command mkdir "$@"
diff --git a/test/integration/run-tests b/test/integration/run-tests
index 78f24fbaf..fad249994 100755
--- a/test/integration/run-tests
+++ b/test/integration/run-tests
@@ -89,7 +89,11 @@ if [ -n "$APT_TEST_JOBS" ]; then
if [ "$MSGCOLOR" != 'NO' ]; then
export MSGCOLOR='ALWAYS'
fi
- exec parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
+ parallel=parallel
+ if command -v moreutils-parallel >/dev/null 2>&1; then
+ parallel=moreutils-parallel
+ fi
+ exec $parallel -j "$APT_TEST_JOBS" "./$(basename "$0")" -- $(echo "$TESTLIST")
fi
TOTAL="$(echo "$TESTLIST" | wc -l)"
for testcase in $TESTLIST; do
diff --git a/test/integration/test-apt-config b/test/integration/test-apt-config
index abae83ee6..f2068b789 100755
--- a/test/integration/test-apt-config
+++ b/test/integration/test-apt-config
@@ -24,7 +24,7 @@ testsuccessequal "ARCH='amd64'" aptconfig shell ARCH APT::Architecture
ROOTDIR="$(readlink -f rootdir)"
testsuccessequal "CONFIG='apt.conf'" aptconfig shell CONFIG Dir::Etc::main
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/apt.conf'" aptconfig shell CONFIG Dir::Etc::main/f
-testsuccessequal "CONFIG='etc/apt/'" aptconfig shell CONFIG Dir::Etc
+testsuccessequal "CONFIG='etc/apt'" aptconfig shell CONFIG Dir::Etc
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/ # old style
testsuccessequal "CONFIG='${ROOTDIR}/etc/apt/'" aptconfig shell CONFIG Dir::Etc/d
diff --git a/test/integration/test-apt-ftparchive-cachedb-lp1274466 b/test/integration/test-apt-ftparchive-cachedb-lp1274466
index c230e47dc..3a5527230 100755
--- a/test/integration/test-apt-ftparchive-cachedb-lp1274466
+++ b/test/integration/test-apt-ftparchive-cachedb-lp1274466
@@ -11,14 +11,19 @@ setupenvironment
configarchitecture "i386"
confighashes 'MD5' 'SHA1' 'SHA256' 'SHA512'
+db_dump=db_dump
+if command -v db_dump-5 >/dev/null 2>&1; then
+ db_dump=db_dump-5
+fi
+
# gather the db and the deb, ensure mtime is not modfied as its saved in the DB
cp -p "$TESTDIR/deb-lp1274466-cachedb.deb" foo_1_i386.deb
cp -p "$TESTDIR/cachedb-lp1274466-old-format.db" old-format.db
# verify that the format is different
testsuccess aptftparchive --db new-format.db packages .
-db_dump new-format.db > new-format.dump
-db_dump old-format.db > old-format.dump
+$db_dump new-format.db > new-format.dump
+$db_dump old-format.db > old-format.dump
testfailure diff -u old-format.dump new-format.dump
# ensure the new format as the sha512
@@ -47,7 +52,7 @@ Description: an autogenerated dummy foo=1/test
" aptftparchive --db old-format.db packages .
# ensure that the db is updated and contains the new sha512
-db_dump old-format.db > old-format.dump
+$db_dump old-format.db > old-format.dump
testsuccess grep 7da58ff901a40ecf42a730dc33198b182e9ba9ec98799fc2c2b6fabeeee40cc12a0e7cadb4b66764235c56e1009dbfe8a9a566fb1eedf47a992d1fff2cc3332c old-format.dump
diff --git a/test/integration/test-apt-get-changelog b/test/integration/test-apt-get-changelog
index 0812db500..ee7b3ef97 100755
--- a/test/integration/test-apt-get-changelog
+++ b/test/integration/test-apt-get-changelog
@@ -122,13 +122,13 @@ testsuccess apt install dpkg -y
# at this moment, we still have the Releasefile claim to be origin:ubuntu
echo 'Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu "false";' >> rootdir/etc/apt/apt.conf.d/nooriginchangelogs
testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris
-testsuccessequal "'gzip:///usr/share/doc/dpkg/changelog.Debian.gz' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false
testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=true
testsuccessequal "'http://localhost:${APTHTTPPORT}/pool/main/d/dpkg/dpkg_42/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Ubuntu=true
-testsuccessequal "'gzip:///usr/share/doc/dpkg/changelog.Debian.gz' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true
+testsuccessequal "'copy://${TMPWORKINGDIRECTORY}/rootdir/usr/share/doc/dpkg/changelog' dpkg.changelog" apt changelog dpkg --print-uris -o Acquire::Changelogs::AlwaysOnline=false -o Acquire::Changelogs::AlwaysOnline::Origin::Debian=true
testsuccess apt changelog dpkg -d
testfilestats 'dpkg.changelog' '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
head -n 3 dpkg.changelog > dpkg.change
-testfileequal 'dpkg.change' "$(apthelper cat-file '/usr/share/doc/dpkg/changelog.Debian.gz' | head -n 3)"
+testfileequal 'dpkg.change' "$(apthelper cat-file 'rootdir/usr/share/doc/dpkg/changelog' | head -n 3)"
rm -f dpkg.change dpkg.changelog
diff --git a/test/integration/test-authentication-basic b/test/integration/test-authentication-basic
index 9a15c7604..3bfd076ce 100755
--- a/test/integration/test-authentication-basic
+++ b/test/integration/test-authentication-basic
@@ -30,7 +30,7 @@ testauthsuccess() {
# lets see if got/retains acceptable permissions
if [ -n "$AUTHCONF" ]; then
if [ "$(id -u)" = '0' ]; then
- testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:root:600"
+ testfilestats "$AUTHCONF" '%U:%G:%a' '=' "_apt:$(id -gn):600"
else
testfilestats "$AUTHCONF" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:600"
fi
diff --git a/test/integration/test-bug-661537-build-profiles-support b/test/integration/test-bug-661537-build-profiles-support
index 91115ea18..d24484de9 100755
--- a/test/integration/test-bug-661537-build-profiles-support
+++ b/test/integration/test-bug-661537-build-profiles-support
@@ -76,7 +76,7 @@ Building dependency tree...
}
msgtest 'Check if version of installed dpkg is high enough for' 'build profiles support'
-if dpkg --compare-versions "$(command dpkg-query --showformat='${Version}' --show dpkg)" 'ge' '1.17.14'; then
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.17.14'; then
msgpass
testwithdpkg() {
msgtest "Test with" "dpkg-checkbuilddeps -d '$1' -P '$2'"
diff --git a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
index d9fd3d30d..bf93367c9 100755
--- a/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
+++ b/test/integration/test-bug-712116-dpkg-pre-install-pkgs-hook-multiarch
@@ -32,7 +32,7 @@ if [ -n \"${2}\" ]; then
FD=\$APT_HOOK_INFO_FD
if [ "\$FD" != \"${2}\" ]; then echo \"ERROR: Information is not on requested FD: \$FD != ${2}\" >> ${hook}-v${1}.list; fi
fi
-while read </proc/\$\$/fd/\$FD line; do
+while read </dev/fd/\$FD line; do
if echo \"\$line\" | grep -Fq '**'; then
echo \"\$line\"
fi
diff --git a/test/integration/test-bug-769609-triggers-still-pending-after-run b/test/integration/test-bug-769609-triggers-still-pending-after-run
index bd43578a5..ce2c193dd 100755
--- a/test/integration/test-bug-769609-triggers-still-pending-after-run
+++ b/test/integration/test-bug-769609-triggers-still-pending-after-run
@@ -8,7 +8,7 @@ setupenvironment
configarchitecture 'amd64'
msgtest 'Check if installed dpkg supports' 'noawait trigger'
-if dpkg-checkbuilddeps -d 'dpkg (>= 1.16.1)' /dev/null; then
+if dpkg --compare-versions "$(dpkg_version)" 'ge' '1.16.1'; then
msgpass
else
msgskip 'dpkg version too old'
@@ -23,7 +23,7 @@ buildtriggerpackages() {
cat >"${BUILDDIR}/debian/postinst" <<EOF
#!/bin/sh
if [ "\$1" = 'triggered' ]; then
- ls -l /proc/self/fd/
+ echo "TRIGGER IS RUNNING"
fi
EOF
echo "$TYPE /usr/share/doc" > "${BUILDDIR}/debian/triggers"
@@ -49,26 +49,26 @@ runtests() {
testsuccess aptget install trigdepends-$TYPE -y --reinstall
cp rootdir/tmp/testsuccess.output terminal.output
testsuccess grep '^REWRITE ' terminal.output
- testsuccess grep ' root root ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
testsuccess aptget install trigstuff -y
cp rootdir/tmp/testsuccess.output terminal.output
testsuccess grep '^REWRITE ' terminal.output
- testsuccess grep ' root root ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
testdpkginstalled triggerable-$TYPE trigdepends-$TYPE trigstuff
testsuccess aptget purge trigstuff -y
cp rootdir/tmp/testsuccess.output terminal.output
testsuccess grep '^REWRITE ' terminal.output
- testsuccess grep ' root root ' terminal.output
+ testsuccess grep 'TRIGGER IS RUNNING' terminal.output
testdpkginstalled triggerable-$TYPE trigdepends-$TYPE
testdpkgnotinstalled trigstuff
testsuccess aptget purge trigdepends-$TYPE -y
cp rootdir/tmp/testsuccess.output terminal.output
testfailure grep '^REWRITE ' terminal.output
- testfailure grep ' root root ' terminal.output
+ testfailure grep 'TRIGGER IS RUNNING' terminal.output
testdpkgnotinstalled triggerable-$TYPE trigdepends-$TYPE
}
#runtests 'interest'
diff --git a/test/integration/test-external-dependency-solver-protocol b/test/integration/test-external-dependency-solver-protocol
index 10b07e896..17a30cf2f 100755
--- a/test/integration/test-external-dependency-solver-protocol
+++ b/test/integration/test-external-dependency-solver-protocol
@@ -26,7 +26,7 @@ insertpackage 'experimental' 'coolstuff' 'i386,amd64' '3' 'Depends: cool, stuff'
setupaptarchive
testsuccess aptget install --solver apt coolstuff -s
-testempty find -name 'edsp.last.*'
+testempty find . -name 'edsp.last.*'
echo 'Dir::Log::Solver "edsp.last.xz";' > rootdir/etc/apt/apt.conf.d/log-edsp.conf
testfailure aptget install --solver dump coolstuff -s
@@ -152,7 +152,7 @@ testsuccess grep 'ERR_UNSOLVABLE' rootdir/tmp/testfailure.output
configarchitecture 'armel'
testfailure aptget install --solver apt awesomecoolstuff:i386 -s
msgtest 'An invalid EDSP file generates a' 'hard error'
-if echo "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then
+if printf "%b\n" "Request: This is a test\nFoo: bar\n\n" | aptinternalsolver > solver.result 2>&1; then
cat solver.result
msgfail
else
diff --git a/test/integration/test-kernel-helper-autoremove b/test/integration/test-kernel-helper-autoremove
index 417dafd65..a70841d9d 100755
--- a/test/integration/test-kernel-helper-autoremove
+++ b/test/integration/test-kernel-helper-autoremove
@@ -6,7 +6,7 @@ TESTDIR="$(readlink -f "$(dirname "$0")")"
setupenvironment
configarchitecture 'amd64'
-CURRENTKERNEL="linux-image-$(uname -r)"
+CURRENTKERNEL="linux-image-$(uname -r | tr '[A-Z]' '[a-z]')"
insertinstalledpackage "$CURRENTKERNEL" 'amd64' '5-1'
# debug packages do not need our protection
insertinstalledpackage "${CURRENTKERNEL}-dbg" 'amd64' '5-1'
@@ -49,7 +49,7 @@ testprotected() {
testsuccess --nomsg grep '^\^linux-image-100\\\.0\\\.0-1-generic\$$' protected.list
msgtest 'Check kernel autoremoval protection list includes' 'running kernel'
- testsuccess --nomsg grep "^\\^linux-image-$(uname -r | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list
+ testsuccess --nomsg grep "^\\^linux-image-$(uname -r | tr '[A-Z]' '[a-z]' | sed -e 's#\.#\\\\.#g')\\\$\$" protected.list
msgtest 'Check kernel autoremoval protection list does not include' 'metapackages'
testfailure --nomsg grep -e '^\^linux-image-amd64\$$' -e '^\^linux-image-686-pae\$$' -e ':i386' protected.list
diff --git a/test/integration/test-no-fds-leaked-to-maintainer-scripts b/test/integration/test-no-fds-leaked-to-maintainer-scripts
index baf85e311..7b5d6727e 100755
--- a/test/integration/test-no-fds-leaked-to-maintainer-scripts
+++ b/test/integration/test-no-fds-leaked-to-maintainer-scripts
@@ -8,6 +8,11 @@ setupenvironment
configarchitecture 'amd64' 'i386'
configdpkgnoopchroot
+if [ ! -e /proc/self/fd ]; then
+ msgskip "needs /proc/self/fd"
+ exit 0
+fi
+
setupsimplenativepackage "fdleaks" 'all' '1.0' 'unstable'
BUILDDIR="incoming/fdleaks-1.0"
for script in 'preinst' 'postinst' 'prerm' 'postrm'; do
@@ -24,7 +29,7 @@ buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
PKGNAME='fdleaks:all'
-if ! dpkg-checkbuilddeps -d 'dpkg (>= 1.16.2)' /dev/null >/dev/null 2>&1; then
+if dpkg --compare-versions "$(dpkg_version)" 'lt' '1.16.2'; then
PKGNAME='fdleaks'
fi
diff --git a/test/interactive-helper/test_fileutl.cc b/test/interactive-helper/test_fileutl.cc
index e660c2981..7c4b95759 100644
--- a/test/interactive-helper/test_fileutl.cc
+++ b/test/interactive-helper/test_fileutl.cc
@@ -4,6 +4,7 @@
#include <sys/types.h>
#include <sys/stat.h>
+#include <sys/wait.h>
#include <unistd.h>
#include <stdlib.h>
#include <fcntl.h>