#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"

msgtest 'Test run as' 'non-root'
if [ "$(id -u)" = '0' ]; then
	msgskip 'root has by definition no problems accessing files'
	exit 0
else
	msgpass
fi

setupenvironment
configarchitecture "i386"
setupaptarchive

addtrap 'prefix' 'chmod a+x rootdir/var/lib/dpkg;'
chmod a-x rootdir/var/lib/dpkg

testsegfault() {
	msgtest "No segfault in" "$*"
	local TEST="$("$@" 2>&1 | grep -v 'E:')"
	if [ -z "$TEST" ]; then
		msgpass
	else
		echo
		echo "$TEST"
		msgfail
	fi
}

echo 'quiet 2;' > rootdir/etc/apt/apt.conf.d/00be-quiet

testsegfault aptcache gencaches
testsegfault aptcache showpkg
testsegfault aptcache showsrc
testsegfault aptcache stats
testsegfault aptcache dump
testsegfault aptcache dumpavail
testsegfault aptcache unmet
testsegfault aptcache search
testsegfault aptcache show apt
testsegfault aptcache depends apt
testsegfault aptcache rdepends apt
testsegfault aptcache pkgnames apt
testsegfault aptcache dotty apt
testsegfault aptcache xvcg apt
testsegfault aptcache policy apt

testsegfault aptget update
testsegfault aptget upgrade
testsegfault aptget dselect-upgrade
testsegfault aptget dist-upgrade
testsegfault aptget install apt
testsegfault aptget remove apt
testsegfault aptget purge apt
testsegfault aptget source apt
testsegfault aptget build-dep apt
testsegfault aptget check
testsegfault aptget clean
testsegfault aptget autoclean
testsegfault aptget autoremove