瀏覽代碼

enhance apt-extracttemplates test

The tool checks for debconf version before printing the info it
extracts, so that it doesn't extract data which can't be interpreted
before debconf is upgraded. It is only fair to check for this behaviour
in the tests.

Git-Dch: Ignore
David Kalnischkies 11 年之前
父節點
當前提交
061ee5f0ef
共有 2 個文件被更改,包括 48 次插入22 次删除
  1. 1 0
      test/integration/framework
  2. 47 22
      test/integration/test-apt-extracttemplates

+ 1 - 0
test/integration/framework

@@ -1110,6 +1110,7 @@ testempty() {
 	if "$@" >$COMPAREFILE 2>&1 && test ! -s $COMPAREFILE; then
 	if "$@" >$COMPAREFILE 2>&1 && test ! -s $COMPAREFILE; then
 		msgpass
 		msgpass
 	else
 	else
+		echo
 		cat $COMPAREFILE
 		cat $COMPAREFILE
 		msgfail
 		msgfail
 	fi
 	fi

+ 47 - 22
test/integration/test-apt-extracttemplates

@@ -8,38 +8,63 @@ setupenvironment
 configarchitecture 'amd64'
 configarchitecture 'amd64'
 
 
 # apt-extracttemplates needs this
 # apt-extracttemplates needs this
-insertinstalledpackage 'debconf' 'amd64' '1.5'
 insertinstalledpackage 'pkg-with-template' 'amd64' '1.0'
 insertinstalledpackage 'pkg-with-template' 'amd64' '1.0'
 
 
 # build a simple package that contains a config and a tempalte
 # build a simple package that contains a config and a tempalte
 mkdir -p DEBIAN
 mkdir -p DEBIAN
-TEMPLATE_STR="Template: foo/bar
-Type: string
-Description: Some bar var
-"
-echo "$TEMPLATE_STR" > DEBIAN/templates
-
 CONFIG_STR="#!/bin/sh
 CONFIG_STR="#!/bin/sh
 random shell stuff
 random shell stuff
 "
 "
 echo "$CONFIG_STR" > DEBIAN/config
 echo "$CONFIG_STR" > DEBIAN/config
 
 
-buildsimplenativepackage 'pkg-with-template' 'amd64' '0.8.15' 'stable' '' 'pkg with template' '' '' './DEBIAN' 
+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 -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"
 
 
-# ensure we get the right stuff out of the file
-mkdir extracttemplates-out
-OUT="$(aptextracttemplates -t ./extracttemplates-out incoming/pkg-with-template*.deb)"
+	# 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
 
 
-PKG=$(printf "$OUT" | cut -f1 -d' ')
-INSTALLED_VER=$(printf "$OUT" | cut -f2 -d' ')
-TEMPLATE=$(printf "$OUT" | cut -f3 -d' ')
-CONFIG=$(printf "$OUT" | cut -f4 -d' ')
+	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
+}
 
 
-testequal "$CONFIG_STR" cat $CONFIG
-testequal "$TEMPLATE_STR" cat $TEMPLATE
+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)'
 
 
-# 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
+# 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?'