]> git.saurik.com Git - apt.git/blobdiff - test/integration/framework
merged lp:~donkult/apt/sid
[apt.git] / test / integration / framework
index 50c5157e961701edba56b02d81e198906c38ca30..45c1f156a9268407fdb36eb2e4646d8ddbbd1fa7 100644 (file)
@@ -1,16 +1,19 @@
 #!/bin/sh -- # no runable script, just for vi
 
 # we all like colorful messages
-CERROR="\e[1;31m" # red
-CWARNING="\e[1;33m" # yellow
-CMSG="\e[1;32m" # green
-CINFO="\e[1;96m" # light blue
-CDEBUG="\e[1;94m" # blue
-CNORMAL="\e[0;39m" # default system console color
-CDONE="\e[1;32m" # green
-CPASS="\e[1;32m" # green
-CFAIL="\e[1;31m" # red
-CCMD="\e[1;35m" # pink
+if expr match "$(readlink -f /proc/$$/fd/1)" '/dev/pts/[0-9]\+' > /dev/null && \
+   expr match "$(readlink -f /proc/$$/fd/2)" '/dev/pts/[0-9]\+' > /dev/null; then
+       CERROR="\e[1;31m" # red
+       CWARNING="\e[1;33m" # yellow
+       CMSG="\e[1;32m" # green
+       CINFO="\e[1;96m" # light blue
+       CDEBUG="\e[1;94m" # blue
+       CNORMAL="\e[0;39m" # default system console color
+       CDONE="\e[1;32m" # green
+       CPASS="\e[1;32m" # green
+       CFAIL="\e[1;31m" # red
+       CCMD="\e[1;35m" # pink
+fi
 
 msgdie() { echo "${CERROR}E: $1${CNORMAL}" >&2; exit 1; }
 msgwarn() { echo "${CWARNING}W: $1${CNORMAL}" >&2; }
@@ -42,7 +45,11 @@ if [ $MSGLEVEL -le 2 ]; then
        msgtest() { true; }
        msgpass() { echo -n " ${CPASS}P${CNORMAL}" >&2; }
        msgskip() { echo -n " ${CWARNING}S${CNORMAL}" >&2; }
-       msgfail() { echo -n " ${CFAIL}FAIL${CNORMAL}" >&2; }
+       if [ -n "$CFAIL" ]; then
+               msgfail() { echo -n " ${CFAIL}FAIL${CNORMAL}" >&2; }
+       else
+               msgfail() { echo -n " ###FAILED###" >&2; }
+       fi
 fi
 if [ $MSGLEVEL -le 3 ]; then
        msginfo() { true; }
@@ -151,6 +158,7 @@ setupenvironment() {
 
 configarchitecture() {
        local CONFFILE=rootdir/etc/apt/apt.conf.d/01multiarch.conf
+       rm -f $CONFFILE
        echo "APT::Architecture \"$1\";" > $CONFFILE
        shift
        while [ -n "$1" ]; do
@@ -429,6 +437,27 @@ Filename: pool/main/${NAME}/${NAME}_${VERSION}_${arch}.deb" >> $FILE
        done
 }
 
+insertsource() {
+       local RELEASE="$1"
+       local NAME="$2"
+       local ARCH="$3"
+       local VERSION="$4"
+       local DEPENDENCIES="$5"
+       local ARCHS=""
+       local SPATH="aptarchive/dists/${RELEASE}/main/source"
+       mkdir -p $SPATH
+       local FILE="${SPATH}/Sources"
+       echo "Package: $NAME
+Binary: $NAME
+Version: $VERSION
+Maintainer: Joe Sixpack <joe@example.org>
+Architecture: $ARCH" >> $FILE
+       test -z "$DEPENDENCIES" || echo "$DEPENDENCIES" >> $FILE
+       echo "Files:
+ d41d8cd98f00b204e9800998ecf8427e 0 ${NAME}_${VERSION}.dsc
+ d41d8cd98f00b204e9800998ecf8427e 0 ${NAME}_${VERSION}.tar.gz" >> $FILE
+}
+
 insertinstalledpackage() {
        local NAME="$1"
        local ARCH="$2"
@@ -481,6 +510,10 @@ buildaptarchivefromfiles() {
        generatereleasefiles
 }
 
+# can be overridden by testcases for their pleasure
+getcodenamefromsuite() { echo -n "$1"; }
+getreleaseversionfromsuite() { true; }
+
 generatereleasefiles() {
        msgninfo "\tGenerate Release files… "
        local DATE="${1:-now}"
@@ -489,9 +522,22 @@ generatereleasefiles() {
                        aptftparchive -qq release $dir -o APT::FTPArchive::Release::Patterns::='Translation-*' > $dir/Index
                done
                for dir in $(find ./aptarchive/dists -mindepth 1 -maxdepth 1 -type d); do
-                       local CODENAME="$(echo "$dir" | cut -d'/' -f 4)"
-                       aptftparchive -qq release $dir -o APT::FTPArchive::Release::Suite="${CODENAME}" -o APT::FTPArchive::Release::Codename="${CODENAME}" | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference
-                       if [ "$CODENAME" = "experimental" -o "$CODENAME" = "experimental2" ]; then
+                       local SUITE="$(echo "$dir" | cut -d'/' -f 4)"
+                       local CODENAME="$(getcodenamefromsuite $SUITE)"
+                       local VERSION="$(getreleaseversionfromsuite $SUITE)"
+                       if [ -z "$VERSION" ]; then
+                               aptftparchive -qq release $dir \
+                                       -o APT::FTPArchive::Release::Suite="${SUITE}" \
+                                       -o APT::FTPArchive::Release::Codename="${CODENAME}" \
+                                               | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference
+                       else
+                               aptftparchive -qq release $dir \
+                                       -o APT::FTPArchive::Release::Suite="${SUITE}" \
+                                       -o APT::FTPArchive::Release::Codename="${CODENAME}" \
+                                       -o APT::FTPArchive::Release::Version="${VERSION}" \
+                                               | sed -e '/0 Release$/ d' > $dir/Release # remove the self reference
+                       fi
+                       if [ "$SUITE" = "experimental" -o "$SUITE" = "experimental2" ]; then
                                sed -i '/^Date: / a\
 NotAutomatic: yes' $dir/Release
                        fi
@@ -573,13 +619,27 @@ changetowebserver() {
        if which weborf > /dev/null; then
                weborf -xb aptarchive/ 2>&1 > /dev/null &
                addtrap "kill $!;"
-               local APTARCHIVE="file://$(readlink -f ./aptarchive)"
-               for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
-                       sed -i $LIST -e "s#$APTARCHIVE#http://localhost:8080/#"
-               done
-               return 0
+       elif which gatling > /dev/null; then
+               cd aptarchive
+               gatling -p 8080 -F -S 2>&1 > /dev/null &
+               addtrap "kill $!;"
+               cd - > /dev/null
+       elif which lighttpd > /dev/null; then
+               echo "server.document-root = \"$(readlink -f ./aptarchive)\"
+server.port = 8080
+server.stat-cache-engine = \"disable\"" > lighttpd.conf
+               lighttpd -t -f lighttpd.conf >/dev/null || msgdie 'Can not change to webserver: our lighttpd config is invalid'
+               lighttpd -D -f lighttpd.conf 2>/dev/null >/dev/null &
+               addtrap "kill $!;"
+       else
+               msgdie 'You have to install weborf or lighttpd first'
+               return 1
        fi
-       return 1
+       local APTARCHIVE="file://$(readlink -f ./aptarchive)"
+       for LIST in $(find rootdir/etc/apt/sources.list.d/ -name 'apt-test-*.list'); do
+               sed -i $LIST -e "s#$APTARCHIVE#http://localhost:8080/#"
+       done
+       return 0
 }
 
 checkdiff() {
@@ -695,7 +755,13 @@ testmarkedauto() {
                while [ -n "$1" ]; do echo "$1"; shift; done | sort > $COMPAREFILE
        else
                msgtest 'Test for correctly marked as auto-installed' 'no package'
-               echo > $COMPAREFILE
+               echo -n > $COMPAREFILE
        fi
        aptmark showauto 2>&1 | checkdiff $COMPAREFILE - && msgpass || msgfail
 }
+
+pause() {
+       echo "STOPPED execution. Press enter to continue"
+       local IGNORE
+       read IGNORE
+}