90 lines
2.4 KiB
Bash
Executable file
90 lines
2.4 KiB
Bash
Executable file
#!/bin/sh
|
|
set -e
|
|
|
|
TESTDIR="$(readlink -f "$(dirname "$0")")"
|
|
. "$TESTDIR/framework"
|
|
|
|
setupenvironment
|
|
configarchitecture 'native'
|
|
configdpkgnoopchroot
|
|
|
|
# create a bunch of failures
|
|
createfailure() {
|
|
setupsimplenativepackage "failure-$1" 'native' '1.0' 'unstable' 'Depends: dependee'
|
|
BUILDDIR="incoming/failure-$1-1.0"
|
|
echo '#!/bin/sh
|
|
exit 29' > "${BUILDDIR}/debian/$1"
|
|
buildpackage "$BUILDDIR" 'unstable' 'main' 'native'
|
|
rm -rf "$BUILDDIR"
|
|
}
|
|
|
|
buildsimplenativepackage 'dependee' 'native' '1.0' 'unstable'
|
|
createfailure 'preinst'
|
|
createfailure 'postinst'
|
|
createfailure 'prerm'
|
|
createfailure 'postrm'
|
|
|
|
setupaptarchive
|
|
|
|
# setup some pre- and post- invokes to check the output isn't garbled later
|
|
APTHOOK="${TMPWORKINGDIRECTORY}/rootdir/usr/bin/apthook"
|
|
echo '#!/bin/sh
|
|
echo "$1: START"
|
|
echo "$1: MaiN"
|
|
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'
|
|
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
|
|
cat "$TEST"
|
|
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
|
|
msgpass
|
|
else
|
|
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
|
|
cat "$PROGRESS"
|
|
msgfail
|
|
fi
|
|
testmarkedauto 'dependee'
|
|
}
|
|
|
|
testmyfailure aptget install failure-preinst -y
|
|
rm -f rootdir/var/lib/dpkg/status
|
|
testmyfailure aptget install failure-postinst -y
|
|
rm -f rootdir/var/lib/dpkg/status
|
|
testsuccess aptget install failure-prerm -y
|
|
testdpkginstalled failure-prerm
|
|
testmyfailure aptget purge failure-prerm -y
|
|
rm -f rootdir/var/lib/dpkg/status
|
|
testsuccess aptget install failure-postrm -y
|
|
testdpkginstalled failure-postrm
|
|
testmyfailure aptget purge failure-postrm -y
|
|
|
|
# FIXME: test with output going to a PTY as it usually does
|
|
if false; then
|
|
rm -f rootdir/var/lib/dpkg/status
|
|
apt install dependee -y || true
|
|
apt install failure-postinst -y || true
|
|
fi
|