#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'amd64' buildsimplenativepackage 'libfoo' 'amd64' '3' 'experimental' 'Multi-Arch: same' buildsimplenativepackage 'foo' 'all' '3' 'experimental' 'Depends: newstuff' buildsimplenativepackage 'foo' 'all' '2' 'unstable' 'Depends: libfoo:amd64, stuff Conflicts: bar, libfoo:i386 Recommends: unrelated' buildsimplenativepackage 'libfoo' 'amd64' '2' 'unstable' 'Multi-Arch: same' buildsimplenativepackage 'unrelated-2' 'amd64' '2' 'unstable' insertinstalledpackage 'foo' 'all' '1' insertinstalledpackage 'bar' 'all' '1' insertinstalledpackage 'stuff' 'all' '1' insertinstalledpackage 'unrelated-1' 'all' '1' setupaptarchive --no-update EIPPLOG="${TMPWORKINGDIRECTORY}/rootdir/var/log/apt/eipp.log" echo "Dir::Log::Planner \"$EIPPLOG\";" > ./rootdir/etc/apt/apt.conf.d/eipp-logging testsuccess apt update export APT_EDSP_DUMP_FILENAME="${TMPWORKINGDIRECTORY}/downloaded/dump.eipp" testfailure test -r "$EIPPLOG" testfailure aptget install foo --planner dump -y testfailure test -r "$EIPPLOG" testfailure grep 'unrelated-2' "$APT_EDSP_DUMP_FILENAME" testsuccessequal '2' grep -c '^Package: foo$' "$APT_EDSP_DUMP_FILENAME" testsuccessequal '1' grep -c '^Package: libfoo$' "$APT_EDSP_DUMP_FILENAME" testsuccessequal 'Planner: dump' grep '^Planner: ' "$APT_EDSP_DUMP_FILENAME" testsuccess aptget install foo -s testsuccess aptget install foo -y testsuccess test -r "$EIPPLOG" testsuccessequal 'Request: EIPP 0.1 Architecture: amd64 Architectures: amd64 Remove: bar:amd64 Install: libfoo:amd64 foo:amd64 Planner: internal' head -n 6 "$EIPPLOG" aptinternalplanner < "$EIPPLOG" > planner.log || true testsuccessequal 'Remove: 7 Unpack: 2 Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log rm -f "$EIPPLOG" testsuccess aptget install foo -s --reinstall testsuccess aptget install foo -y --reinstall testsuccess test -r "$EIPPLOG" testsuccessequal 'Request: EIPP 0.1 Architecture: amd64 Architectures: amd64 ReInstall: foo:amd64 Planner: internal' head -n 5 "$EIPPLOG" aptinternalplanner < "$EIPPLOG" > planner.log || true testsuccessequal 'Unpack: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log rm -f "$EIPPLOG" testsuccess aptget purge foo -s testsuccess aptget purge foo -y testsuccess test -r "$EIPPLOG" testsuccessequal 'Request: EIPP 0.1 Architecture: amd64 Architectures: amd64 Remove: foo:amd64 Planner: internal' head -n 5 "$EIPPLOG" aptinternalplanner < "$EIPPLOG" > planner.log || true testsuccessequal 'Remove: 4' grep -e '^Unpack:' -e '^Install:' -e '^Configure:' -e '^Remove:' planner.log testplannerfailuremsg() { local PLANNER="rootdir/usr/lib/apt/planners/$1" echo "$2" > "$PLANNER" chmod +x "$PLANNER" testfailuremsg "$3" apt install foo -s --planner $1 } testplannerfailuremsg 'exit0withmsg' "#!/bin/sh echo 'Error: instant-exit Message: This planner exits instantly' exit 0" 'E: External planner failed with: This planner exits instantly' testplannerfailuremsg 'exit1withoutmsg' "#!/bin/sh exit 1" 'E: Sub-process exit1withoutmsg returned an error code (1)' testplannerfailuremsg 'exit1withmsg' "#!/bin/sh echo 'Error: instant-exit Message: This planner exits instantly' exit 1" 'E: External planner failed with: This planner exits instantly E: Sub-process exit1withmsg returned an error code (1)'