#!/bin/sh set -e TESTDIR="$(readlink -f "$(dirname "$0")")" . "$TESTDIR/framework" setupenvironment configarchitecture 'i386' insertpackage 'unstable' 'unrelated' 'i386' '1' insertpackage 'unstable' 'ancientstuff' 'all' '1' insertpackage 'unstable' 'boringstuff' 'all' '1' '' '' 'shared short description' insertpackage 'unstable' 'coolstuff' 'all' '1' insertpackage 'unstable' 'dullstuff' 'all' '1' '' '' 'shared short description' insertpackage 'unstable' 'evilstuff' 'all' '1' insertpackage 'unstable' 'foostuff' 'all' '1' '' '' 'shared short description' insertpackage 'unstable' 'goodstuff' 'all' '1' insertpackage 'unstable' "longdesc" 'all' '1' '' '' "$(for i in $(seq 0 100); do printf '%s' 'lorem ipsum '; done)" setupaptarchive --no-update changetowebserver testsuccess aptget update PKGORDER='coolstuff foostuff coolstuff foostuff' msgtest 'Prepare expectation for' 'aptcache show' if aptcache show $PKGORDER | grep -v '^ ' > aptcacheshow.out 2>&1; then msgpass else cat aptcacheshow.out || true msgfail fi testsuccessequal '4' grep -c '^Package: ' aptcacheshow.out msgtest 'Prepare expectation for' 'apt show' if apt show $PKGORDER | grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' > aptshow.out 2>&1; then msgpass else cat aptshow.out || true msgfail fi testsuccessequal '4' grep -c '^Package: ' aptshow.out rm -rf rootdir/var/lib/apt/lists checkaptshow() { testsuccess aptcache show $PKGORDER sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output testequal "$(cat aptcacheshow.out) " grep -v '^ ' rootdir/tmp/testsuccess.output testsuccess apt show $PKGORDER sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output testequal "$(cat aptshow.out) " grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output if [ -n "$(ls rootdir/var/lib/apt/lists/*Translation* 2>/dev/null)" ]; then testsuccess find rootdir/var/lib/apt/lists/ -name '*Translation*' -delete testsuccess aptcache show $PKGORDER sed -i -e 's#^Description: #Description-en: #' rootdir/tmp/testsuccess.output testequal "$(cat aptcacheshow.out) " grep -v '^ ' rootdir/tmp/testsuccess.output testsuccess apt show $PKGORDER sed -i -e 's#^Description-en: #Description: #' rootdir/tmp/testsuccess.output testequal "$(cat aptshow.out) " grep -v -e '^ ' -e '^[A-Z][a-z]\+-Size: ' rootdir/tmp/testsuccess.output fi } translationslisted() { msgtest 'No download of non-existent locals' "$1" export LC_ALL="" testsuccess --nomsg aptget update -o Acquire::Languages=en testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of existent locals' "$1" testsuccess --nomsg aptget update cp rootdir/tmp/testsuccess.output testsuccess.output testsuccess grep -q -e 'Translation-en ' testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of en in LC_ALL=C' "$1" export LC_ALL=C testsuccess --nomsg aptget update cp rootdir/tmp/testsuccess.output testsuccess.output testsuccess grep -q -e 'Translation-en ' testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists unset LC_ALL msgtest 'Download of en as forced language' "$1" testsuccess --nomsg aptget update -o Acquire::Languages=en cp rootdir/tmp/testsuccess.output testsuccess.output testsuccess grep -q -e 'Translation-en ' testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of nothing else in forced language' "$1" testsuccess --nomsg aptget update -o Acquire::Languages=en testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download no Translation- if forced language is non-existent' "$1" testsuccess --nomsg aptget update -o Acquire::Languages=ast_DE testfailure grep -q -e 'Translation-' rootdir/tmp/testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of nothing if none is forced' "$1" testsuccess --nomsg aptget update -o Acquire::Languages=none testfailure grep -q -e 'Translation' rootdir/tmp/testsuccess.output checkaptshow rm -rf rootdir/var/lib/apt/lists } translationslisted 'with full Index' # No Release file at all, so no records about Translation files # (fallback to guessing) find aptarchive \( -name 'Release' -o -name 'InRelease' \) -delete echo 'Acquire::AllowInsecureRepositories "true";' > rootdir/etc/apt/apt.conf.d/allow-insecure-repositories.conf msgtest 'Download of en as forced language' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=en testsuccess grep -q -e 'Translation-en ' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of nothing else in forced language' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=en testfailure grep -q -e 'Translation-[^e][^n] ' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of ast_DE as forced language' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=ast_DE testsuccess grep -q -e 'Translation-ast_DE$' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of nothing else in forced language' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=ast_DE testfailure grep -q -e 'Translation-[^a][^s]' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists msgtest 'Download of nothing if none is forced' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=none testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists mkdir -p rootdir/var/lib/apt/lists touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE msgtest 'Download of builtin files' 'without Index' testwarning --nomsg aptget update testsuccess grep -q -e 'Translation-ast_DE' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists mkdir -p rootdir/var/lib/apt/lists touch rootdir/var/lib/apt/lists/localhost:${APTHTTPPORT}_dists_unstable_main_i18n_Translation-ast_DE msgtest 'Download of nothing (even builtin) if none is forced' 'without Index' testwarning --nomsg aptget update -o Acquire::Languages=none testfailure grep -q -e 'Translation' rootdir/tmp/testwarning.output checkaptshow rm -rf rootdir/var/lib/apt/lists