1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78
|
#!/bin/sh
set -e
TESTDIR="$(readlink -f "$(dirname "$0")")"
. "$TESTDIR/framework"
setupenvironment
configarchitecture 'amd64'
# apt-extracttemplates needs this
insertinstalledpackage 'pkg-with-template' 'amd64' '1.0'
# build a simple package that contains a config and a template
mkdir -p DEBIAN
CONFIG_STR="#!/bin/sh
random shell stuff
"
echo "$CONFIG_STR" > DEBIAN/config
chmod 755 DEBIAN/config
testrun() {
local TEMPLATE_STR='Template: foo/bar
Type: string
Description: Some bar var
'
echo "$TEMPLATE_STR" > DEBIAN/templates
buildsimplenativepackage "$1" 'amd64' '0.8.15' 'stable' "$2" 'pkg with template' '' '' './DEBIAN'
cp dpkg.status rootdir/var/lib/dpkg/status
insertinstalledpackage 'debconf' 'amd64' '3'
# ensure we get the right stuff out of the file
rm -rf extracttemplates-out rootdir/var/cache/apt
mkdir extracttemplates-out
testsuccess aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
OUT='rootdir/tmp/testsuccess.output'
testequal "$1" cut -f1 -d' ' $OUT
if [ -n "$2" ]; then
testequal '' cut -s -f2 -d' ' $OUT
else
testequal '1.0' cut -f2 -d' ' $OUT
fi
TEMPLATE=$(cut -f3 -d' ' $OUT)
testfileequal "$TEMPLATE" "$TEMPLATE_STR"
CONFIG=$(cut -f4 -d' ' $OUT)
testfileequal "$CONFIG" "$CONFIG_STR"
msgtest 'No extra files or directories in extraction directory'
if [ "$(find ./extracttemplates-out | wc -l)" = '3' ]; then
msgpass
else
msgfail
ls -l ./extracttemplates-out
fi
# ensure that the format of the output string has the right number of dots
for s in "$CONFIG" "$TEMPLATE"; do
NR_DOTS=$(basename "$s" | tr -c -d '.')
testequal '..' echo $NR_DOTS
done
if [ -n "$2" ]; then
rm -rf extracttemplates-out rootdir/var/cache/apt
mkdir extracttemplates-out
cp dpkg.status rootdir/var/lib/dpkg/status
insertinstalledpackage 'debconf' 'amd64' '1'
testempty aptextracttemplates -t ./extracttemplates-out incoming/${1}*.deb
fi
}
cp rootdir/var/lib/dpkg/status dpkg.status
testrun 'pkg-with-template' ''
testrun 'pkg-with-template-depends' 'Depends: debconf (>= 2)'
testrun 'pkg-with-template-predepends' 'Pre-Depends: debconf (>= 2)'
# test with no debconf installed
cp dpkg.status rootdir/var/lib/dpkg/status
testfailure aptextracttemplates -t ./extracttemplates-out incoming/pkg-with-template-depends*.deb
testfileequal 'rootdir/tmp/testfailure.output' 'E: Cannot get debconf version. Is debconf installed?'
|