]> git.saurik.com Git - apt.git/blobdiff - test/integration/framework
for consistency allow the usage of 'make test' instead of './run-tests'
[apt.git] / test / integration / framework
index 96cdb5f5e31b9f01368646b5cdb0fdf5a17bcc7a..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,6 +619,11 @@ changetowebserver() {
        if which weborf > /dev/null; then
                weborf -xb aptarchive/ 2>&1 > /dev/null &
                addtrap "kill $!;"
+       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