#!/bin/bash # This file is part of autopkgtest # autopkgtest is a tool for testing Debian packages # # autopkgtest is Copyright (C) 2006 Canonical Ltd. # # This program is free software; you can redistribute it and/or modify # it under the terms of the GNU General Public License as published by # the Free Software Foundation; either version 2 of the License, or # (at your option) any later version. # # This program is distributed in the hope that it will be useful, # but WITHOUT ANY WARRANTY; without even the implied warranty of # MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the # GNU General Public License for more details. # # You should have received a copy of the GNU General Public License # along with this program; if not, write to the Free Software # Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. # # See the file CREDITS for a full list of credits information (often # installed as /usr/share/doc/autopkgtest/CREDITS). set -e max_test_count=10 go_anyway=false for arg in "$@"; do case "$arg" in !*) arg="${arg#!}" ;; *) onepackage_args[${#onepackage_args[*]}]="${arg#@}" ;; esac case "$arg" in @*) ;; *=*) eval "$arg" ;; *) . "$arg" ;; esac done if [ "x$distro" = x ]; then : ${testbed_check_path:=/var/lib/autopkgtest/xenlvm/adt_${distro}/good} else : ${testbed_check_path:=/dev/null} fi if [ "x$test_classes" = x ]; then : ${architecture:=`dpkg --print-architecture`} test_classes="source $distro, target=source : binary $distro, target=binary-$architecture" fi fail () { printf >&2 "%s\n" "$*"; exit 127; } progress () { printf "========== %s ==========\n" "$1"; } x () { printf "+ %s\n" "$*"; "$@"; } x2 () { printf >&2 "+ %s\n" "$*"; "$@"; } progress testing test_count=0 while ($go_anyway || test -f go) && test $test_count -lt $max_test_count; do now=`date` printf "%s" "$now: " if ! test -e $testbed_check_path; then printf " testbed broken, bailing\n" break fi xopts="${test_classes%%:*}" xopts_opts="${xopts#*,}" printf "considering (%s) " "$xopts_opts" case "$test_classes" in *:*) test_classes="${test_classes#*:}:$xopts" ;; esac anybroken=false for x in ${xopts%%,*}; do if test -f "stop-$x"; then printf " skipping because of %s" "$x" anybroken=true break fi done if $anybroken; then printf "\n" continue fi adt-testreport-onepackage \ adtrun_extra_opts=--built-binaries-filter=__ \ interactive=false \ "${onepackage_args[@]}" \ $xopts_opts test_count=$(( $test_count + 1 )) done progress 'stopping'