]> git.saurik.com Git - apt.git/commitdiff
tests: try to support spaces in TMPDIR
authorDavid Kalnischkies <david@kalnischkies.de>
Mon, 14 Sep 2015 00:26:13 +0000 (02:26 +0200)
committerDavid Kalnischkies <david@kalnischkies.de>
Mon, 14 Sep 2015 13:22:19 +0000 (15:22 +0200)
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:
debian/apt.auto-removal.sh
test/integration/framework
test/integration/test-acquire-same-file-multiple-times
test/integration/test-acquire-same-repository-multiple-times
test/integration/test-allow
test/integration/test-apt-get-download
test/integration/test-apt-get-source-authenticated
test/integration/test-apt-get-update-unauth-warning
test/integration/test-apt-progress-fd-conffile
test/integration/test-apt-translation-has-no-packages
test/integration/test-apt-update-nofallback
test/integration/test-apt-update-rollback
test/integration/test-bug-590041-prefer-non-virtual-packages
test/integration/test-bug-728500-tempdir
test/integration/test-bug-738785-switch-protocol
test/integration/test-bug-769609-triggers-still-pending-after-run
test/integration/test-disappearing-packages
test/integration/test-failing-maintainer-scripts
test/integration/test-kernel-helper-autoremove
test/integration/test-pdiff-usage
test/integration/test-releasefile-verification

index 6af5da9879f6795430254440b8a28261024f1eb4..dc3a1baca2476d18e61f550f193122fd29e50c9c 100644 (file)
@@ -19,7 +19,7 @@ eval $(apt-config shell DPKG Dir::bin::dpkg/f)
 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)"
 
index c830d852b1cc8602e24413adbd12c2d81d8a979e..83f93217fb6cf813469a74af1167e3342601fd57 100644 (file)
@@ -187,7 +187,7 @@ dpkg() {
        "${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" "$@"
 }
 gdb() {
        local CMD
 }
 gdb() {
        local CMD
@@ -199,7 +199,7 @@ gdb() {
        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;;
        *) CMD="$1";;
        esac
        shift
        *) CMD="$1";;
        esac
        shift
@@ -242,9 +242,9 @@ setupenvironment() {
        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
@@ -254,20 +254,20 @@ setupenvironment() {
                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
@@ -275,7 +275,7 @@ setupenvironment() {
        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
@@ -284,23 +284,26 @@ setupenvironment() {
        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
@@ -316,32 +319,31 @@ setupenvironment() {
                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}"
        else
        else
-               export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so"
+               export LD_LIBRARY_PATH="${TMPWORKINGDIRECTORY}"
        fi
        fi
-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}"
        else
        else
-               export LD_PRELOAD="${TMPWORKINGDIRECTORY}/noopchroot.so"
+               export LD_PRELOAD="noopchroot.so"
        fi
 fi
        fi
 fi
+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"
@@ -425,7 +427,8 @@ configarchitecture() {
 
 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
@@ -460,7 +463,7 @@ configdpkgnoopchroot() {
        # 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>
@@ -512,7 +515,7 @@ configcompression() {
                *) 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"
 }
 confighashes() {
        {
 }
 confighashes() {
        {
@@ -573,10 +576,10 @@ setupsimplenativepackage() {
 
        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="main"
        else
                DISTSECTION="main"
        else
-               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
@@ -629,56 +632,58 @@ buildsimplenativepackage() {
 
        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}"
        local DISTSECTION
        local DISTSECTION
-       if [ "$SECTION" = "$(echo "$SECTION" | cut -d'/' -f 2)" ]; then
+       if [ "$SECTION" = "${SECTION#*/}" ]; then
                DISTSECTION="main"
        else
                DISTSECTION="main"
        else
-               DISTSECTION="$(echo "$SECTION" | cut -d'/' -f 1)"
+               DISTSECTION="${SECTION%/*}"
        fi
        fi
-       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 "#!/bin/sh
        echo "#!/bin/sh
-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" \
                | while read SRC; do
                | while read SRC; do
-               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' \
@@ -689,26 +694,26 @@ Package: $NAME" >> ${BUILDDIR}/debian/control
 
        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"
                 fi
 
                 fi
 
-               (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"
 }
@@ -721,20 +726,20 @@ buildpackage() {
        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"
-       cd $BUILDDIR
+       cd "$BUILDDIR"
        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"
        done
 }
 
        done
 }
 
@@ -747,7 +752,7 @@ buildaptarchive() {
 }
 
 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
@@ -769,23 +774,15 @@ TreeDefault {
 };
 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() {
@@ -795,10 +792,10 @@ 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}"
                        done
                        done
-                       mkdir -p dists/${DIST}/${SECTION}/source
-                       mkdir -p dists/${DIST}/${SECTION}/i18n
+                       mkdir -p "dists/${DIST}/${SECTION}/source"
+                       mkdir -p "dists/${DIST}/${SECTION}/i18n"
                done
        done
 }
                done
        done
 }
@@ -828,28 +825,29 @@ insertpackage() {
                        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"
                        done
                done
                        done
                done
-               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"
        done
 }
 
        done
 }
 
@@ -871,14 +869,14 @@ Binary: $BINARY
 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 "Files:
        echo "Files:
- $(echo -n "$DSCFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$DSCFILE" | wc -c) $DSCFILE
- $(echo -n "$TARFILE" | md5sum | cut -d' ' -f 1) $(echo -n "$TARFILE" | wc -c) $TARFILE
+ $(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"
 Checksums-Sha256:
 Checksums-Sha256:
- $(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() {
@@ -902,22 +900,22 @@ Priority: $PRIORITY
 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"
                else
                else
-                       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
@@ -930,7 +928,7 @@ buildaptarchivefromincoming() {
 }
 
 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
@@ -942,7 +940,7 @@ buildaptarchivefromfiles() {
 }
 
 compressfile() {
 }
 
 compressfile() {
-       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"
@@ -990,16 +988,16 @@ generatereleasefiles() {
                        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} \
-                               > $dir/Release
+                               > "$dir/Release"
                        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
                done
        else
                        fi
                done
        else
@@ -1007,8 +1005,8 @@ 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
@@ -1019,33 +1017,34 @@ Valid-Until: $(date -d "$2" '+%a, %d %b %Y %H:%M:%S %Z')" $(find ./aptarchive -n
 }
 
 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'
        else
        else
-               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'
        fi
        fi
-       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'
        else
        else
-               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'
        fi
 }
 
        fi
 }
 
@@ -1080,41 +1079,41 @@ signreleasefiles() {
                # 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"
                fi
        fi
                fi
        fi
-       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"
        fi
        fi
-       msgdone "info"
+       msgdone 'info'
 }
 
 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}"
 }
@@ -1148,7 +1147,7 @@ webserverconfig() {
 }
 
 rewritesourceslist() {
 }
 
 rewritesourceslist() {
-       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
@@ -1174,7 +1173,7 @@ changetowebserver() {
        else
                shift
        fi
        else
                shift
        fi
-       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
@@ -1207,10 +1206,10 @@ output = /dev/null
 [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
@@ -1221,22 +1220,24 @@ connect = 8080
 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
 }
 
@@ -1269,7 +1270,7 @@ testoutputequal() {
        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}"
@@ -1303,7 +1304,7 @@ testempty() {
        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" "$@"
@@ -1311,6 +1312,18 @@ testempty() {
        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'
@@ -1321,7 +1334,7 @@ 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
@@ -1337,13 +1350,13 @@ testequalor2() {
        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
        then
                msgpass
        else
        then
                msgpass
        else
@@ -1429,10 +1442,10 @@ testmarkedauto() {
        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
+               echo -n > "$COMPAREFILE"
        fi
        testoutputequal "$COMPAREFILE" aptmark showauto
        msggroup
        fi
        testoutputequal "$COMPAREFILE" aptmark showauto
        msggroup
@@ -1442,10 +1455,10 @@ testmarkedmanual() {
        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
+               echo -n > "$COMPAREFILE"
        fi
        testoutputequal "$COMPAREFILE" aptmark showmanual
        msggroup
        fi
        testoutputequal "$COMPAREFILE" aptmark showmanual
        msggroup
@@ -1483,7 +1496,7 @@ msgfailoutput() {
                done
                echo '#### test output ####'
        fi
                done
                echo '#### test output ####'
        fi
-       cat >&2 $OUTPUT
+       cat >&2 "$OUTPUT"
        msgfail "$MSG"
 }
 
        msgfail "$MSG"
 }
 
@@ -1495,7 +1508,7 @@ testsuccess() {
                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" "$@"
@@ -1531,7 +1544,7 @@ testwarning() {
                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" "$@"
@@ -1560,7 +1573,7 @@ testfailure() {
                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
@@ -1718,18 +1731,18 @@ aptautotest() {
        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"
        fi
 }
 
        fi
 }
 
@@ -1743,9 +1756,12 @@ aptautotest_aptget_update() {
        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
+       IFS="$backupIFS"
        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' \)
index a850f897c769fd816fb86c19210b14cefcb75a57..255a71a33dd3389b2fcc7e938353aba2dfa9ce0e 100755 (executable)
@@ -2,19 +2,19 @@
 set -e
 
 TESTDIR=$(readlink -f $(dirname $0))
 set -e
 
 TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+. "$TESTDIR/framework"
 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
@@ -23,19 +23,19 @@ filedown() {
 
 testrun() {
        $1 'no partial'
 
 testrun() {
        $1 'no partial'
-       cp $TESTFILE ./downloaded/foo1
+       cp "$TESTFILE" ./downloaded/foo1
        $1 'complete partial 1'
        $1 'complete partial 1'
-       cp $TESTFILE ./downloaded/foo2
+       cp "$TESTFILE" ./downloaded/foo2
        $1 'complete partial 2'
        $1 'complete partial 2'
-       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
        $1 'partial partial 1'
        $1 'partial partial 1'
-       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
        $1 'partial partial 2'
        $1 'partial partial 2'
-       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'
@@ -46,7 +46,7 @@ httpdown() {
        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
@@ -58,7 +58,7 @@ httpredirectdown() {
        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
@@ -71,7 +71,7 @@ httpsamedown() {
        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
index abdfef8f01e9dd10db9da155eb19162e7593097a..19a18cb63ca7de1603dd4c87f265f0564e2f25c5 100755 (executable)
@@ -21,11 +21,14 @@ done
 # 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"
 done
 done
+IFS="$backupIFS"
 rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
 cat >"${NEWMETHODS}/file" <<EOF
 #!/bin/sh
 rm "${NEWMETHODS}/file" "${NEWMETHODS}/http"
 cat >"${NEWMETHODS}/file" <<EOF
 #!/bin/sh
@@ -45,7 +48,7 @@ tworepos() {
        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)
index 3d773ee9547c35128d83e147dca551887d2fa044..0275fbec8db578a3d6f6a73b05829e361e7257d2 100755 (executable)
@@ -4,7 +4,7 @@
 #
 set -e
 
 #
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
+TESTDIR="$(readlink -f "$(dirname $0)")"
 . $TESTDIR/framework
 setupenvironment
 configarchitecture 'amd64'
 . $TESTDIR/framework
 setupenvironment
 configarchitecture 'amd64'
index c4ebd03bbaf267b7be3e26c55d8cc6246004e903..25c8b7761fb0560a5a8005b7ad74878113550ec0 100755 (executable)
@@ -64,7 +64,7 @@ testdownload apt_1.0_all.deb apt stable
 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
@@ -83,7 +83,7 @@ testsuccess test -s apt_2.0_all.deb
 
 # 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
index da63f7cb39be62970fe4815424dcb532b336e020..720d2a454aa73b142d597efa71566cf2ff7eefec 100755 (executable)
@@ -17,8 +17,8 @@ buildsimplenativepackage 'foo' 'all' '2.0'
 
 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
index 35825ee2485677b3a2e226837f44118e8b8ea6c4..b2d79eb2b9abeef6deca3e6a53a653681c5e36c6 100755 (executable)
@@ -16,8 +16,8 @@ buildsimplenativepackage 'foo' 'all' '2.0'
 
 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
index 085d5e87173b23837f66ce94bd062ba84b4e25ba..ec3ded85da6ddaedf00f92af2659431dcef2077b 100755 (executable)
@@ -1,8 +1,8 @@
 #!/bin/sh
 set -e
 
 #!/bin/sh
 set -e
 
-TESTDIR=$(readlink -f $(dirname $0))
-. $TESTDIR/framework
+TESTDIR="$(readlink -f "$(dirname "$0")")"
+. "$TESTDIR/framework"
 
 setupenvironment
 configarchitecture 'native'
 
 setupenvironment
 configarchitecture 'native'
@@ -10,18 +10,18 @@ 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"
 
@@ -30,21 +30,15 @@ setupaptarchive
 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\";"
 exec 3> apt-progress.log
 exec 3> apt-progress.log
-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
index fec525568317a1d739ba594d13129ef63d8478ca..4c57623b14bf581570929e7f0a6f5cad23e8f0fb 100755 (executable)
@@ -24,11 +24,11 @@ fi
 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
index dae537c32c6d7ed782fe8f5c2891f2ca015cb6c0..e82483da3478cef21482fcadb396719b38339bcb 100755 (executable)
@@ -9,14 +9,14 @@ set -e
 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>
@@ -46,11 +46,7 @@ assert_repo_is_intact()
     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()
@@ -75,7 +71,7 @@ test_from_release_gpg_to_unsigned()
 {
     # 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
 
@@ -93,7 +89,7 @@ test_from_inrelease_to_unsigned_with_override()
     # 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 \
@@ -128,8 +124,8 @@ test_cve_2012_0214()
     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 
@@ -149,7 +145,7 @@ test_subvert_inrelease()
     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
@@ -167,7 +163,7 @@ test_inrelease_to_invalid_inrelease()
     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>
@@ -184,12 +180,12 @@ test_release_gpg_to_invalid_release_release_gpg()
 {
     # 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>
@@ -213,7 +209,7 @@ buildsimplenativepackage 'foo' 'all' '2.0'
 
 # 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
index 503b819851decbdda39d3a469607d2a954a50cd9..12d541055fc94f7eef8d59dddde8ab24c933684b 100755 (executable)
@@ -23,14 +23,14 @@ create_fresh_archive()
 }
 
 add_new_package() {
 }
 
 add_new_package() {
-    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" "$@"
 }
 
@@ -38,7 +38,7 @@ start_with_good_inrelease() {
     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() {
@@ -47,8 +47,8 @@ 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() {
@@ -73,8 +73,8 @@ test_inrelease_to_valid_release() {
 
     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
@@ -83,8 +83,8 @@ test_inrelease_to_valid_release() {
     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() {
@@ -93,8 +93,8 @@ 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'
@@ -106,15 +106,15 @@ test_inrelease_to_release_reverts_all() {
     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
@@ -130,7 +130,7 @@ E: There were unauthenticated packages and -y was used without --allow-unauthent
 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
@@ -147,7 +147,7 @@ W: Failed to fetch file:$APTARCHIVE/dists/unstable/InRelease  The following sign
 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() {
@@ -159,10 +159,10 @@ 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
@@ -177,9 +177,9 @@ configarchitecture "i386"
 
 # 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
index 4e2a5142c9cbba0cc025ec252df533f44fc144e0..b05ef55392abd8982f569d356a5e1f993ef44dbb 100755 (executable)
@@ -38,7 +38,7 @@ Section: oldlibs
 Size: 44168
 "
 
 Size: 44168
 "
 
-cat <<-EOF >aptarchive/Packages
+cat >aptarchive/Packages <<EOF
 $pkglibc6
 $pkglibdb1
 EOF
 $pkglibc6
 $pkglibdb1
 EOF
index 3ae94c58ffd2315cd373917d4a3564a4ef1e15d6..bff90c5f2f79e078952da1604732ca567a50d993 100755 (executable)
@@ -14,16 +14,10 @@ changetowebserver
 
 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
index e86f28824c29d0f24432a4bd696eb9c8bd868067..d925a70bbe32b504e8eab1fd717e0e4c87978662 100755 (executable)
@@ -42,12 +42,15 @@ testdpkginstalled 'apt'
 # 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"
 done
 done
-rm $NEWMETHODS/https
+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.
@@ -56,7 +59,7 @@ testfailure test -e apt_1.0_all.deb
 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'
index 146fa766b93fe4d4b71f697526ceaa73b85e224b..665c4e2dbe97c5d47a1837a4b247c49e818189df 100755 (executable)
@@ -20,13 +20,13 @@ buildtriggerpackages() {
        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'
index 3b1e1bd7cd9b5bb9cd0143a6d0deaf9357e61cea..ffe692c100187ad751b9d6dca1543398ee3e4c7a 100755 (executable)
@@ -1,30 +1,30 @@
 #!/bin/sh
 set -e
 
 #!/bin/sh
 set -e
 
-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
 Replaces: old-pkg
 Replaces: 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'
 rm -rf "$BUILDDIR"
 
 rm -rf "$BUILDDIR"
 
-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
@@ -33,22 +33,22 @@ testsuccess aptget install old-pkg=1.0 --trivial-only
 
 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
index 953506aa5fef65e35a22529a7c882194c033b3f0..0ea22b04d96c76946867aecc672d9ae7a303a5e1 100755 (executable)
@@ -13,7 +13,7 @@ createfailure() {
        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"
 }
@@ -31,40 +31,40 @@ APTHOOK="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apthook"
 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'
-       exec 3> $PROGRESS
+       exec 3> "$PROGRESS"
        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
-               cat $TEST
+               cat "$TEST"
                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
                msgpass
        else
                msgpass
        else
-               cat $TEST
+               cat "$TEST"
                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
-               cat $PROGRESS
+               cat "$PROGRESS"
                msgfail
        fi
        testmarkedauto 'dependee'
                msgfail
        fi
        testmarkedauto 'dependee'
index a110d5d52d0f53e9345864878ac3c003d55de4ab..5e9b9f59adb93dd199ca2cfdee2d813fc65631da 100755 (executable)
@@ -29,7 +29,7 @@ testsuccess aptmark hold "${CURRENTKERNEL}-rt"
 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'
index 62c87fe08b70f376688bdec5d5c77702636d183b..d60a81b211393f9ed9603dde82a87851d767caf2 100755 (executable)
@@ -10,7 +10,7 @@ confighashes 'SHA1' 'SHA256'
 
 buildaptarchive
 setupflataptarchive
 
 buildaptarchive
 setupflataptarchive
-changetowebserver
+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-#')"
 
index 60aa4421a1da28e937348fd16af5e29becee82a7..c5b9f147f58590dcda5a9ca4c0271a6fd1df0415 100755 (executable)
@@ -23,10 +23,10 @@ prepare() {
                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"
        done
        aptget clean
        done
        aptget clean
-       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"
@@ -89,7 +89,7 @@ E: There were unauthenticated packages and -y was used without --allow-unauthent
 # 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
@@ -97,97 +97,97 @@ updatewithwarnings() {
 }
 
 runtest() {
 }
 
 runtest() {
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
+       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
 
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
 
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
+       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
 
 
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
+       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
+       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
+       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
 
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
@@ -195,7 +195,7 @@ runtest() {
        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
 
@@ -208,7 +208,7 @@ runtest() {
        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 ' ')"
 
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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
@@ -216,7 +216,7 @@ runtest() {
        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
@@ -231,7 +231,7 @@ runtest() {
 }
 
 runtest2() {
 }
 
 runtest2() {
-       prepare ${PKGFILE}
+       prepare "${PKGFILE}"
        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'
@@ -239,12 +239,12 @@ runtest2() {
 
        # 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
+       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
 
@@ -252,7 +252,7 @@ runtest2() {
        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
 }