Not all tests work yet, most notable the cdrom tests, but those require
changes in libapt itself to have a proper fix and what we have fixed so
far is good enough progress for now.
Git-Dch: Ignore
21 files changed:
test -n "$DPKG" || DPKG="/usr/bin/dpkg"
test -n "$DPKG" || DPKG="/usr/bin/dpkg"
-list="$(${DPKG} -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg$/ && $2 !~ /-dbgsym$/ { print $2,$3; }' \
+list="$("${DPKG}" -l | awk '/^[ih][^nc][ ]+(linux|kfreebsd|gnumach)-image-[0-9]+\./ && $2 !~ /-dbg$/ && $2 !~ /-dbgsym$/ { print $2,$3; }' \
| sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')"
debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)"
| sed -e 's#^\(linux\|kfreebsd\|gnumach\)-image-##' -e 's#:[^:]\+ # #')"
debverlist="$(echo "$list" | cut -d' ' -f 2 | sort --unique --reverse --version-sort)"
"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
}
dpkgcheckbuilddeps() {
"${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "$@"
}
dpkgcheckbuilddeps() {
- command dpkg-checkbuilddeps --admindir=${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg "$@"
+ command dpkg-checkbuilddeps --admindir="${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg" "$@"
aptmark) CMD="apt-mark";;
apthelper) CMD="apt-helper";;
aptftparchive) CMD="apt-ftparchive";;
aptmark) CMD="apt-mark";;
apthelper) CMD="apt-helper";;
aptftparchive) CMD="apt-ftparchive";;
- dpkg) shift; runapt ${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg "$@"; return;;
+ dpkg) shift; runapt "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg" "$@"; return;;
if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$(stat --format '%a' "$TMPDIR")" != '1777' ]; then
unset TMPDIR
fi
if [ -n "$TMPDIR" ] && [ "$(id -u)" = '0' ] && [ "$(stat --format '%a' "$TMPDIR")" != '1777' ]; then
unset TMPDIR
fi
- TMPWORKINGDIRECTORY=$(mktemp -d)
- addtrap "cd /; rm -rf $TMPWORKINGDIRECTORY;"
- msgninfo "Preparing environment for $(basename $0) in ${TMPWORKINGDIRECTORY}…"
+ TMPWORKINGDIRECTORY="$(mktemp -d)"
+ addtrap "cd /; rm -rf \"$TMPWORKINGDIRECTORY\";"
+ msgninfo "Preparing environment for ${0##*/} in ${TMPWORKINGDIRECTORY}…"
mkdir -m 700 "${TMPWORKINGDIRECTORY}/downloaded"
if [ "$(id -u)" = '0' ]; then
mkdir -m 700 "${TMPWORKINGDIRECTORY}/downloaded"
if [ "$(id -u)" = '0' ]; then
chown _apt:root "${TMPWORKINGDIRECTORY}/downloaded"
fi
chown _apt:root "${TMPWORKINGDIRECTORY}/downloaded"
fi
- TESTDIRECTORY=$(readlink -f $(dirname $0))
+ TESTDIRECTORY="$(readlink -f "$(dirname $0)")"
# allow overriding the default BUILDDIR location
# allow overriding the default BUILDDIR location
- SOURCEDIRECTORY=${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}
- BUILDDIRECTORY=${APT_INTEGRATION_TESTS_BUILD_DIR:-"${TESTDIRECTORY}/../../build/bin"}
- LIBRARYPATH=${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}"}
- METHODSDIR=${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/methods"}
- APTHELPERBINDIR=${APT_INTEGRATION_TESTS_LIBEXEC_DIR:-"${BUILDDIRECTORY}"}
- APTWEBSERVERBINDIR=${APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR:-"${BUILDDIRECTORY}"}
- APTINTERNALSOLVER=${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${BUILDDIRECTORY}/apt-internal-solver"}
- APTDUMPSOLVER=${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${BUILDDIRECTORY}/apt-dump-solver"}
+ SOURCEDIRECTORY="${APT_INTEGRATION_TESTS_SOURCE_DIR:-"${TESTDIRECTORY}/../../"}"
+ BUILDDIRECTORY="${APT_INTEGRATION_TESTS_BUILD_DIR:-"${TESTDIRECTORY}/../../build/bin"}"
+ LIBRARYPATH="${APT_INTEGRATION_TESTS_LIBRARY_PATH:-"${BUILDDIRECTORY}"}"
+ METHODSDIR="${APT_INTEGRATION_TESTS_METHODS_DIR:-"${BUILDDIRECTORY}/methods"}"
+ APTHELPERBINDIR="${APT_INTEGRATION_TESTS_LIBEXEC_DIR:-"${BUILDDIRECTORY}"}"
+ APTWEBSERVERBINDIR="${APT_INTEGRATION_TESTS_WEBSERVER_BIN_DIR:-"${BUILDDIRECTORY}"}"
+ APTINTERNALSOLVER="${APT_INTEGRATION_TESTS_INTERNAL_SOLVER:-"${BUILDDIRECTORY}/apt-internal-solver"}"
+ APTDUMPSOLVER="${APT_INTEGRATION_TESTS_DUMP_SOLVER:-"${BUILDDIRECTORY}/apt-dump-solver"}"
test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first"
# -----
test -x "${BUILDDIRECTORY}/apt-get" || msgdie "You need to build tree first"
# -----
- cd $TMPWORKINGDIRECTORY
+ cd "$TMPWORKINGDIRECTORY"
mkdir rootdir aptarchive keys
cd rootdir
mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
mkdir rootdir aptarchive keys
cd rootdir
mkdir -p etc/apt/apt.conf.d etc/apt/sources.list.d etc/apt/trusted.gpg.d etc/apt/preferences.d
mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
touch var/lib/dpkg/available
mkdir -p usr/lib/apt
mkdir -p var/lib/dpkg/info var/lib/dpkg/updates var/lib/dpkg/triggers
touch var/lib/dpkg/available
mkdir -p usr/lib/apt
- ln -s ${METHODSDIR} usr/lib/apt/methods
+ ln -s "${METHODSDIR}" usr/lib/apt/methods
if [ "$BUILDDIRECTORY" = "$LIBRARYPATH" ]; then
mkdir -p usr/lib/apt/solvers
ln -s "${BUILDDIRECTORY}/apt-dump-solver" usr/lib/apt/solvers/dump
if [ "$BUILDDIRECTORY" = "$LIBRARYPATH" ]; then
mkdir -p usr/lib/apt/solvers
ln -s "${BUILDDIRECTORY}/apt-dump-solver" usr/lib/apt/solvers/dump
fi
# use the autoremove from the BUILDDIRECTORY if its there, otherwise
# system
fi
# use the autoremove from the BUILDDIRECTORY if its there, otherwise
# system
- if [ -e ${BUILDDIRECTORY}/../../debian/apt.conf.autoremove ]; then
- ln -s ${BUILDDIRECTORY}/../../debian/apt.conf.autoremove etc/apt/apt.conf.d/01autoremove
+ if [ -e "${BUILDDIRECTORY}/../../debian/apt.conf.autoremove" ]; then
+ ln -s "${BUILDDIRECTORY}/../../debian/apt.conf.autoremove" etc/apt/apt.conf.d/01autoremove
else
ln -s /etc/apt/apt.conf.d/01autoremove etc/apt/apt.conf.d/01autoremove
fi
cd ..
else
ln -s /etc/apt/apt.conf.d/01autoremove etc/apt/apt.conf.d/01autoremove
fi
cd ..
- local PACKAGESFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Packages-/' -e 's/^skip-/Packages-/')
+ local BASENAME="${0##*/}"
+ local PACKAGESFILE="Packages-${BASENAME#*-}"
if [ -f "${TESTDIRECTORY}/${PACKAGESFILE}" ]; then
cp "${TESTDIRECTORY}/${PACKAGESFILE}" aptarchive/Packages
fi
if [ -f "${TESTDIRECTORY}/${PACKAGESFILE}" ]; then
cp "${TESTDIRECTORY}/${PACKAGESFILE}" aptarchive/Packages
fi
- local SOURCESSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/Sources-/' -e 's/^skip-/Sources-/')
+ local SOURCESSFILE="Sources-${BASENAME#*-}"
if [ -f "${TESTDIRECTORY}/${SOURCESSFILE}" ]; then
cp "${TESTDIRECTORY}/${SOURCESSFILE}" aptarchive/Sources
fi
if [ -f "${TESTDIRECTORY}/${SOURCESSFILE}" ]; then
cp "${TESTDIRECTORY}/${SOURCESSFILE}" aptarchive/Sources
fi
- cp $(find $TESTDIRECTORY -name '*.pub' -o -name '*.sec') keys/
- chmod 644 $(find keys -name '*.pub' -o -name '*.sec')
- ln -s ${TMPWORKINGDIRECTORY}/keys/joesixpack.pub rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
+ for key in $(find "$TESTDIRECTORY" -name '*.pub' -o -name '*.sec'); do
+ cp "$key" keys/
+ chmod 644 "$key"
+ done
+ ln -s "${TMPWORKINGDIRECTORY}/keys/joesixpack.pub" rootdir/etc/apt/trusted.gpg.d/joesixpack.gpg
echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf
echo "Dir::state::status \"${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status\";" >> aptconfig.conf
echo "Dir \"${TMPWORKINGDIRECTORY}/rootdir\";" > aptconfig.conf
echo "Dir::state::status \"${TMPWORKINGDIRECTORY}/rootdir/var/lib/dpkg/status\";" >> aptconfig.conf
echo "Dir::Bin::apt-key \"${BUILDDIRECTORY}/apt-key\";" >> aptconfig.conf
fi
echo "Dir::Bin::apt-key \"${BUILDDIRECTORY}/apt-key\";" >> aptconfig.conf
fi
- cat << EOF > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg"
+ cat > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" <<EOF
#!/bin/sh
set -e
if [ -r "${TMPWORKINGDIRECTORY}/noopchroot.so" ]; then
#!/bin/sh
set -e
if [ -r "${TMPWORKINGDIRECTORY}/noopchroot.so" ]; then
- if [ -n "\$LD_PRELOAD" ]; then
- export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so \${LD_PRELOAD}"
+ if [ -n "\$LD_LIBRARY_PATH" ]; then
+ export LD_LIBRARY_PATH="${TMPWORKINGDIRECTORY}:${LD_LIBRARY_PATH}"
- export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so"
+ export LD_LIBRARY_PATH="${TMPWORKINGDIRECTORY}"
-fi
-exec fakeroot ${DPKG:-dpkg} --root="${TMPWORKINGDIRECTORY}/rootdir" \\
- --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log \\
- --force-not-root --force-bad-path "\$@"
-EOF
- cat << EOF > "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
-#!/bin/sh
-set -e
-if [ -r "${TMPWORKINGDIRECTORY}/noopchroot.so" ]; then
if [ -n "\$LD_PRELOAD" ]; then
if [ -n "\$LD_PRELOAD" ]; then
- export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so \${LD_PRELOAD}"
+ export LD_PRELOAD="noopchroot.so \${LD_PRELOAD}"
- export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so"
+ export LD_PRELOAD="noopchroot.so"
+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" \\
+ --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" \\
exec fakeroot gdb --quiet -ex run "${DPKG:-dpkg}" --args "${DPKG:-dpkg}" --root="${TMPWORKINGDIRECTORY}/rootdir" \\
- --log=${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log \\
+ --log="${TMPWORKINGDIRECTORY}/rootdir/var/log/dpkg.log" \\
--force-not-root --force-bad-path "\$@"
EOF
chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
--force-not-root --force-bad-path "\$@"
EOF
chmod +x "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/dpkg" "${TMPWORKINGDIRECTORY}/rootdir/usr/bin/gdb-dpkg"
configdpkg() {
if [ ! -e rootdir/var/lib/dpkg/status ]; then
configdpkg() {
if [ ! -e rootdir/var/lib/dpkg/status ]; then
- local STATUSFILE=$(echo "$(basename $0)" | sed -e 's/^test-/status-/' -e 's/^skip-/status-/')
+ local BASENAME="${0##*/}"
+ local STATUSFILE="status-${BASENAME#*-}"
if [ -f "${TESTDIRECTORY}/${STATUSFILE}" ]; then
cp "${TESTDIRECTORY}/${STATUSFILE}" rootdir/var/lib/dpkg/status
else
if [ -f "${TESTDIRECTORY}/${STATUSFILE}" ]; then
cp "${TESTDIRECTORY}/${STATUSFILE}" rootdir/var/lib/dpkg/status
else
# via execvp() as used by dpkg as we don't want our rootdir to be a fullblown
# chroot directory dpkg could chroot into to execute the maintainer scripts
msgtest 'Building library to preload to make maintainerscript work in' 'dpkg'
# via execvp() as used by dpkg as we don't want our rootdir to be a fullblown
# chroot directory dpkg could chroot into to execute the maintainer scripts
msgtest 'Building library to preload to make maintainerscript work in' 'dpkg'
- cat << EOF > noopchroot.c
+ cat > noopchroot.c << EOF
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
#define _GNU_SOURCE
#include <stdio.h>
#include <stdlib.h>
*) printf "$1\t$1\t$1\n";;
esac
shift
*) printf "$1\t$1\t$1\n";;
esac
shift
- done > ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf
+ done > "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf"
local SECTION="${7:-others}"
local DISTSECTION
local SECTION="${7:-others}"
local DISTSECTION
- if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
- DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)"
+ DISTSECTION="${SECTION%/*}"
fi
local BUILDDIR=incoming/${NAME}-${VERSION}
mkdir -p ${BUILDDIR}/debian/source
fi
local BUILDDIR=incoming/${NAME}-${VERSION}
mkdir -p ${BUILDDIR}/debian/source
local SECTION="${7:-others}"
local PRIORITY="${8:-optional}"
local SECTION="${7:-others}"
local PRIORITY="${8:-optional}"
- local FILE_TREE="$9"
- local COMPRESS_TYPE="${10:-gzip}"
+ local FILE_TREE="$9"
+ local COMPRESS_TYPE="${10:-gzip}"
- if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then
+ if [ "$SECTION" = "${SECTION#*/}" ]; then
- DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)"
+ DISTSECTION="${SECTION%/*}"
- local BUILDDIR=${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}
+ local BUILDDIR="${TMPWORKINGDIRECTORY}/incoming/${NAME}-${VERSION}"
msgtest "Build source package in version ${VERSION} for ${RELEASE} in ${DISTSECTION}" "$NAME"
msgtest "Build source package in version ${VERSION} for ${RELEASE} in ${DISTSECTION}" "$NAME"
- mkdir -p $BUILDDIR/debian/source
- echo "* most suckless software product ever" > ${BUILDDIR}/FEATURES
+ mkdir -p "$BUILDDIR/debian/source"
+ echo "* most suckless software product ever" > "${BUILDDIR}/FEATURES"
-echo '$NAME says \"Hello!\"'" > ${BUILDDIR}/${NAME}
+echo '$NAME says \"Hello!\"'" > "${BUILDDIR}/${NAME}"
- echo "Copyleft by Joe Sixpack $(date +%Y)" > ${BUILDDIR}/debian/copyright
+ echo "Copyleft by Joe Sixpack $(date +%Y)" > "${BUILDDIR}/debian/copyright"
echo "$NAME ($VERSION) $RELEASE; urgency=low
* Initial release
echo "$NAME ($VERSION) $RELEASE; urgency=low
* Initial release
- -- Joe Sixpack <joe@example.org> $(date -R)" > ${BUILDDIR}/debian/changelog
- echo "Source: $NAME
+ -- Joe Sixpack <joe@example.org> $(date -R)" > "${BUILDDIR}/debian/changelog"
+ {
+ echo "Source: $NAME
Priority: $PRIORITY
Maintainer: Joe Sixpack <joe@example.org>
Priority: $PRIORITY
Maintainer: Joe Sixpack <joe@example.org>
-Standards-Version: 3.9.3" > ${BUILDDIR}/debian/control
- if [ "$SECTION" != '<none>' ]; then
- echo "Section: $SECTION" >> ${BUILDDIR}/debian/control
- fi
- local BUILDDEPS="$(echo "$DEPENDENCIES" | grep '^Build-')"
- test -z "$BUILDDEPS" || echo "$BUILDDEPS" >> ${BUILDDIR}/debian/control
- echo "
-Package: $NAME" >> ${BUILDDIR}/debian/control
+Standards-Version: 3.9.3"
+ if [ "$SECTION" != '<none>' ]; then
+ echo "Section: $SECTION"
+ fi
+ local BUILDDEPS="$(echo "$DEPENDENCIES" | grep '^Build-')"
+ test -z "$BUILDDEPS" || echo "$BUILDDEPS"
+ echo "
+Package: $NAME"
- if [ "$ARCH" = 'all' ]; then
- echo "Architecture: all" >> ${BUILDDIR}/debian/control
- else
- echo "Architecture: any" >> ${BUILDDIR}/debian/control
- fi
- local DEPS="$(echo "$DEPENDENCIES" | grep -v '^Build-')"
- test -z "$DEPS" || echo "$DEPS" >> ${BUILDDIR}/debian/control
- echo "Description: $DESCRIPTION" >> ${BUILDDIR}/debian/control
+ if [ "$ARCH" = 'all' ]; then
+ echo "Architecture: all"
+ else
+ echo "Architecture: any"
+ fi
+ local DEPS="$(echo "$DEPENDENCIES" | grep -v '^Build-')"
+ test -z "$DEPS" || echo "$DEPS"
+ echo "Description: $DESCRIPTION"
+ } > "${BUILDDIR}/debian/control"
- echo '3.0 (native)' > ${BUILDDIR}/debian/source/format
- cd ${BUILDDIR}/..
+ echo '3.0 (native)' > "${BUILDDIR}/debian/source/format"
+ cd "${BUILDDIR}/.."
testsuccess --nomsg dpkg-source -b ${NAME}-${VERSION}
cd - >/dev/null
testsuccess --nomsg dpkg-source -b ${NAME}-${VERSION}
cd - >/dev/null
- sed -n 's#^dpkg-source: info: building [^ ]\+ in ##p' ${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output \
+ sed -n 's#^dpkg-source: info: building [^ ]\+ in ##p' "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" \
- echo "pool/${SRC}" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist
+ echo "pool/${SRC}" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.srclist"
# if expr match "${SRC}" '.*\.dsc' >/dev/null 2>&1; then
# aptkey --keyring ./keys/joesixpack.pub --secret-keyring ./keys/joesixpack.sec --quiet --readonly \
# adv --yes --default-key 'Joe Sixpack' \
# if expr match "${SRC}" '.*\.dsc' >/dev/null 2>&1; then
# aptkey --keyring ./keys/joesixpack.pub --secret-keyring ./keys/joesixpack.sec --quiet --readonly \
# adv --yes --default-key 'Joe Sixpack' \
for arch in $(getarchitecturesfromcommalist "$ARCH"); do
msgtest "Build binary package for ${RELEASE} in ${SECTION}" "$NAME"
for arch in $(getarchitecturesfromcommalist "$ARCH"); do
msgtest "Build binary package for ${RELEASE} in ${SECTION}" "$NAME"
- rm -rf ${BUILDDIR}/debian/tmp
- mkdir -p ${BUILDDIR}/debian/tmp/DEBIAN ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME} ${BUILDDIR}/debian/tmp/usr/bin
- cp ${BUILDDIR}/debian/copyright ${BUILDDIR}/debian/changelog ${BUILDDIR}/FEATURES ${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}
- cp ${BUILDDIR}/${NAME} ${BUILDDIR}/debian/tmp/usr/bin/${NAME}-${arch}
+ rm -rf "${BUILDDIR}/debian/tmp"
+ mkdir -p "${BUILDDIR}/debian/tmp/DEBIAN" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin"
+ cp "${BUILDDIR}/debian/copyright" "${BUILDDIR}/debian/changelog" "${BUILDDIR}/FEATURES" "${BUILDDIR}/debian/tmp/usr/share/doc/${NAME}"
+ cp "${BUILDDIR}/${NAME}" "${BUILDDIR}/debian/tmp/usr/bin/${NAME}-${arch}"
if [ -n "$FILE_TREE" ]; then
if [ -n "$FILE_TREE" ]; then
- cp -ar "$FILE_TREE" ${BUILDDIR}/debian/tmp
+ cp -ar "$FILE_TREE" "${BUILDDIR}/debian/tmp"
- (cd ${BUILDDIR}; dpkg-gencontrol -DArchitecture=$arch)
- (cd ${BUILDDIR}/debian/tmp; md5sum $(find usr/ -type f) > DEBIAN/md5sums)
+ (cd "${BUILDDIR}"; dpkg-gencontrol -DArchitecture=$arch)
+ (cd "${BUILDDIR}/debian/tmp"; md5sum $(find usr/ -type f) > DEBIAN/md5sums)
local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log"
# ensure the right permissions as dpkg-deb insists
local LOG="${BUILDDIR}/../${NAME}_${VERSION}_${arch}.dpkg-deb.log"
# ensure the right permissions as dpkg-deb insists
- chmod 755 ${BUILDDIR}/debian/tmp/DEBIAN
- testsuccess --nomsg dpkg-deb -Z${COMPRESS_TYPE} --build ${BUILDDIR}/debian/tmp ${BUILDDIR}/..
- echo "pool/${NAME}_${VERSION}_${arch}.deb" >> ${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist
+ chmod 755 "${BUILDDIR}/debian/tmp/DEBIAN"
+ testsuccess --nomsg dpkg-deb -Z${COMPRESS_TYPE} --build "${BUILDDIR}/debian/tmp" "${BUILDDIR}/.."
+ echo "pool/${NAME}_${VERSION}_${arch}.deb" >> "${BUILDDIR}/../${RELEASE}.${DISTSECTION}.pkglist"
done
local CHANGEPATH="${BUILDDIR}/../${DISTSECTION}/${NM}/${NAME}/${NAME}_${VERSION}"
done
local CHANGEPATH="${BUILDDIR}/../${DISTSECTION}/${NM}/${NAME}/${NAME}_${VERSION}"
- mkdir -p $CHANGEPATH
- cp ${BUILDDIR}/debian/changelog $CHANGEPATH
+ mkdir -p "$CHANGEPATH"
+ cp "${BUILDDIR}/debian/changelog" "$CHANGEPATH"
rm -rf "${BUILDDIR}"
msgdone "info"
}
rm -rf "${BUILDDIR}"
msgdone "info"
}
local PKGNAME="$(echo "$BUILDDIR" | grep -o '[^/]*$')"
local BUILDLOG="$(readlink -f "${BUILDDIR}/../${PKGNAME}_${RELEASE}_${SECTION}.dpkg-bp.log")"
msgtest "Build package for ${RELEASE} in ${SECTION}" "$PKGNAME"
local PKGNAME="$(echo "$BUILDDIR" | grep -o '[^/]*$')"
local BUILDLOG="$(readlink -f "${BUILDDIR}/../${PKGNAME}_${RELEASE}_${SECTION}.dpkg-bp.log")"
msgtest "Build package for ${RELEASE} in ${SECTION}" "$PKGNAME"
if [ "$ARCH" = "all" ]; then
ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)"
fi
testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH
if [ "$ARCH" = "all" ]; then
ARCH="$(dpkg-architecture -qDEB_HOST_ARCH 2> /dev/null)"
fi
testsuccess --nomsg dpkg-buildpackage -uc -us -a$ARCH
- cp ${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output $BUILDLOG
- local PKGS="$(grep '^dpkg-deb: building package' $BUILDLOG | cut -d'/' -f 2 | sed -e "s#'\.##")"
- local SRCS="$(grep '^dpkg-source: info: building' $BUILDLOG | grep -o '[a-z0-9._+~-]*$')"
+ cp "${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output" "$BUILDLOG"
+ local PKGS="$(grep '^dpkg-deb: building package' "$BUILDLOG" | cut -d'/' -f 2 | sed -e "s#'\.##")"
+ local SRCS="$(grep '^dpkg-source: info: building' "$BUILDLOG" | grep -o '[a-z0-9._+~-]*$')"
cd - > /dev/null
for PKG in $PKGS; do
cd - > /dev/null
for PKG in $PKGS; do
- echo "pool/${PKG}" >> ${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.pkglist
+ echo "pool/${PKG}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.pkglist"
done
for SRC in $SRCS; do
done
for SRC in $SRCS; do
- echo "pool/${SRC}" >> ${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.srclist
+ echo "pool/${SRC}" >> "${TMPWORKINGDIRECTORY}/incoming/${RELEASE}.${SECTION}.srclist"
}
createaptftparchiveconfig() {
}
createaptftparchiveconfig() {
- local COMPRESSORS="$(cut -d' ' -f 1 ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | tr '\n' ' ')"
+ local COMPRESSORS="$(cut -d' ' -f 1 "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf" | tr '\n' ' ')"
local COMPRESSORS="${COMPRESSORS%* }"
local ARCHS="$(getarchitectures)"
cat > ftparchive.conf <<EOF
local COMPRESSORS="${COMPRESSORS%* }"
local ARCHS="$(getarchitectures)"
cat > ftparchive.conf <<EOF
};
EOF
for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do
};
EOF
for DIST in $(find ./pool/ -maxdepth 1 -name '*.pkglist' -type f | cut -d'/' -f 3 | cut -d'.' -f 1 | sort | uniq); do
- echo -n 'tree "dists/' >> ftparchive.conf
- echo -n "$DIST" >> ftparchive.conf
- echo -n '" {
- Architectures "' >> ftparchive.conf
- echo -n "$ARCHS" >> ftparchive.conf
- echo -n 'source";
- FileList "' >> ftparchive.conf
- echo -n "${DIST}.\$(SECTION).pkglist" >> ftparchive.conf
- echo -n '";
- SourceFileList "' >> ftparchive.conf
- echo -n "${DIST}.\$(SECTION).srclist" >> ftparchive.conf
- echo -n '";
- Sections "' >> ftparchive.conf
- echo -n "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')" >> ftparchive.conf
- echo '";
-};' >> ftparchive.conf
- done
+ cat <<EOF
+tree "dists/$DIST" {
+ Architectures "$ARCHS source";
+ FileList "${DIST}.\$(SECTION).pkglist";
+ SourceFileList "${DIST}.\$(SECTION).srclist";
+ Sections "$(find ./pool/ -maxdepth 1 -name "${DIST}.*.pkglist" -type f | cut -d'/' -f 3 | cut -d'.' -f 2 | sort | uniq | tr '\n' ' ')";
+};
+EOF
+ done >> ftparchive.conf
}
buildaptftparchivedirectorystructure() {
}
buildaptftparchivedirectorystructure() {
for SECTION in $SECTIONS; do
local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')"
for ARCH in $ARCHS; do
for SECTION in $SECTIONS; do
local ARCHS="$(grep -A 5 "dists/$DIST" ftparchive.conf | grep Architectures | cut -d'"' -f 2 | sed -e 's#source##')"
for ARCH in $ARCHS; do
- mkdir -p dists/${DIST}/${SECTION}/binary-${ARCH}
+ mkdir -p "dists/${DIST}/${SECTION}/binary-${ARCH}"
- mkdir -p dists/${DIST}/${SECTION}/source
- mkdir -p dists/${DIST}/${SECTION}/i18n
+ mkdir -p "dists/${DIST}/${SECTION}/source"
+ mkdir -p "dists/${DIST}/${SECTION}/i18n"
fi
for BUILDARCH in $ARCHS; do
local PPATH="aptarchive/dists/${RELEASE}/main/binary-${BUILDARCH}"
fi
for BUILDARCH in $ARCHS; do
local PPATH="aptarchive/dists/${RELEASE}/main/binary-${BUILDARCH}"
- mkdir -p $PPATH
- local FILE="${PPATH}/Packages"
- echo "Package: $NAME
+ mkdir -p "$PPATH"
+ {
+ echo "Package: $NAME
Priority: $PRIORITY
Section: other
Installed-Size: 42
Priority: $PRIORITY
Section: other
Installed-Size: 42
-Maintainer: Joe Sixpack <joe@example.org>" >> $FILE
- test "$arch" = 'none' || echo "Architecture: $arch" >> $FILE
- echo "Version: $VERSION
-Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb" >> $FILE
- test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE
- echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)" >> $FILE
- echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)" >> $FILE
- echo >> $FILE
+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"
+ echo "Description: $(printf '%s' "$DESCRIPTION" | head -n 1)"
+ echo "Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)"
+ echo
+ } >> "${PPATH}/Packages"
- mkdir -p aptarchive/dists/${RELEASE}/main/source aptarchive/dists/${RELEASE}/main/i18n
- touch aptarchive/dists/${RELEASE}/main/source/Sources
+ mkdir -p "aptarchive/dists/${RELEASE}/main/source" "aptarchive/dists/${RELEASE}/main/i18n"
+ touch "aptarchive/dists/${RELEASE}/main/source/Sources"
echo "Package: $NAME
Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)
Description-en: $DESCRIPTION
echo "Package: $NAME
Description-md5: $(printf '%s' "$DESCRIPTION" | md5sum | cut -d' ' -f 1)
Description-en: $DESCRIPTION
-" >> aptarchive/dists/${RELEASE}/main/i18n/Translation-en
+" >> "aptarchive/dists/${RELEASE}/main/i18n/Translation-en"
Version: $VERSION
Maintainer: Joe Sixpack <joe@example.org>
Architecture: $ARCH" >> $FILE
Version: $VERSION
Maintainer: Joe Sixpack <joe@example.org>
Architecture: $ARCH" >> $FILE
- test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE
+ test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE"
- $(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
+ $(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"
- $(echo -n "$DSCFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) $DSCFILE
- $(echo -n "$TARFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) $TARFILE
-" >> $FILE
+ $(echo -n "$DSCFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) "$DSCFILE"
+ $(echo -n "$TARFILE" | sha256sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) "$TARFILE"
+" >> "$FILE"
}
insertinstalledpackage() {
}
insertinstalledpackage() {
Section: other
Installed-Size: 42
Maintainer: Joe Sixpack <joe@example.org>
Section: other
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
- echo >> $FILE
+Version: $VERSION" >> "$FILE"
+ test "$arch" = 'none' || echo "Architecture: $arch" >> "$FILE"
+ test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> "$FILE"
+ echo "Description: $DESCRIPTION" >> "$FILE"
+ echo >> "$FILE"
if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then
if [ "$(dpkg-query -W --showformat='${Multi-Arch}')" = 'same' ]; then
- echo -n > ${INFO}/${NAME}:${arch}.list
+ echo -n > "${INFO}/${NAME}:${arch}.list"
- echo -n > ${INFO}/${NAME}.list
+ echo -n > "${INFO}/${NAME}.list"
fi
done
}
buildaptarchivefromincoming() {
fi
done
}
buildaptarchivefromincoming() {
- msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on incoming packages…"
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on incoming packages…"
cd aptarchive
[ -e pool ] || ln -s ../incoming pool
[ -e ftparchive.conf ] || createaptftparchiveconfig
cd aptarchive
[ -e pool ] || ln -s ../incoming pool
[ -e ftparchive.conf ] || createaptftparchiveconfig
}
buildaptarchivefromfiles() {
}
buildaptarchivefromfiles() {
- msginfo "Build APT archive for ${CCMD}$(basename $0)${CINFO} based on prebuild files…"
+ msginfo "Build APT archive for ${CCMD}${0##*/}${CINFO} based on prebuild files…"
local DIR='aptarchive'
if [ -d "${DIR}/dists" ]; then DIR="${DIR}/dists"; fi
find "$DIR" -name 'Packages' -o -name 'Sources' -o -name 'Translation-*' | while read line; do
local DIR='aptarchive'
if [ -d "${DIR}/dists" ]; then DIR="${DIR}/dists"; fi
find "$DIR" -name 'Packages' -o -name 'Sources' -o -name 'Translation-*' | while read line; do
- cat ${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf | while read compressor extension command; do
+ cat "${TMPWORKINGDIRECTORY}/rootdir/etc/testcase-compressor.conf" | while read compressor extension command; do
if [ "$compressor" = '.' ]; then
if [ -n "$2" ]; then
touch -d "$2" "$1"
if [ "$compressor" = '.' ]; then
if [ -n "$2" ]; then
touch -d "$2" "$1"
if [ -n "$ORIGIN" ]; then
ORIGIN="-o APT::FTPArchive::Release::Origin=${ORIGIN}"
fi
if [ -n "$ORIGIN" ]; then
ORIGIN="-o APT::FTPArchive::Release::Origin=${ORIGIN}"
fi
- aptftparchiverelease $dir \
+ aptftparchiverelease "$dir" \
-o APT::FTPArchive::Release::Suite="${SUITE}" \
-o APT::FTPArchive::Release::Codename="${CODENAME}" \
${LABEL} \
${ORIGIN} \
${VERSION} \
-o APT::FTPArchive::Release::Suite="${SUITE}" \
-o APT::FTPArchive::Release::Codename="${CODENAME}" \
${LABEL} \
${ORIGIN} \
${VERSION} \
if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then
sed -i '/^Date: / a\
if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then
sed -i '/^Date: / a\
-NotAutomatic: yes' $dir/Release
+NotAutomatic: yes' "$dir/Release"
fi
if [ -n "$1" -a "$1" != "now" ]; then
for release in $(find ./aptarchive -name 'Release'); do
fi
if [ -n "$1" -a "$1" != "now" ]; then
for release in $(find ./aptarchive -name 'Release'); do
- sed -i "s/^Date: .*$/Date: $(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')/" $release
- touch -d "$1" $release
+ sed -i "s/^Date: .*$/Date: $(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')/" "$release"
+ touch -d "$1" "$release"
done
fi
if [ -n "$2" ]; then
done
fi
if [ -n "$2" ]; then
}
setupdistsaptarchive() {
}
setupdistsaptarchive() {
- local APTARCHIVE=$(readlink -f ./aptarchive)
+ local APTARCHIVE="$(readlink -f ./aptarchive | sed 's# #%20#g')"
rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list
rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list
for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do
rm -f root/etc/apt/sources.list.d/apt-test-*-deb.list
rm -f root/etc/apt/sources.list.d/apt-test-*-deb-src.list
for DISTS in $(find ./aptarchive/dists/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 4); do
- SECTIONS=$(find ./aptarchive/dists/${DISTS}/ -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ')
+ SECTIONS=$(find "./aptarchive/dists/${DISTS}/" -mindepth 1 -maxdepth 1 -type d | cut -d'/' -f 5 | tr '\n' ' ')
msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… "
msgninfo "\tadd deb and deb-src sources.list lines for ${CCMD}${DISTS} ${SECTIONS}${CINFO}… "
- echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list
- echo "deb-src file://$APTARCHIVE $DISTS $SECTIONS" > rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list
+ echo "deb file://$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb.list"
+ echo "deb-src file://$APTARCHIVE $DISTS $SECTIONS" > "rootdir/etc/apt/sources.list.d/apt-test-${DISTS}-deb-src.list"
msgdone "info"
done
}
setupflataptarchive() {
msgdone "info"
done
}
setupflataptarchive() {
- local APTARCHIVE=$(readlink -f ./aptarchive)
- if [ -f ${APTARCHIVE}/Packages ]; then
+ local APTARCHIVE="$(readlink -f ./aptarchive)"
+ local APTARCHIVEURI="$(readlink -f ./aptarchive | sed 's# #%20#g')"
+ if [ -f "${APTARCHIVE}/Packages" ]; then
msgninfo "\tadd deb sources.list line… "
msgninfo "\tadd deb sources.list line… "
- echo "deb file://$APTARCHIVE /" > rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list
- msgdone "info"
+ echo "deb file://$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
+ msgdone 'info'
- rm -f rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb.list'
- if [ -f ${APTARCHIVE}/Sources ]; then
+ if [ -f "${APTARCHIVE}/Sources" ]; then
msgninfo "\tadd deb-src sources.list line… "
msgninfo "\tadd deb-src sources.list line… "
- echo "deb-src file://$APTARCHIVE /" > rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list
- msgdone "info"
+ echo "deb-src file://$APTARCHIVEURI /" > 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
+ msgdone 'info'
- rm -f rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list
+ rm -f 'rootdir/etc/apt/sources.list.d/apt-test-archive-deb-src.list'
# the key is expired, so gpg doesn't allow to sign with and the --faked-system-time
# option doesn't exist anymore (and using faketime would add a new obscure dependency)
# therefore we 'temporary' make the key not expired and restore a backup after signing
# the key is expired, so gpg doesn't allow to sign with and the --faked-system-time
# option doesn't exist anymore (and using faketime would add a new obscure dependency)
# therefore we 'temporary' make the key not expired and restore a backup after signing
- cp ${REXKEY}.sec $SECEXPIREBAK
- cp ${REXKEY}.pub $PUBEXPIREBAK
+ cp "${REXKEY}.sec" "$SECEXPIREBAK"
+ cp "${REXKEY}.pub" "$PUBEXPIREBAK"
local SECUNEXPIRED="${REXKEY}.sec.unexpired"
local PUBUNEXPIRED="${REXKEY}.pub.unexpired"
if [ -f "$SECUNEXPIRED" ] && [ -f "$PUBUNEXPIRED" ]; then
local SECUNEXPIRED="${REXKEY}.sec.unexpired"
local PUBUNEXPIRED="${REXKEY}.pub.unexpired"
if [ -f "$SECUNEXPIRED" ] && [ -f "$PUBUNEXPIRED" ]; then
- cp $SECUNEXPIRED ${REXKEY}.sec
- cp $PUBUNEXPIRED ${REXKEY}.pub
+ cp "$SECUNEXPIRED" "${REXKEY}.sec"
+ cp "$PUBUNEXPIRED" "${REXKEY}.pub"
else
if ! printf "expire\n1w\nsave\n" | $GPG --default-key "$SIGNER" --command-fd 0 --edit-key "${SIGNER}" >setexpire.gpg 2>&1; then
cat setexpire.gpg
exit 1
fi
else
if ! printf "expire\n1w\nsave\n" | $GPG --default-key "$SIGNER" --command-fd 0 --edit-key "${SIGNER}" >setexpire.gpg 2>&1; then
cat setexpire.gpg
exit 1
fi
- cp ${REXKEY}.sec $SECUNEXPIRED
- cp ${REXKEY}.pub $PUBUNEXPIRED
+ cp "${REXKEY}.sec" "$SECUNEXPIRED"
+ cp "${REXKEY}.pub" "$PUBUNEXPIRED"
- for RELEASE in $(find ${REPODIR}/ -name Release); do
- $GPG --default-key "$SIGNER" --armor --detach-sign --sign --output ${RELEASE}.gpg ${RELEASE}
+ for RELEASE in $(find "${REPODIR}/" -name Release); do
+ $GPG --default-key "$SIGNER" --armor --detach-sign --sign --output "${RELEASE}.gpg" "${RELEASE}"
local INRELEASE="$(echo "${RELEASE}" | sed 's#/Release$#/InRelease#')"
local INRELEASE="$(echo "${RELEASE}" | sed 's#/Release$#/InRelease#')"
- $GPG --default-key "$SIGNER" --clearsign --output $INRELEASE $RELEASE
+ $GPG --default-key "$SIGNER" --clearsign --output "$INRELEASE" "$RELEASE"
# we might have set a specific date for the Release file, so copy it
# we might have set a specific date for the Release file, so copy it
- touch -d "$(stat --format "%y" ${RELEASE})" ${RELEASE}.gpg ${INRELEASE}
+ touch -d "$(stat --format "%y" ${RELEASE})" "${RELEASE}.gpg" "${INRELEASE}"
done
if [ -f "$SECEXPIREBAK" ] && [ -f "$PUBEXPIREBAK" ]; then
done
if [ -f "$SECEXPIREBAK" ] && [ -f "$PUBEXPIREBAK" ]; then
- mv -f $SECEXPIREBAK ${REXKEY}.sec
- mv -f $PUBEXPIREBAK ${REXKEY}.pub
+ mv -f "$SECEXPIREBAK" "${REXKEY}.sec"
+ mv -f "$PUBEXPIREBAK" "${REXKEY}.pub"
}
redatereleasefiles() {
local DATE="$(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')"
for release in $(find aptarchive/ -name 'Release'); do
}
redatereleasefiles() {
local DATE="$(date -d "$1" '+%a, %d %b %Y %H:%M:%S %Z')"
for release in $(find aptarchive/ -name 'Release'); do
- sed -i "s/^Date: .*$/Date: ${DATE}/" $release
- touch -d "$DATE" $release
+ sed -i "s/^Date: .*$/Date: ${DATE}/" "$release"
+ touch -d "$DATE" "$release"
done
signreleasefiles "${2:-Joe Sixpack}"
}
done
signreleasefiles "${2:-Joe Sixpack}"
}
- local APTARCHIVE="file://$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive")"
+ local APTARCHIVE="file://$(readlink -f "${TMPWORKINGDIRECTORY}/aptarchive" | sed 's# #%20#g')"
for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
sed -i $LIST -e "s#$APTARCHIVE#${1}#" -e "s#http://localhost:8080/#${1}#" -e "s#https://localhost:4433/#${1}#"
done
for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
sed -i $LIST -e "s#$APTARCHIVE#${1}#" -e "s#http://localhost:8080/#${1}#" -e "s#https://localhost:4433/#${1}#"
done
- if test -x ${APTWEBSERVERBINDIR}/aptwebserver; then
+ if test -x "${APTWEBSERVERBINDIR}/aptwebserver"; then
cd aptarchive
local LOG="webserver.log"
if ! aptwebserver -o aptwebserver::fork=1 "$@" >$LOG 2>&1 ; then
cd aptarchive
local LOG="webserver.log"
if ! aptwebserver -o aptwebserver::fork=1 "$@" >$LOG 2>&1 ; then
[https]
accept = 4433
connect = 8080
[https]
accept = 4433
connect = 8080
-" > ${TMPWORKINGDIRECTORY}/stunnel.conf
+" > "${TMPWORKINGDIRECTORY}/stunnel.conf"
stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid"
stunnel4 "${TMPWORKINGDIRECTORY}/stunnel.conf"
waitforpidfile "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid"
- local PID="$(cat ${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid)"
+ local PID="$(cat "${TMPWORKINGDIRECTORY}/aptarchive/stunnel.pid")"
if [ -z "$PID" ]; then
msgdie 'Could not fork stunnel4 successfully'
fi
if [ -z "$PID" ]; then
msgdie 'Could not fork stunnel4 successfully'
fi
changetocdrom() {
mkdir -p rootdir/media/cdrom/.disk
local CD="$(readlink -f rootdir/media/cdrom)"
changetocdrom() {
mkdir -p rootdir/media/cdrom/.disk
local CD="$(readlink -f rootdir/media/cdrom)"
- echo "acquire::cdrom::mount \"${CD}\";
-acquire::cdrom::${CD}/::mount \"mv ${CD}-unmounted ${CD}\";
-acquire::cdrom::${CD}/::umount \"mv ${CD} ${CD}-unmounted\";
-acquire::cdrom::autodetect 0;" > rootdir/etc/apt/apt.conf.d/00cdrom
- echo -n "$1" > ${CD}/.disk/info
+ cat > rootdir/etc/apt/apt.conf.d/00cdrom <<EOF
+acquire::cdrom::mount "${CD}";
+acquire::cdrom::"${CD}/"::mount "mv ${CD}-unmounted ${CD}";
+acquire::cdrom::"${CD}/"::umount "mv ${CD} ${CD}-unmounted";
+acquire::cdrom::autodetect 0;
+EOF
+ echo -n "$1" > "${CD}/.disk/info"
if [ ! -d aptarchive/dists ]; then
msgdie 'Flat file archive cdroms can not be created currently'
return 1
fi
mv aptarchive/dists "$CD"
if [ ! -d aptarchive/dists ]; then
msgdie 'Flat file archive cdroms can not be created currently'
return 1
fi
mv aptarchive/dists "$CD"
- ln -s "$(readlink -f ./incoming)" $CD/pool
+ ln -s "$(readlink -f ./incoming)" "$CD/pool"
find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list' -delete
# start with an unmounted disk
mv "${CD}" "${CD}-unmounted"
# we don't want the disk to be modifiable
find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list' -delete
# start with an unmounted disk
mv "${CD}" "${CD}-unmounted"
# we don't want the disk to be modifiable
- addtrap 'prefix' "chmod -f -R +w $PWD/rootdir/media/cdrom/dists/ $PWD/rootdir/media/cdrom-unmounted/dists/ || true;"
+ addtrap 'prefix' "chmod -f -R +w \"$PWD/rootdir/media/cdrom/dists/\" \"$PWD/rootdir/media/cdrom-unmounted/dists/\" || true;"
chmod -R 555 rootdir/media/cdrom-unmounted/dists
}
chmod -R 555 rootdir/media/cdrom-unmounted/dists
}
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testoutputequal.output"
local COMPAREFILE="$1"
shift
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testoutputequal.output"
local COMPAREFILE="$1"
shift
- if "$@" 2>&1 | checkdiff $COMPAREFILE - >"$OUTPUT" 2>&1; then
+ if "$@" 2>&1 | checkdiff "$COMPAREFILE" - >"$OUTPUT" 2>&1; then
msgpass
else
echo "=== content of file we compared with (${COMPAREFILE}) ===" >>"${OUTPUT}"
msgpass
else
echo "=== content of file we compared with (${COMPAREFILE}) ===" >>"${OUTPUT}"
msggroup 'testempty'
msgtest "Test for no output of" "$*"
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testempty.comparefile"
msggroup 'testempty'
msgtest "Test for no output of" "$*"
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testempty.comparefile"
- if ("$@" >$COMPAREFILE 2>&1 || true) && test ! -s $COMPAREFILE; then
+ if ("$@" >"$COMPAREFILE" 2>&1 || true) && test ! -s "$COMPAREFILE"; then
msgpass
else
msgfailoutput '' "$COMPAREFILE" "$@"
msgpass
else
msgfailoutput '' "$COMPAREFILE" "$@"
aptautotest 'testempty' "$@"
msggroup
}
aptautotest 'testempty' "$@"
msggroup
}
+testnotempty() {
+ msggroup 'testnotempty'
+ msgtest "Test for some output of" "$*"
+ local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testnotempty.comparefile"
+ if ("$@" >"$COMPAREFILE" 2>&1 || true) && test -s "$COMPAREFILE"; then
+ msgpass
+ else
+ msgfailoutput '' "$COMPAREFILE" "$@"
+ fi
+ aptautotest 'testnotempty' "$@"
+ msggroup
+}
testequal() {
msggroup 'testequal'
testequal() {
msggroup 'testequal'
fi
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.comparefile"
fi
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequal.comparefile"
- echo "$1" > $COMPAREFILE
+ echo "$1" > "$COMPAREFILE"
shift
if [ -n "$MSG" ]; then
shift
if [ -n "$MSG" ]; then
local COMPAREFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile1"
local COMPAREFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile2"
local COMPAREAGAINST="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.compareagainst"
local COMPAREFILE1="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile1"
local COMPAREFILE2="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.comparefile2"
local COMPAREAGAINST="${TMPWORKINGDIRECTORY}/rootdir/tmp/testequalor2.compareagainst"
- echo "$1" > $COMPAREFILE1
- echo "$2" > $COMPAREFILE2
+ echo "$1" > "$COMPAREFILE1"
+ echo "$2" > "$COMPAREFILE2"
shift 2
msgtest "Test for equality OR of" "$*"
shift 2
msgtest "Test for equality OR of" "$*"
- "$@" >$COMPAREAGAINST 2>&1 || true
- if checkdiff $COMPAREFILE1 $COMPAREAGAINST >/dev/null 2>&1 || \
- checkdiff $COMPAREFILE2 $COMPAREAGAINST >/dev/null 2>&1
+ "$@" >"$COMPAREAGAINST" 2>&1 || true
+ if checkdiff "$COMPAREFILE1" "$COMPAREAGAINST" >/dev/null 2>&1 || \
+ checkdiff "$COMPAREFILE2" "$COMPAREAGAINST" >/dev/null 2>&1
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedauto.comparefile"
if [ -n "$1" ]; then
msgtest 'Test for correctly marked as auto-installed' "$*"
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedauto.comparefile"
if [ -n "$1" ]; then
msgtest 'Test for correctly marked as auto-installed' "$*"
- while [ -n "$1" ]; do echo "$1"; shift; done | sort > $COMPAREFILE
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
else
msgtest 'Test for correctly marked as auto-installed' 'no package'
else
msgtest 'Test for correctly marked as auto-installed' 'no package'
+ echo -n > "$COMPAREFILE"
fi
testoutputequal "$COMPAREFILE" aptmark showauto
msggroup
fi
testoutputequal "$COMPAREFILE" aptmark showauto
msggroup
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedmanual.comparefile"
if [ -n "$1" ]; then
msgtest 'Test for correctly marked as manually installed' "$*"
local COMPAREFILE="${TMPWORKINGDIRECTORY}/rootdir/tmp/testmarkedmanual.comparefile"
if [ -n "$1" ]; then
msgtest 'Test for correctly marked as manually installed' "$*"
- while [ -n "$1" ]; do echo "$1"; shift; done | sort > $COMPAREFILE
+ while [ -n "$1" ]; do echo "$1"; shift; done | sort > "$COMPAREFILE"
else
msgtest 'Test for correctly marked as manually installed' 'no package'
else
msgtest 'Test for correctly marked as manually installed' 'no package'
+ echo -n > "$COMPAREFILE"
fi
testoutputequal "$COMPAREFILE" aptmark showmanual
msggroup
fi
testoutputequal "$COMPAREFILE" aptmark showmanual
msggroup
done
echo '#### test output ####'
fi
done
echo '#### test output ####'
fi
msgtest 'Test for successful execution of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output"
msgtest 'Test for successful execution of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testsuccess.output"
- if "$@" >${OUTPUT} 2>&1; then
+ if "$@" >"${OUTPUT}" 2>&1; then
if expr match "$1" '^apt.*' >/dev/null; then
if grep -q -E ' runtime error: ' "$OUTPUT"; then
msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
if expr match "$1" '^apt.*' >/dev/null; then
if grep -q -E ' runtime error: ' "$OUTPUT"; then
msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
msgtest 'Test for successful execution with warnings of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output"
msgtest 'Test for successful execution with warnings of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testwarning.output"
- if "$@" >${OUTPUT} 2>&1; then
+ if "$@" >"${OUTPUT}" 2>&1; then
if expr match "$1" '^apt.*' >/dev/null; then
if grep -q -E ' runtime error: ' "$OUTPUT"; then
msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
if expr match "$1" '^apt.*' >/dev/null; then
if grep -q -E ' runtime error: ' "$OUTPUT"; then
msgfailoutput 'compiler detected undefined behavior' "$OUTPUT" "$@"
msgtest 'Test for failure in execution of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
msgtest 'Test for failure in execution of' "$*"
fi
local OUTPUT="${TMPWORKINGDIRECTORY}/rootdir/tmp/testfailure.output"
- if "$@" >${OUTPUT} 2>&1; then
+ if "$@" >"${OUTPUT}" 2>&1; then
local EXITCODE=$?
msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
else
local EXITCODE=$?
msgfailoutput "exitcode $EXITCODE" "$OUTPUT" "$@"
else
local TESTCALL="$1"
local CMD="$2"
local FIRSTOPT="$3"
local TESTCALL="$1"
local CMD="$2"
local FIRSTOPT="$3"
- local AUTOTEST="aptautotest_$(basename "$CMD" | tr -d '-')_$(echo "$FIRSTOPT" | tr -d '-')"
+ local AUTOTEST="aptautotest_$(echo "${CMD##*/}_${FIRSTOPT}" | tr -d '-')"
if command -v $AUTOTEST >/dev/null; then
shift 3
# save and restore the *.output files from other tests
# as we might otherwise override them in these automatic tests
if command -v $AUTOTEST >/dev/null; then
shift 3
# save and restore the *.output files from other tests
# as we might otherwise override them in these automatic tests
- rm -rf ${TMPWORKINGDIRECTORY}/rootdir/tmp-before
- mv ${TMPWORKINGDIRECTORY}/rootdir/tmp ${TMPWORKINGDIRECTORY}/rootdir/tmp-before
- mkdir ${TMPWORKINGDIRECTORY}/rootdir/tmp
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-before"
+ mkdir "${TMPWORKINGDIRECTORY}/rootdir/tmp"
$AUTOTEST "$TESTCALL" "$@"
$AUTOTEST "$TESTCALL" "$@"
- rm -rf ${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest
- mv ${TMPWORKINGDIRECTORY}/rootdir/tmp ${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest
- mv ${TMPWORKINGDIRECTORY}/rootdir/tmp-before ${TMPWORKINGDIRECTORY}/rootdir/tmp
+ rm -rf "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp" "${TMPWORKINGDIRECTORY}/rootdir/tmp-aptautotest"
+ mv "${TMPWORKINGDIRECTORY}/rootdir/tmp-before" "${TMPWORKINGDIRECTORY}/rootdir/tmp"
testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
# all copied files are properly chmodded
testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
testfilestats "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:755"
# all copied files are properly chmodded
+ local backupIFS="$IFS"
+ IFS="$(printf "\n\b")"
for file in $(find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -type f ! -name 'lock'); do
testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
done
for file in $(find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists" -type f ! -name 'lock'); do
testfilestats "$file" '%U:%G:%a' '=' "${TEST_DEFAULT_USER}:${TEST_DEFAULT_GROUP}:644"
done
if [ "$TESTCALL" = 'testsuccess' ]; then
# failure cases can retain partial files and such
testempty find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" -mindepth 1 ! \( -name 'lock' -o -name '*.FAILED' \)
if [ "$TESTCALL" = 'testsuccess' ]; then
# failure cases can retain partial files and such
testempty find "${TMPWORKINGDIRECTORY}/rootdir/var/lib/apt/lists/partial" -mindepth 1 ! \( -name 'lock' -o -name '*.FAILED' \)
set -e
TESTDIR=$(readlink -f $(dirname $0))
set -e
TESTDIR=$(readlink -f $(dirname $0))
setupenvironment
configarchitecture 'amd64'
TESTFILE="$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'
TESTFILE="$TESTDIR/framework"
-cp $TESTFILE aptarchive/foo
+cp "$TESTFILE" aptarchive/foo
APTARCHIVE="$(readlink -f ./aptarchive)"
filedown() {
msgtest 'Downloading the same URI twice over file' "$1"
APTARCHIVE="$(readlink -f ./aptarchive)"
filedown() {
msgtest 'Downloading the same URI twice over file' "$1"
- testsuccess --nomsg apthelper download-file file:///$APTARCHIVE/foo ./downloaded/foo1 '' file:///$APTARCHIVE/foo ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1
+ testsuccess --nomsg apthelper download-file "file:///$APTARCHIVE/foo" ./downloaded/foo1 '' "file:///$APTARCHIVE/foo" ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1
cp rootdir/tmp/testsuccess.output download.log
cp rootdir/tmp/testsuccess.output download.log
- testsuccess cmp $TESTFILE ./downloaded/foo1
+ testsuccess cmp "$TESTFILE" ./downloaded/foo1
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
testrun() {
$1 'no partial'
testrun() {
$1 'no partial'
- cp $TESTFILE ./downloaded/foo1
+ cp "$TESTFILE" ./downloaded/foo1
- cp $TESTFILE ./downloaded/foo2
+ cp "$TESTFILE" ./downloaded/foo2
- cp $TESTFILE ./downloaded/foo1
- cp $TESTFILE ./downloaded/foo2
+ cp "$TESTFILE" ./downloaded/foo1
+ cp "$TESTFILE" ./downloaded/foo2
$1 'complete partial 1+2'
$1 'complete partial 1+2'
- dd if=$TESTFILE of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
- dd if=$TESTFILE of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
- dd if=$TESTFILE of=./downloaded/foo1 bs=500 count=1 2>/dev/null
- dd if=$TESTFILE of=./downloaded/foo2 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo1 bs=500 count=1 2>/dev/null
+ dd if="$TESTFILE" of=./downloaded/foo2 bs=500 count=1 2>/dev/null
$1 'partial partial 1+2'
}
testrun 'filedown'
$1 'partial partial 1+2'
}
testrun 'filedown'
msgtest 'Downloading the same URI to different files' 'twice over http'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
cp rootdir/tmp/testsuccess.output download.log
msgtest 'Downloading the same URI to different files' 'twice over http'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
cp rootdir/tmp/testsuccess.output download.log
- testsuccess cmp $TESTDIR/framework ./downloaded/foo1
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
msgtest 'Redirect leads' 'first URI to the second URI'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo2 ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
cp rootdir/tmp/testsuccess.output download.log
msgtest 'Redirect leads' 'first URI to the second URI'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo2 ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo2 '' -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::http=1
cp rootdir/tmp/testsuccess.output download.log
- testsuccess cmp $TESTDIR/framework ./downloaded/foo1
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '103%20Redirect' ./download.log
testsuccess cmp ./downloaded/foo1 ./downloaded/foo2
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '103%20Redirect' ./download.log
msgtest 'Downloading two files via the same URI to' 'the same file'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo1 '' -o Debug::pkgAcquire::Worker=1
cp rootdir/tmp/testsuccess.output download.log
msgtest 'Downloading two files via the same URI to' 'the same file'
testsuccess --nomsg apthelper download-file http://localhost:8080/foo ./downloaded/foo1 '' http://localhost:8080/foo ./downloaded/foo1 '' -o Debug::pkgAcquire::Worker=1
cp rootdir/tmp/testsuccess.output download.log
- testsuccess cmp $TESTDIR/framework ./downloaded/foo1
+ testsuccess cmp "$TESTDIR/framework" ./downloaded/foo1
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
rm -f ./downloaded/foo1
testequal '1' grep -c '200%20URI%20Start' ./download.log
testequal '1' grep -c '201%20URI%20Done' ./download.log
rm -f ./downloaded/foo1
# install a slowed down file: otherwise its to fast to reproduce combining
NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
# install a slowed down file: otherwise its to fast to reproduce combining
NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
-rm $NEWMETHODS
-mkdir $NEWMETHODS
-for METH in $(find $OLDMETHODS ! -type d); do
- ln -s $OLDMETHODS/$(basename $METH) $NEWMETHODS
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
cat >"${NEWMETHODS}/file" <<EOF
#!/bin/sh
rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
cat >"${NEWMETHODS}/file" <<EOF
#!/bin/sh
cp rootdir/tmp/testsuccess.output download.log
#cat download.log
aptget indextargets --format '$(FILENAME)' --no-release-info | sort > file.lst
cp rootdir/tmp/testsuccess.output download.log
#cat download.log
aptget indextargets --format '$(FILENAME)' --no-release-info | sort > file.lst
- testequal "$(find $(readlink -f ./rootdir/var/lib/apt/lists) -name '*_dists_*' \( ! -name '*InRelease' \) -type f | sort)" cat file.lst
+ testequal "$(find "$(readlink -f ./rootdir/var/lib/apt/lists)" -name '*_dists_*' \( ! -name '*InRelease' \) -type f | sort)" cat file.lst
testsuccess aptcache policy
testequal "foo:
Installed: (none)
testsuccess aptcache policy
testequal "foo:
Installed: (none)
-TESTDIR=$(readlink -f $(dirname $0))
+TESTDIR="$(readlink -f "$(dirname $0)")"
. $TESTDIR/framework
setupenvironment
configarchitecture 'amd64'
. $TESTDIR/framework
setupenvironment
configarchitecture 'amd64'
testdownload apt_2.0_all.deb apt
DEBFILE="$(readlink -f ../aptarchive)/pool/apt_2.0_all.deb"
testdownload apt_2.0_all.deb apt
DEBFILE="$(readlink -f ../aptarchive)/pool/apt_2.0_all.deb"
-testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s $DEBFILE) SHA512:$(sha512sum $DEBFILE | cut -d' ' -f 1)" aptget download apt --print-uris
+testequal "'file://${DEBFILE}' apt_2.0_all.deb $(stat -c%s "$DEBFILE") SHA512:$(sha512sum "$DEBFILE" | cut -d' ' -f 1)" aptget download apt --print-uris
# deb:677887
testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms --print-uris
# deb:677887
testequal "E: Can't find a source to download version '1.0' of 'vrms:i386'" aptget download vrms --print-uris
# restore "root" rights
cd "$OLDPWD"
# restore "root" rights
cd "$OLDPWD"
-chmod -f -R +w $PWD/rootdir/var/cache/apt/archives
+chmod -f -R +w "$PWD/rootdir/var/cache/apt/archives"
rm -rf rootdir/var/cache/apt/archives/
# file: debs aren't copied to archives, so change to http which obviously are
rm -rf rootdir/var/cache/apt/archives/
# file: debs aren't copied to archives, so change to http which obviously are
setupaptarchive --no-update
setupaptarchive --no-update
-APTARCHIVE=$(readlink -f ./aptarchive)
-rm -f $APTARCHIVE/dists/unstable/*Release*
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
# update without authenticated InRelease file
testwarning aptget update --allow-insecure-repositories
# update without authenticated InRelease file
testwarning aptget update --allow-insecure-repositories
setupaptarchive --no-update
setupaptarchive --no-update
-APTARCHIVE=$(readlink -f ./aptarchive)
-rm -f $APTARCHIVE/dists/unstable/*Release*
+APTARCHIVE="$(readlink -f ./aptarchive)"
+find "$APTARCHIVE/dists/unstable" -name '*Release*' -delete
# update without authenticated files leads to warning
testfailureequal "Get:1 file:$APTARCHIVE unstable InRelease
# update without authenticated files leads to warning
testfailureequal "Get:1 file:$APTARCHIVE unstable InRelease
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
setupenvironment
configarchitecture 'native'
setupenvironment
configarchitecture 'native'
# old conffile
setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable'
BUILDDIR='incoming/compiz-core-1.0'
# old conffile
setupsimplenativepackage 'compiz-core' 'native' '1.0' 'unstable'
BUILDDIR='incoming/compiz-core-1.0'
-mkdir -p ${BUILDDIR}/debian/compiz-core/etc
-echo 'foo=bar;' > ${BUILDDIR}/compiz.conf
-echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo=bar;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
# new conffile
setupsimplenativepackage 'compiz-core' 'native' '2.0' 'unstable'
BUILDDIR='incoming/compiz-core-2.0'
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
# new conffile
setupsimplenativepackage 'compiz-core' 'native' '2.0' 'unstable'
BUILDDIR='incoming/compiz-core-2.0'
-mkdir -p ${BUILDDIR}/debian/compiz-core/etc
-echo 'foo2=bar2;' > ${BUILDDIR}/compiz.conf
-echo 'compiz.conf /etc/compiz.conf' >> ${BUILDDIR}/debian/install
+mkdir -p "${BUILDDIR}/debian/compiz-core/etc"
+echo 'foo2=bar2;' > "${BUILDDIR}/compiz.conf"
+echo 'compiz.conf /etc/compiz.conf' >> "${BUILDDIR}/debian/install"
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
testsuccess aptget install compiz-core=1.0
# fake conffile change
testsuccess aptget install compiz-core=1.0
# fake conffile change
-echo "meep" >> rootdir/etc/compiz.conf/compiz.conf
+echo 'meep' >> rootdir/etc/compiz.conf/compiz.conf
# FIXME: Is there really no way to see if dpkg actually prompts?
msgtest 'Test for successful execution of' 'apt-get install compiz-core=2.0'
# FIXME: Is there really no way to see if dpkg actually prompts?
msgtest 'Test for successful execution of' 'apt-get install compiz-core=2.0'
-OUTPUT=$(mktemp)
-addtrap "rm $OUTPUT;"
+OUTPUT="$(mktemp)"
+addtrap "rm \"$OUTPUT\";"
-if aptget install compiz-core=2.0 -o APT::Status-Fd=3 -o Dpkg::Use-Pty=false -o dpkg::options::='--force-confold' >${OUTPUT} 2>&1; then
- msgpass
-else
- echo
- cat $OUTPUT
- msgfail
-fi
+testsuccess --nomsg aptget install compiz-core=2.0 -o APT::Status-Fd=3 -o Dpkg::Use-Pty=false -o dpkg::options::='--force-confold'
# and ensure there is a conffile message in the file
msgtest 'Test status fd for an included' 'pmconffile msg'
# and ensure there is a conffile message in the file
msgtest 'Test status fd for an included' 'pmconffile msg'
-grep -q "pmconffile:/etc/compiz.conf/compiz.conf" apt-progress.log && msgpass || (cat apt-progress.log && msgfail)
+testsuccess --nomsg grep "pmconffile:/etc/compiz.conf/compiz.conf" apt-progress.log
buildsimplenativepackage 'foo' 'all' '1.0'
setupaptarchive
buildsimplenativepackage 'foo' 'all' '1.0'
setupaptarchive
-APTARCHIVE=$(readlink -f ./aptarchive)
+APTARCHIVE="$(readlink -f ./aptarchive)"
# corrupt the Translation-en file to look like a regular Packages file
rm rootdir/var/cache/apt/*.bin
# corrupt the Translation-en file to look like a regular Packages file
rm rootdir/var/cache/apt/*.bin
-cp $APTARCHIVE/dists/unstable/main/binary-amd64/Packages \
+cp "$APTARCHIVE/dists/unstable/main/binary-amd64/Packages" \
rootdir/var/lib/apt/lists/*Translation-en
# ensure that there is no Version for the package foo generated out of
rootdir/var/lib/apt/lists/*Translation-en
# ensure that there is no Version for the package foo generated out of
simulate_mitm_and_inject_evil_package()
{
redatereleasefiles '+1 hour'
simulate_mitm_and_inject_evil_package()
{
redatereleasefiles '+1 hour'
- rm -f $APTARCHIVE/dists/unstable/InRelease
- rm -f $APTARCHIVE/dists/unstable/Release.gpg
+ rm -f "$APTARCHIVE/dists/unstable/InRelease"
+ rm -f "$APTARCHIVE/dists/unstable/Release.gpg"
inject_evil_package
}
inject_evil_package()
{
inject_evil_package
}
inject_evil_package()
{
- cat > $APTARCHIVE/dists/unstable/main/binary-i386/Packages <<EOF
+ cat > "$APTARCHIVE/dists/unstable/main/binary-i386/Packages" <<EOF
Package: evil
Installed-Size: 29
Maintainer: Joe Sixpack <joe@example.org>
Package: evil
Installed-Size: 29
Maintainer: Joe Sixpack <joe@example.org>
testsuccess aptget source foo --print-uris
LISTDIR=rootdir/var/lib/apt/lists
testsuccess aptget source foo --print-uris
LISTDIR=rootdir/var/lib/apt/lists
- if ! ( ls $LISTDIR/*InRelease >/dev/null 2>&1 ||
- ls $LISTDIR/*Release.gpg >/dev/null 2>&1 ); then
- echo "Can not find InRelease/Release.gpg in $(ls $LISTDIR)"
- msgfail
- fi
+ testempty find "$LISTDIR" -name 'InRelease' -o -name 'Release.gpg'
}
setupaptarchive_with_lists_clean()
}
setupaptarchive_with_lists_clean()
{
# setup archive with Release/Release.gpg (but no InRelease)
setupaptarchive_with_lists_clean
{
# setup archive with Release/Release.gpg (but no InRelease)
setupaptarchive_with_lists_clean
- rm $APTARCHIVE/dists/unstable/InRelease
+ rm "$APTARCHIVE/dists/unstable/InRelease"
testsuccess aptget update
listcurrentlistsdirectory > lists.before
testsuccess aptget update
listcurrentlistsdirectory > lists.before
# simulate moving to a unsigned but otherwise valid repo
simulate_mitm_and_inject_evil_package
generatereleasefiles '+2 hours'
# simulate moving to a unsigned but otherwise valid repo
simulate_mitm_and_inject_evil_package
generatereleasefiles '+2 hours'
- find $APTARCHIVE -name '*Packages*' -exec touch -d '+2 hours' {} \;
+ find "$APTARCHIVE" -name '*Packages*' -exec touch -d '+2 hours' {} \;
# and ensure we can update to it (with enough force)
testwarning aptget update --allow-insecure-repositories \
# and ensure we can update to it (with enough force)
testwarning aptget update --allow-insecure-repositories \
listcurrentlistsdirectory > lists.before
# do what CVE-2012-0214 did
listcurrentlistsdirectory > lists.before
# do what CVE-2012-0214 did
- rm $APTARCHIVE/dists/unstable/InRelease
- rm $APTARCHIVE/dists/unstable/Release.gpg
+ rm "$APTARCHIVE/dists/unstable/InRelease"
+ rm "$APTARCHIVE/dists/unstable/Release.gpg"
inject_evil_package
# build valid Release file
aptftparchive -qq release ./aptarchive > aptarchive/dists/unstable/Release
inject_evil_package
# build valid Release file
aptftparchive -qq release ./aptarchive > aptarchive/dists/unstable/Release
listcurrentlistsdirectory > lists.before
# replace InRelease with something else
listcurrentlistsdirectory > lists.before
# replace InRelease with something else
- mv $APTARCHIVE/dists/unstable/Release $APTARCHIVE/dists/unstable/InRelease
+ mv "$APTARCHIVE/dists/unstable/Release" "$APTARCHIVE/dists/unstable/InRelease"
testfailuremsg "W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
testfailuremsg "W: Failed to fetch file:${APTARCHIVE}/dists/unstable/InRelease Clearsigned file isn't valid, got 'NOSPLIT' (does the network require authentication?)
E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update
listcurrentlistsdirectory > lists.before
# now remove InRelease and subvert Release do no longer verify
listcurrentlistsdirectory > lists.before
# now remove InRelease and subvert Release do no longer verify
- sed -i 's/^Codename:.*/Codename: evil!/' $APTARCHIVE/dists/unstable/InRelease
+ sed -i 's/^Codename:.*/Codename: evil!/' "$APTARCHIVE/dists/unstable/InRelease"
inject_evil_package
testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
inject_evil_package
testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable InRelease: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
{
# setup archive with InRelease
setupaptarchive_with_lists_clean
{
# setup archive with InRelease
setupaptarchive_with_lists_clean
- rm $APTARCHIVE/dists/unstable/InRelease
+ rm "$APTARCHIVE/dists/unstable/InRelease"
testsuccess aptget update
listcurrentlistsdirectory > lists.before
# now subvert Release do no longer verify
testsuccess aptget update
listcurrentlistsdirectory > lists.before
# now subvert Release do no longer verify
- echo "Some evil data" >> $APTARCHIVE/dists/unstable/Release
+ echo "Some evil data" >> "$APTARCHIVE/dists/unstable/Release"
inject_evil_package
testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable Release: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
inject_evil_package
testwarningequal "W: An error occurred during the signature verification. The repository is not updated and the previous index files will be used. GPG error: file:${APTARCHIVE} unstable Release: The following signatures were invalid: BADSIG 5A90D141DBAC8DAE Joe Sixpack (APT Testcases Dummy) <joe@example.org>
# setup the archive and ensure we have a single package that installs fine
setupaptarchive
# setup the archive and ensure we have a single package that installs fine
setupaptarchive
-APTARCHIVE=$(readlink -f ./aptarchive)
+APTARCHIVE="$(readlink -f ./aptarchive)"
assert_repo_is_intact
# test the various cases where a repo may go from signed->unsigned
assert_repo_is_intact
# test the various cases where a repo may go from signed->unsigned
- insertpackage "unstable" "new" "all" "1.0"
- insertsource "unstable" "new" "all" "1.0"
+ insertpackage 'unstable' 'new' 'all' '1.0'
+ insertsource 'unstable' 'new' 'all' '1.0'
setupaptarchive --no-update "$@"
}
break_repository_sources_index() {
setupaptarchive --no-update "$@"
}
break_repository_sources_index() {
- printf 'xxx' > $APTARCHIVE/dists/unstable/main/source/Sources
+ printf 'xxx' > "$APTARCHIVE/dists/unstable/main/source/Sources"
compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@"
}
compressfile "$APTARCHIVE/dists/unstable/main/source/Sources" "$@"
}
create_fresh_archive
testsuccess aptget update
listcurrentlistsdirectory > lists.before
create_fresh_archive
testsuccess aptget update
listcurrentlistsdirectory > lists.before
- testsuccessequal "old/unstable 1.0 all" apt list -q
+ testsuccessequal 'old/unstable 1.0 all' apt list -q
}
test_inrelease_to_new_inrelease() {
}
test_inrelease_to_new_inrelease() {
add_new_package '+1hour'
testsuccess aptget update -o Debug::Acquire::Transaction=1
add_new_package '+1hour'
testsuccess aptget update -o Debug::Acquire::Transaction=1
- testsuccessequal "new/unstable 1.0 all
-old/unstable 1.0 all" apt list -q
+ testsuccessequal 'new/unstable 1.0 all
+old/unstable 1.0 all' apt list -q
}
test_inrelease_to_broken_hash_reverts_all() {
}
test_inrelease_to_broken_hash_reverts_all() {
add_new_package '+1hour'
# switch to a unsigned repo now
add_new_package '+1hour'
# switch to a unsigned repo now
- rm $APTARCHIVE/dists/unstable/InRelease
- rm $APTARCHIVE/dists/unstable/Release.gpg
+ rm "$APTARCHIVE/dists/unstable/InRelease"
+ rm "$APTARCHIVE/dists/unstable/Release.gpg"
# update fails
testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq
# update fails
testfailureequal "E: The repository 'file:${APTARCHIVE} unstable Release' is no longer signed." aptget update -qq
testfileequal lists.before "$(listcurrentlistsdirectory)"
testsuccess aptget install old -s
testfailure aptget install new -s
testfileequal lists.before "$(listcurrentlistsdirectory)"
testsuccess aptget install old -s
testfailure aptget install new -s
- testsuccess ls $ROOTDIR/var/lib/apt/lists/*_InRelease
- testfailure ls $ROOTDIR/var/lib/apt/lists/*_Release
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
}
test_inrelease_to_release_reverts_all() {
}
test_inrelease_to_release_reverts_all() {
# switch to a unsigned repo now
add_new_package '+1hour'
# switch to a unsigned repo now
add_new_package '+1hour'
- rm $APTARCHIVE/dists/unstable/InRelease
- rm $APTARCHIVE/dists/unstable/Release.gpg
+ rm "$APTARCHIVE/dists/unstable/InRelease"
+ rm "$APTARCHIVE/dists/unstable/Release.gpg"
# break it
break_repository_sources_index '+1hour'
# break it
break_repository_sources_index '+1hour'
testfileequal lists.before "$(listcurrentlistsdirectory)"
testsuccess aptget install old -s
testfailure aptget install new -s
testfileequal lists.before "$(listcurrentlistsdirectory)"
testsuccess aptget install old -s
testfailure aptget install new -s
- testsuccess ls $ROOTDIR/var/lib/apt/lists/*_InRelease
- testfailure ls $ROOTDIR/var/lib/apt/lists/*_Release
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_Release'
}
test_unauthenticated_to_invalid_inrelease() {
msgmsg 'Test UnAuthenticated to invalid InRelease reverts everything'
create_fresh_archive
}
test_unauthenticated_to_invalid_inrelease() {
msgmsg 'Test UnAuthenticated to invalid InRelease reverts everything'
create_fresh_archive
- rm $APTARCHIVE/dists/unstable/InRelease
- rm $APTARCHIVE/dists/unstable/Release.gpg
+ rm "$APTARCHIVE/dists/unstable/InRelease"
+ rm "$APTARCHIVE/dists/unstable/Release.gpg"
testwarning aptget update --allow-insecure-repositories
listcurrentlistsdirectory > lists.before
testwarning aptget update --allow-insecure-repositories
listcurrentlistsdirectory > lists.before
E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
testfileequal lists.before "$(listcurrentlistsdirectory)"
E: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
testfileequal lists.before "$(listcurrentlistsdirectory)"
- testfailure ls rootdir/var/lib/apt/lists/*_InRelease
+ testempty find "${ROOTDIR}/var/lib/apt/lists" -maxdepth 1 -name '*_InRelease'
testfailureequal "WARNING: The following packages cannot be authenticated!
old
E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
testfailureequal "WARNING: The following packages cannot be authenticated!
old
E: There were unauthenticated packages and -y was used without --allow-unauthenticated" aptget install -qq -y old
W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
testfileequal lists.before "$(listcurrentlistsdirectory)"
W: Some index files failed to download. They have been ignored, or old ones used instead." aptget update -qq
testfileequal lists.before "$(listcurrentlistsdirectory)"
- testsuccess ls rootdir/var/lib/apt/lists/*_InRelease
+ testnotempty find "${ROOTDIR}/var/lib/apt/lists" -name '*_InRelease'
}
test_inrelease_to_broken_gzip() {
}
test_inrelease_to_broken_gzip() {
signreleasefiles
# append junk at the end of the compressed file
signreleasefiles
# append junk at the end of the compressed file
- echo "lala" >> $APTARCHIVE/dists/unstable/main/source/Sources.gz
- touch -d '+2min' $APTARCHIVE/dists/unstable/main/source/Sources.gz
+ echo "lala" >> "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
+ touch -d '+2min' "$APTARCHIVE/dists/unstable/main/source/Sources.gz"
# remove uncompressed file to avoid fallback
# remove uncompressed file to avoid fallback
- rm $APTARCHIVE/dists/unstable/main/source/Sources
+ rm "$APTARCHIVE/dists/unstable/main/source/Sources"
testfailure aptget update
testsuccess grep 'Hash Sum mismatch' rootdir/tmp/testfailure.output
testfailure aptget update
testsuccess grep 'Hash Sum mismatch' rootdir/tmp/testfailure.output
# setup the archive and ensure we have a single package that installs fine
setupaptarchive
# setup the archive and ensure we have a single package that installs fine
setupaptarchive
-APTARCHIVE=$(readlink -f ./aptarchive)
-ROOTDIR=${TMPWORKINGDIRECTORY}/rootdir
-APTARCHIVE_LISTS="$(echo $APTARCHIVE | tr "/" "_" )"
+APTARCHIVE="$(readlink -f ./aptarchive)"
+ROOTDIR="${TMPWORKINGDIRECTORY}/rootdir"
+APTARCHIVE_LISTS="$(echo "$APTARCHIVE" | tr "/" "_" )"
# test the following cases:
# - InRelease -> broken InRelease revert to previous state
# test the following cases:
# - InRelease -> broken InRelease revert to previous state
-cat <<-EOF >aptarchive/Packages
+cat >aptarchive/Packages <<EOF
msgtest 'Test apt-get update with incorrect' 'TMPDIR'
msgtest 'Test apt-get update with incorrect' 'TMPDIR'
-OUTPUT=$(mktemp)
-addtrap "rm $OUTPUT;"
+OUTPUT="$(mktemp)"
+addtrap "rm \"$OUTPUT\";"
export TMPDIR=/does-not-exists
export TMPDIR=/does-not-exists
-if aptget update -o Debug::Acquire::gpg=1 >${OUTPUT} 2>&1; then
- msgpass
-else
- echo
- cat $OUTPUT
- msgfail
-fi
+testsuccess aptget update -o Debug::Acquire::gpg=1
unset TMPDIR
testsuccessequal 'coolstuff' aptcache pkgnames
unset TMPDIR
testsuccessequal 'coolstuff' aptcache pkgnames
# install a slowed down file: otherwise its to fast to reproduce combining
NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
# install a slowed down file: otherwise its to fast to reproduce combining
NEWMETHODS="$(readlink -f rootdir)/usr/lib/apt/methods"
OLDMETHODS="$(readlink -f rootdir/usr/lib/apt/methods)"
-rm $NEWMETHODS
-mkdir $NEWMETHODS
-for METH in $(find $OLDMETHODS ! -type d); do
- ln -s $OLDMETHODS/$(basename $METH) $NEWMETHODS
+rm "$NEWMETHODS"
+mkdir "$NEWMETHODS"
+backupIFS="$IFS"
+IFS="$(printf "\n\b")"
+for METH in $(find "$OLDMETHODS" ! -type d); do
+ ln -s "$OLDMETHODS/$(basename "$METH")" "$NEWMETHODS"
+IFS="$backupIFS"
+rm "$NEWMETHODS/https"
cd downloaded
testfailureequal "E: The method driver $(readlink -f './../')/rootdir/usr/lib/apt/methods/https could not be found.
cd downloaded
testfailureequal "E: The method driver $(readlink -f './../')/rootdir/usr/lib/apt/methods/https could not be found.
cd - >/dev/null
# revert to all methods
cd - >/dev/null
# revert to all methods
-ln -s $OLDMETHODS/https $NEWMETHODS
+ln -s "$OLDMETHODS/https" "$NEWMETHODS"
# check that downgrades from https to http are not allowed
webserverconfig 'aptwebserver::support::http' 'true'
# check that downgrades from https to http are not allowed
webserverconfig 'aptwebserver::support::http' 'true'
local TYPE="$1"
setupsimplenativepackage "triggerable-$TYPE" 'all' '1.0' 'unstable' "Depends: trigdepends-$TYPE"
BUILDDIR="incoming/triggerable-${TYPE}-1.0"
local TYPE="$1"
setupsimplenativepackage "triggerable-$TYPE" 'all' '1.0' 'unstable' "Depends: trigdepends-$TYPE"
BUILDDIR="incoming/triggerable-${TYPE}-1.0"
- cat >${BUILDDIR}/debian/postinst <<EOF
+ cat >"${BUILDDIR}/debian/postinst" <<EOF
#!/bin/sh
if [ "\$1" = 'triggered' ]; then
ls -l /proc/self/fd/
fi
EOF
#!/bin/sh
if [ "\$1" = 'triggered' ]; then
ls -l /proc/self/fd/
fi
EOF
- echo "$TYPE /usr/share/doc" > ${BUILDDIR}/debian/triggers
+ echo "$TYPE /usr/share/doc" > "${BUILDDIR}/debian/triggers"
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
buildsimplenativepackage "trigdepends-$TYPE" 'all' '1.0' 'unstable'
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
setupenvironment
configarchitecture 'native'
setupenvironment
configarchitecture 'native'
-buildsimplenativepackage "old-pkg" "native" "1.0" "stable"
-buildsimplenativepackage "unrelated" "all" "0.5" "unstable"
+buildsimplenativepackage 'old-pkg' 'native' '1.0' 'stable'
+buildsimplenativepackage 'unrelated' 'all' '0.5' 'unstable'
-setupsimplenativepackage "new-pkg" "native" "2.0" "unstable" "Provides: old-pkg
+setupsimplenativepackage 'new-pkg' 'native' '2.0' 'unstable' 'Provides: old-pkg
-Conflicts: old-pkg (<< 2.0)"
-BUILDDIR="incoming/new-pkg-2.0"
-echo "/usr/share/doc/new-pkg /usr/share/doc/old-pkg" > ${BUILDDIR}/debian/new-pkg.links
-buildpackage "$BUILDDIR" "unstable" "main"
+Conflicts: old-pkg (<< 2.0)'
+BUILDDIR='incoming/new-pkg-2.0'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/new-pkg.links"
+buildpackage "$BUILDDIR" 'unstable' 'main'
-setupsimplenativepackage "old-pkg" "all" "2.0" "unstable" "Depends: new-pkg"
-BUILDDIR="incoming/old-pkg-2.0"
-echo "/usr/share/doc/new-pkg /usr/share/doc/old-pkg" > ${BUILDDIR}/debian/old-pkg.links
+setupsimplenativepackage 'old-pkg' 'all' '2.0' 'unstable' 'Depends: new-pkg'
+BUILDDIR='incoming/old-pkg-2.0'
+echo '/usr/share/doc/new-pkg /usr/share/doc/old-pkg' > "${BUILDDIR}/debian/old-pkg.links"
echo "
override_dh_link:
rm -rf debian/old-pkg/usr/share/doc/old-pkg/
echo "
override_dh_link:
rm -rf debian/old-pkg/usr/share/doc/old-pkg/
- dh_link" >> ${BUILDDIR}/debian/rules
-buildpackage "$BUILDDIR" "unstable" "main"
+ dh_link" >> "${BUILDDIR}/debian/rules"
+buildpackage "$BUILDDIR" 'unstable' 'main'
rm -rf "$BUILDDIR"
setupaptarchive
rm -rf "$BUILDDIR"
setupaptarchive
testmarkedauto # old-pkg is manual installed
testmarkedauto # old-pkg is manual installed
-CMD="aptget dist-upgrade -y -q=0"
-msgtest "Test for equality of" "$CMD"
-COMPAREFILE=$(mktemp)
-echo "The following package disappeared from your system as
+CMD='aptget dist-upgrade -y -q=0'
+msgtest 'Test for equality of' "$CMD"
+COMPAREFILE="$(mktemp)"
+echo 'The following package disappeared from your system as
all files have been overwritten by other packages:
old-pkg
all files have been overwritten by other packages:
old-pkg
-Note: This is done automatically and on purpose by dpkg." > $COMPAREFILE
-$CMD 2>&1 | tail -n 4 | diff -u $COMPAREFILE - && msgpass || msgfail
-rm $COMPAREFILE
+Note: This is done automatically and on purpose by dpkg.' > "$COMPAREFILE"
+$CMD 2>&1 | tail -n 4 | diff -u "$COMPAREFILE" - && msgpass || msgfail
+rm "$COMPAREFILE"
sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -e "s#:$(getarchitecture 'native') #:native #"
sed -i rootdir/var/log/apt/history.log -e '/^Commandline: / d' -e '/^Start-Date: / d' -e '/^End-Date: / d' -e "s#:$(getarchitecture 'native') #:native #"
-testfileequal "rootdir/var/log/apt/history.log" "
+testfileequal 'rootdir/var/log/apt/history.log' '
Install: old-pkg:native (1.0)
Install: new-pkg:native (2.0, automatic)
Upgrade: old-pkg:native (1.0, 2.0)
Install: old-pkg:native (1.0)
Install: new-pkg:native (2.0, automatic)
Upgrade: old-pkg:native (1.0, 2.0)
-Disappeared: old-pkg (1.0)"
+Disappeared: old-pkg (1.0)'
testmarkedauto # new-pkg should have get the manual flag from old-pkg
testmarkedauto # new-pkg should have get the manual flag from old-pkg
setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee'
BUILDDIR="incoming/failure-$1-1.0"
echo '#!/bin/sh
setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee'
BUILDDIR="incoming/failure-$1-1.0"
echo '#!/bin/sh
-exit 29' > ${BUILDDIR}/debian/$1
+exit 29' > "${BUILDDIR}/debian/$1"
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
}
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
rm -rf "$BUILDDIR"
}
echo '#!/bin/sh
echo "$1: START"
echo "$1: MaiN"
echo '#!/bin/sh
echo "$1: START"
echo "$1: MaiN"
-echo "$1: ENd"' > $APTHOOK
-chmod +x $APTHOOK
+echo "$1: ENd"' > "$APTHOOK"
+chmod +x "$APTHOOK"
echo "DPKG::Pre-Invoke:: \"${APTHOOK} PRE\";
DPKG::Post-Invoke:: \"${APTHOOK} POST\";" > rootdir/etc/apt/apt.conf.d/99apthooks
testmyfailure() {
local PROGRESS='rootdir/tmp/progress.log'
echo "DPKG::Pre-Invoke:: \"${APTHOOK} PRE\";
DPKG::Post-Invoke:: \"${APTHOOK} POST\";" > rootdir/etc/apt/apt.conf.d/99apthooks
testmyfailure() {
local PROGRESS='rootdir/tmp/progress.log'
testfailure "$@" -o APT::Status-Fd=3
msgtest 'Test for failure message of maintainerscript in' 'console log'
local TEST='rootdir/tmp/testfailure.output'
if grep -q 'exit status 29' "$TEST"; then
msgpass
else
testfailure "$@" -o APT::Status-Fd=3
msgtest 'Test for failure message of maintainerscript in' 'console log'
local TEST='rootdir/tmp/testfailure.output'
if grep -q 'exit status 29' "$TEST"; then
msgpass
else
msgfail
fi
msgtest 'Test for proper execution of invoke scripts in' 'console log'
msgfail
fi
msgtest 'Test for proper execution of invoke scripts in' 'console log'
- if grep -q '^PRE: START$' $TEST &&
- grep -q '^PRE: MaiN$' $TEST &&
- grep -q '^PRE: ENd$' $TEST &&
- grep -q '^POST: START$' $TEST &&
- grep -q '^POST: MaiN$' $TEST &&
- grep -q '^POST: ENd$' $TEST; then
+ if grep -q '^PRE: START$' "$TEST" &&
+ grep -q '^PRE: MaiN$' "$TEST" &&
+ grep -q '^PRE: ENd$' "$TEST" &&
+ grep -q '^POST: START$' "$TEST" &&
+ grep -q '^POST: MaiN$' "$TEST" &&
+ grep -q '^POST: ENd$' "$TEST"; then
msgfail
fi
msgtest 'Test for failure message of maintainerscript in' 'progress log'
if grep -q '^pmerror:.\+exit status 29$' "$PROGRESS"; then
msgpass
else
msgfail
fi
msgtest 'Test for failure message of maintainerscript in' 'progress log'
if grep -q '^pmerror:.\+exit status 29$' "$PROGRESS"; then
msgpass
else
msgfail
fi
testmarkedauto 'dependee'
msgfail
fi
testmarkedauto 'dependee'
testprotected() {
rm -f rootdir/etc/apt/apt.conf.d/01autoremove-kernels protected.list
testprotected() {
rm -f rootdir/etc/apt/apt.conf.d/01autoremove-kernels protected.list
- testsuccess runapt sh ${TESTDIR}/../../debian/apt.auto-removal.sh "$@"
+ testsuccess runapt sh "${TESTDIR}/../../debian/apt.auto-removal.sh" "$@"
testfailure test -s rootdir/tmp/testsuccess.output
msgtest 'Check kernel autoremoval protection list' 'is created'
testfailure test -s rootdir/tmp/testsuccess.output
msgtest 'Check kernel autoremoval protection list' 'is created'
buildaptarchive
setupflataptarchive
buildaptarchive
setupflataptarchive
+changetowebserver -o aptwebserver::support::modified-since=false
PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
fi
fi
for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
fi
fi
for release in $(find rootdir/var/lib/apt/lists 2> /dev/null); do
- touch -d 'now - 1 year' $release
+ touch -d 'now - 1 year' "$release"
- cp $1 aptarchive/Packages
+ cp "$1" aptarchive/Packages
find aptarchive -name 'Release' -delete
compressfile 'aptarchive/Packages' "$DATE"
generatereleasefiles "$DATE"
find aptarchive -name 'Release' -delete
compressfile 'aptarchive/Packages' "$DATE"
generatereleasefiles "$DATE"
# fake our downloadable file
touch aptarchive/apt.deb
# fake our downloadable file
touch aptarchive/apt.deb
-PKGFILE="${TESTDIR}/$(echo "$(basename $0)" | sed 's#^test-#Packages-#')"
+PKGFILE="${TESTDIR}/$(echo "$(basename "$0")" | sed 's#^test-#Packages-#')"
updatewithwarnings() {
testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
updatewithwarnings() {
testwarning aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Joe Sixpack'
testsuccess aptget update
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Joe Sixpack'
testsuccess aptget update
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
" aptcache show apt
installaptold
+ prepare "${PKGFILE}-new"
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
- testsuccessequal "$(cat ${PKGFILE}-new)
+ testsuccessequal "$(cat "${PKGFILE}-new")
" aptcache show apt
installaptnew
" aptcache show apt
installaptnew
rm -rf rootdir/var/lib/apt/lists
cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
signreleasefiles 'Rex Expired'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Rex Expired'
updatewithwarnings '^W: .* KEYEXPIRED'
rm -rf rootdir/var/lib/apt/lists
cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
signreleasefiles 'Rex Expired'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Rex Expired'
updatewithwarnings '^W: .* KEYEXPIRED'
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
failaptold
rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
" aptcache show apt
failaptold
rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Marvin Paranoid'
updatewithwarnings '^W: .* NO_PUBKEY'
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Marvin Paranoid'
updatewithwarnings '^W: .* NO_PUBKEY'
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
failaptold
" aptcache show apt
failaptold
+ prepare "${PKGFILE}-new"
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Bad warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Bad warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
- testsuccessequal "$(cat ${PKGFILE}-new)
+ testsuccessequal "$(cat "${PKGFILE}-new")
" aptcache show apt
installaptnew
" aptcache show apt
installaptnew
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Joe Sixpack'
testsuccess aptget update
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Cold archive signed by' 'Joe Sixpack'
testsuccess aptget update
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
" aptcache show apt
installaptold
+ prepare "${PKGFILE}-new"
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Marvin Paranoid'
updatewithwarnings '^W: .* NO_PUBKEY'
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Marvin Paranoid'
updatewithwarnings '^W: .* NO_PUBKEY'
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
" aptcache show apt
installaptold
+ prepare "${PKGFILE}-new"
cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
signreleasefiles 'Rex Expired'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Rex Expired'
updatewithwarnings '^W: .* KEYEXPIRED'
cp keys/rexexpired.pub rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
signreleasefiles 'Rex Expired'
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Rex Expired'
updatewithwarnings '^W: .* KEYEXPIRED'
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
" aptcache show apt
installaptold
rm rootdir/etc/apt/trusted.gpg.d/rexexpired.gpg
+ prepare "${PKGFILE}-new"
signreleasefiles
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
signreleasefiles
find aptarchive/ -name "$DELETEFILE" -delete
msgmsg 'Good warm archive signed by' 'Joe Sixpack'
testsuccess aptget update
- testsuccessequal "$(cat ${PKGFILE}-new)
+ testsuccessequal "$(cat "${PKGFILE}-new")
" aptcache show apt
installaptnew
" aptcache show apt
installaptnew
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
local MARVIN="$(readlink -f keys/marvinparanoid.pub)"
sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
testsuccess aptget update -o Debug::pkgAcquire::Worker=1
local MARVIN="$(readlink -f keys/marvinparanoid.pub)"
sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
testsuccess aptget update -o Debug::pkgAcquire::Worker=1
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
" aptcache show apt
installaptold
sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 #" rootdir/etc/apt/sources.list.d/*
local MARVIN="$(aptkey --keyring $MARVIN finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
sed -i "s#^\(deb\(-src\)\?\) \[signed-by=$MARVIN\] #\1 #" rootdir/etc/apt/sources.list.d/*
local MARVIN="$(aptkey --keyring $MARVIN finger | grep 'Key fingerprint' | cut -d'=' -f 2 | tr -d ' ')"
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Marvin Paranoid'
find aptarchive/ -name "$DELETEFILE" -delete
sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
cp keys/marvinparanoid.pub rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
sed -i "s#^\(deb\(-src\)\?\) #\1 [signed-by=$MARVIN] #" rootdir/etc/apt/sources.list.d/*
cp keys/marvinparanoid.pub rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
testsuccess aptget update -o Debug::pkgAcquire::Worker=1 -o Debug::Acquire::gpgv=1
- testsuccessequal "$(cat ${PKGFILE})
+ testsuccessequal "$(cat "${PKGFILE}")
" aptcache show apt
installaptold
rm -f rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
" aptcache show apt
installaptold
rm -f rootdir/etc/apt/trusted.gpg.d/marvinparanoid.gpg
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
msgmsg 'Cold archive signed by' 'Joe Sixpack'
rm -rf rootdir/var/lib/apt/lists
signreleasefiles 'Joe Sixpack'
msgmsg 'Cold archive signed by' 'Joe Sixpack'
# New .deb but now an unsigned archive. For example MITM to circumvent
# package verification.
# New .deb but now an unsigned archive. For example MITM to circumvent
# package verification.
+ prepare "${PKGFILE}-new"
find aptarchive/ -name InRelease -delete
find aptarchive/ -name Release.gpg -delete
msgmsg 'Warm archive signed by' 'nobody'
updatewithwarnings 'W: .* no longer signed.'
find aptarchive/ -name InRelease -delete
find aptarchive/ -name Release.gpg -delete
msgmsg 'Warm archive signed by' 'nobody'
updatewithwarnings 'W: .* no longer signed.'
- testsuccessequal "$(cat ${PKGFILE}-new)
+ testsuccessequal "$(cat "${PKGFILE}-new")
" aptcache show apt
failaptnew
" aptcache show apt
failaptnew
rm -rf rootdir/var/lib/apt/lists
msgmsg 'Cold archive signed by' 'nobody'
updatewithwarnings 'W: .* is not signed.'
rm -rf rootdir/var/lib/apt/lists
msgmsg 'Cold archive signed by' 'nobody'
updatewithwarnings 'W: .* is not signed.'
- testsuccessequal "$(cat ${PKGFILE}-new)
+ testsuccessequal "$(cat "${PKGFILE}-new")
" aptcache show apt
failaptnew
}
" aptcache show apt
failaptnew
}