#!/bin/sh
set -e

TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'

if [ "$(id -u)" = '0' ]; then
    msgskip 'Tests for unreadable files do not work as root'
    exit 0
fi

insertinstalledpackage 'foo' 'amd64' '1'
insertpackage 'unstable' 'foo' 'amd64' '2'

setupaptarchive --no-update

touch rootdir/etc/apt/apt.conf.d/unreadable.conf
touch rootdir/etc/apt/preferences.d/unreadable.pref

addtrap 'prefix' "chmod -R +r '$(escape_shell "$TMPWORKINGDIRECTORY")/rootdir/etc/apt';"
chmod -r rootdir/etc/apt/trusted.gpg.d
testfailure apt update
chmod +r rootdir/etc/apt/trusted.gpg.d
testsuccess apt update
testsuccess apt policy foo
testsuccess apt search foo
testsuccessequal "Listing...
foo/unstable 2 amd64 [upgradable from: 1]
N: There is 1 additional version. Please use the '-a' switch to see it" apt list --upgradable

runthemall() {
	local ERR1="$1"
	local ERR2="$1$2"
	testfailureequal "$ERR1" aptcache policy
	testfailureequal "$ERR1" aptcache policy foo
	testfailureequal "$ERR2" aptcache depends foo
	testfailureequal "$ERR2" aptcache rdepends foo
	testfailureequal "$ERR2" aptcache search foo
	testfailureequal "$ERR1" apt policy
	testfailureequal "$ERR1" apt policy foo
	testfailureequal "$ERR2" apt depends foo
	testfailureequal "$ERR2" apt rdepends foo
	testfailureequal "$ERR2" apt search foo
	testfailureequal "$ERR2" apt list --upgradable
	testfailureequal "$ERR2" apt show foo
	testfailureequal "$ERR2" aptcache show foo --no-all-versions
	testfailureequal "$ERR2" aptmark auto foo
	testfailureequal "$ERR2" aptmark manual foo
	testfailureequal "$ERR2" aptmark auto foo
}
echo 'Apt::Cmd::Disable-Script-Warning "true";' >> aptconfig.conf

msgmsg 'Unreadable sources file'
chmod -r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list
runthemall "E: Opening $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list - ifstream::ifstream (13: Permission denied)
E: The list of sources could not be read."
chmod +r rootdir/etc/apt/sources.list.d/apt-test-unstable-deb-src.list

msgmsg 'Unreadable config file'
chmod -r rootdir/etc/apt/apt.conf.d/unreadable.conf
runthemall "E: Opening configuration file ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/unreadable.conf - ifstream::ifstream (13: Permission denied)"
chmod +r rootdir/etc/apt/apt.conf.d/unreadable.conf

msgmsg 'Unreadable preferences file'
chmod -r rootdir/etc/apt/preferences.d/unreadable.pref
runthemall "E: Could not open file ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/unreadable.pref - open (13: Permission denied)"
chmod +r rootdir/etc/apt/preferences.d/unreadable.pref

msgmsg 'Unreadable sources directory'
chmod -r rootdir/etc/apt/sources.list.d
runthemall "E: Unable to read $TMPWORKINGDIRECTORY/rootdir/etc/apt/sources.list.d/ - opendir (13: Permission denied)" "
W: You may want to run apt-get update to correct these problems
E: The package cache file is corrupted"
chmod +r rootdir/etc/apt/sources.list.d

msgmsg 'Unreadable config directory'
chmod -r rootdir/etc/apt/apt.conf.d
runthemall "E: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/apt.conf.d/ - opendir (13: Permission denied)"
chmod +r rootdir/etc/apt/apt.conf.d

msgmsg 'Unreadable preferences directory'
chmod -r rootdir/etc/apt/preferences.d
runthemall "E: Unable to read ${TMPWORKINGDIRECTORY}/rootdir/etc/apt/preferences.d/ - opendir (13: Permission denied)"
chmod +r rootdir/etc/apt/preferences.d