1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192 |
- #!/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'
- }
- cp -a rootdir/var/lib/dpkg/status rootdir/var/lib/dpkg/status.backup
- testmyfailure aptget install failure-preinst -y
- cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
- testmyfailure aptget install failure-postinst -y
- cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
- testsuccess aptget install failure-prerm -y
- testdpkginstalled failure-prerm
- testmyfailure aptget purge failure-prerm -y
- cp -a rootdir/var/lib/dpkg/status.backup 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
- cp -a rootdir/var/lib/dpkg/status.backup rootdir/var/lib/dpkg/status
- apt install dependee -y || true
- apt install failure-postinst -y || true
- fi
|