xref: /openbmc/qemu/tests/qemu-iotests/check (revision 934659c460d46c948cf348822fda1d38556ed9a4)
1908eaf68SStefan Hajnoczi#!/bin/bash
26bf19c94SChristoph Hellwig#
36bf19c94SChristoph Hellwig# Copyright (C) 2009 Red Hat, Inc.
46bf19c94SChristoph Hellwig# Copyright (c) 2000-2002,2006 Silicon Graphics, Inc.  All Rights Reserved.
56bf19c94SChristoph Hellwig#
66bf19c94SChristoph Hellwig# This program is free software; you can redistribute it and/or
76bf19c94SChristoph Hellwig# modify it under the terms of the GNU General Public License as
86bf19c94SChristoph Hellwig# published by the Free Software Foundation.
96bf19c94SChristoph Hellwig#
106bf19c94SChristoph Hellwig# This program is distributed in the hope that it would be useful,
116bf19c94SChristoph Hellwig# but WITHOUT ANY WARRANTY; without even the implied warranty of
126bf19c94SChristoph Hellwig# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
136bf19c94SChristoph Hellwig# GNU General Public License for more details.
146bf19c94SChristoph Hellwig#
156bf19c94SChristoph Hellwig# You should have received a copy of the GNU General Public License
16e8c212d6SChristoph Hellwig# along with this program.  If not, see <http://www.gnu.org/licenses/>.
176bf19c94SChristoph Hellwig#
186bf19c94SChristoph Hellwig#
196bf19c94SChristoph Hellwig# Control script for QA
206bf19c94SChristoph Hellwig#
216bf19c94SChristoph Hellwig
226bf19c94SChristoph Hellwigtmp=/tmp/$$
236bf19c94SChristoph Hellwigstatus=0
246bf19c94SChristoph Hellwigneedwrap=true
256bf19c94SChristoph Hellwigtry=0
266bf19c94SChristoph Hellwign_bad=0
276bf19c94SChristoph Hellwigbad=""
286bf19c94SChristoph Hellwignotrun=""
296bf19c94SChristoph Hellwiginterrupt=true
306bf19c94SChristoph Hellwig
316bf19c94SChristoph Hellwig# by default don't output timestamps
326bf19c94SChristoph Hellwigtimestamp=${TIMESTAMP:=false}
336bf19c94SChristoph Hellwig
346bf19c94SChristoph Hellwig# generic initialization
356bf19c94SChristoph Hellwigiam=check
366bf19c94SChristoph Hellwig
37e8f8624dSMax Reitz_init_error()
38e8f8624dSMax Reitz{
39e8f8624dSMax Reitz    echo "$iam: $1" >&2
406bf19c94SChristoph Hellwig    exit 1
41e8f8624dSMax Reitz}
42e8f8624dSMax Reitz
43e8f8624dSMax Reitzif [ -L "$0" ]
44e8f8624dSMax Reitzthen
45e8f8624dSMax Reitz    # called from the build tree
46e8f8624dSMax Reitz    source_iotests=$(dirname "$(readlink "$0")")
47e8f8624dSMax Reitz    if [ -z "$source_iotests" ]
48e8f8624dSMax Reitz    then
49e8f8624dSMax Reitz        _init_error "failed to obtain source tree name from check symlink"
50e8f8624dSMax Reitz    fi
51e8f8624dSMax Reitz    source_iotests=$(cd "$source_iotests"; pwd) || _init_error "failed to enter source tree"
52e8f8624dSMax Reitz    build_iotests=$PWD
53e8f8624dSMax Reitzelse
54e8f8624dSMax Reitz    # called from the source tree
55e8f8624dSMax Reitz    source_iotests=$PWD
56e8f8624dSMax Reitz    # this may be an in-tree build (note that in the following code we may not
57e8f8624dSMax Reitz    # assume that it truly is and have to test whether the build results
58e8f8624dSMax Reitz    # actually exist)
59e8f8624dSMax Reitz    build_iotests=$PWD
60e8f8624dSMax Reitzfi
61e8f8624dSMax Reitz
62e8f8624dSMax Reitzbuild_root="$build_iotests/../.."
63e8f8624dSMax Reitz
64e8f8624dSMax Reitzif [ -x "$build_iotests/socket_scm_helper" ]
65e8f8624dSMax Reitzthen
66e8f8624dSMax Reitz    export SOCKET_SCM_HELPER="$build_iotests/socket_scm_helper"
67e8f8624dSMax Reitzfi
68e8f8624dSMax Reitz
69e8f8624dSMax Reitz# if ./qemu exists, it should be prioritized and will be chosen by common.config
70e8f8624dSMax Reitzif [[ -z "$QEMU_PROG" && ! -x './qemu' ]]
71e8f8624dSMax Reitzthen
72e8f8624dSMax Reitz    arch=$(uname -m 2> /dev/null)
73e8f8624dSMax Reitz
74e8f8624dSMax Reitz    if [[ -n $arch && -x "$build_root/$arch-softmmu/qemu-system-$arch" ]]
75e8f8624dSMax Reitz    then
76e8f8624dSMax Reitz        export QEMU_PROG="$build_root/$arch-softmmu/qemu-system-$arch"
77e8f8624dSMax Reitz    else
78e8f8624dSMax Reitz        pushd "$build_root" > /dev/null
79e8f8624dSMax Reitz        for binary in *-softmmu/qemu-system-*
80e8f8624dSMax Reitz        do
81e8f8624dSMax Reitz            if [ -x "$binary" ]
82e8f8624dSMax Reitz            then
83e8f8624dSMax Reitz                export QEMU_PROG="$build_root/$binary"
84e8f8624dSMax Reitz                break
85e8f8624dSMax Reitz            fi
86e8f8624dSMax Reitz        done
87e8f8624dSMax Reitz        popd > /dev/null
88e8f8624dSMax Reitz    fi
89e8f8624dSMax Reitzfi
90e8f8624dSMax Reitz
91e8f8624dSMax Reitzif [[ -z $QEMU_IMG_PROG && -x "$build_root/qemu-img" && ! -x './qemu-img' ]]
92e8f8624dSMax Reitzthen
93e8f8624dSMax Reitz    export QEMU_IMG_PROG="$build_root/qemu-img"
94e8f8624dSMax Reitzfi
95e8f8624dSMax Reitz
96e8f8624dSMax Reitzif [[ -z $QEMU_IO_PROG && -x "$build_root/qemu-io" && ! -x './qemu-io' ]]
97e8f8624dSMax Reitzthen
98e8f8624dSMax Reitz    export QEMU_IO_PROG="$build_root/qemu-io"
99e8f8624dSMax Reitzfi
100e8f8624dSMax Reitz
101e8f8624dSMax Reitzif [[ -z $QEMU_NBD_PROG && -x "$build_root/qemu-nbd" && ! -x './qemu-nbd' ]]
102e8f8624dSMax Reitzthen
103e8f8624dSMax Reitz    export QEMU_NBD_PROG="$build_root/qemu-nbd"
104e8f8624dSMax Reitzfi
105e8f8624dSMax Reitz
1067fed1a49SMax Reitz# we need common.env
1077fed1a49SMax Reitzif ! . "$build_iotests/common.env"
1087fed1a49SMax Reitzthen
1097fed1a49SMax Reitz    _init_error "failed to source common.env (make sure the qemu-iotests are run from tests/qemu-iotests in the build tree)"
1107fed1a49SMax Reitzfi
1117fed1a49SMax Reitz
112e8f8624dSMax Reitz# we need common.config
113e8f8624dSMax Reitzif ! . "$source_iotests/common.config"
114e8f8624dSMax Reitzthen
115e8f8624dSMax Reitz    _init_error "failed to source common.config"
1166bf19c94SChristoph Hellwigfi
1176bf19c94SChristoph Hellwig
1186bf19c94SChristoph Hellwig# we need common.rc
119e8f8624dSMax Reitzif ! . "$source_iotests/common.rc"
1206bf19c94SChristoph Hellwigthen
121e8f8624dSMax Reitz    _init_error "failed to source common.rc"
1226bf19c94SChristoph Hellwigfi
1236bf19c94SChristoph Hellwig
12489004368SKevin Wolf# we need common
125e8f8624dSMax Reitz. "$source_iotests/common"
12689004368SKevin Wolf
1276bf19c94SChristoph Hellwig#if [ `id -u` -ne 0 ]
1286bf19c94SChristoph Hellwig#then
1296bf19c94SChristoph Hellwig#    echo "check: QA must be run as root"
1306bf19c94SChristoph Hellwig#    exit 1
1316bf19c94SChristoph Hellwig#fi
1326bf19c94SChristoph Hellwig
1336bf19c94SChristoph Hellwig_wallclock()
1346bf19c94SChristoph Hellwig{
1356bf19c94SChristoph Hellwig    date "+%H %M %S" | $AWK_PROG '{ print $1*3600 + $2*60 + $3 }'
1366bf19c94SChristoph Hellwig}
1376bf19c94SChristoph Hellwig
1386bf19c94SChristoph Hellwig_timestamp()
1396bf19c94SChristoph Hellwig{
1406bf19c94SChristoph Hellwig    now=`date "+%T"`
1416bf19c94SChristoph Hellwig    echo -n " [$now]"
1426bf19c94SChristoph Hellwig}
1436bf19c94SChristoph Hellwig
1446bf19c94SChristoph Hellwig_wrapup()
1456bf19c94SChristoph Hellwig{
1466bf19c94SChristoph Hellwig    # for hangcheck ...
1476bf19c94SChristoph Hellwig    # remove files that were used by hangcheck
1486bf19c94SChristoph Hellwig    #
1496bf19c94SChristoph Hellwig    [ -f /tmp/check.pid ] && rm -rf /tmp/check.pid
1506bf19c94SChristoph Hellwig    [ -f /tmp/check.sts ] && rm -rf /tmp/check.sts
1516bf19c94SChristoph Hellwig
1526bf19c94SChristoph Hellwig    if $showme
1536bf19c94SChristoph Hellwig    then
1546bf19c94SChristoph Hellwig        :
1556bf19c94SChristoph Hellwig    elif $needwrap
1566bf19c94SChristoph Hellwig    then
1576bf19c94SChristoph Hellwig        if [ -f check.time -a -f $tmp.time ]
1586bf19c94SChristoph Hellwig        then
1596bf19c94SChristoph Hellwig            cat check.time $tmp.time \
1606bf19c94SChristoph Hellwig            | $AWK_PROG '
1616bf19c94SChristoph Hellwig        { t[$1] = $2 }
1626bf19c94SChristoph HellwigEND        { if (NR > 0) {
1636bf19c94SChristoph Hellwig            for (i in t) print i " " t[i]
1646bf19c94SChristoph Hellwig          }
1656bf19c94SChristoph Hellwig        }' \
1666bf19c94SChristoph Hellwig            | sort -n >$tmp.out
1676bf19c94SChristoph Hellwig            mv $tmp.out check.time
1686bf19c94SChristoph Hellwig        fi
1696bf19c94SChristoph Hellwig
1706bf19c94SChristoph Hellwig        if [ -f $tmp.expunged ]
1716bf19c94SChristoph Hellwig        then
1726bf19c94SChristoph Hellwig            notrun=`wc -l <$tmp.expunged | sed -e 's/  *//g'`
1736bf19c94SChristoph Hellwig            try=`expr $try - $notrun`
1746bf19c94SChristoph Hellwig            list=`echo "$list" | sed -f $tmp.expunged`
1756bf19c94SChristoph Hellwig        fi
1766bf19c94SChristoph Hellwig
1776bf19c94SChristoph Hellwig        echo "" >>check.log
1786bf19c94SChristoph Hellwig        date >>check.log
1796bf19c94SChristoph Hellwig        echo $list | fmt | sed -e 's/^/    /' >>check.log
1806bf19c94SChristoph Hellwig        $interrupt && echo "Interrupted!" >>check.log
1816bf19c94SChristoph Hellwig
1826bf19c94SChristoph Hellwig        if [ ! -z "$notrun" ]
1836bf19c94SChristoph Hellwig        then
1846bf19c94SChristoph Hellwig            echo "Not run:$notrun"
1856bf19c94SChristoph Hellwig            echo "Not run:$notrun" >>check.log
1866bf19c94SChristoph Hellwig        fi
1876bf19c94SChristoph Hellwig        if [ ! -z "$n_bad" -a $n_bad != 0 ]
1886bf19c94SChristoph Hellwig        then
1896bf19c94SChristoph Hellwig            echo "Failures:$bad"
1906bf19c94SChristoph Hellwig            echo "Failed $n_bad of $try tests"
1916bf19c94SChristoph Hellwig            echo "Failures:$bad" | fmt >>check.log
1926bf19c94SChristoph Hellwig            echo "Failed $n_bad of $try tests" >>check.log
1936bf19c94SChristoph Hellwig        else
1946bf19c94SChristoph Hellwig            echo "Passed all $try tests"
1956bf19c94SChristoph Hellwig            echo "Passed all $try tests" >>check.log
1966bf19c94SChristoph Hellwig        fi
1976bf19c94SChristoph Hellwig        needwrap=false
1986bf19c94SChristoph Hellwig    fi
1996bf19c94SChristoph Hellwig
2006bf19c94SChristoph Hellwig    rm -f /tmp/*.out /tmp/*.err /tmp/*.time
2016bf19c94SChristoph Hellwig    rm -f /tmp/check.pid /tmp/check.sts
2026bf19c94SChristoph Hellwig    rm -f $tmp.*
2036bf19c94SChristoph Hellwig}
2046bf19c94SChristoph Hellwig
2056bf19c94SChristoph Hellwigtrap "_wrapup; exit \$status" 0 1 2 3 15
2066bf19c94SChristoph Hellwig
2076bf19c94SChristoph Hellwig# for hangcheck ...
2086bf19c94SChristoph Hellwig# Save pid of check in a well known place, so that hangcheck can be sure it
2096bf19c94SChristoph Hellwig# has the right pid (getting the pid from ps output is not reliable enough).
2106bf19c94SChristoph Hellwig#
2116bf19c94SChristoph Hellwigrm -rf /tmp/check.pid
2126bf19c94SChristoph Hellwigecho $$ >/tmp/check.pid
2136bf19c94SChristoph Hellwig
2146bf19c94SChristoph Hellwig# for hangcheck ...
2156bf19c94SChristoph Hellwig# Save the status of check in a well known place, so that hangcheck can be
2166bf19c94SChristoph Hellwig# sure to know where check is up to (getting test number from ps output is
2176bf19c94SChristoph Hellwig# not reliable enough since the trace stuff has been introduced).
2186bf19c94SChristoph Hellwig#
2196bf19c94SChristoph Hellwigrm -rf /tmp/check.sts
2206bf19c94SChristoph Hellwigecho "preamble" >/tmp/check.sts
2216bf19c94SChristoph Hellwig
2226bf19c94SChristoph Hellwig# don't leave old full output behind on a clean run
2236bf19c94SChristoph Hellwigrm -f check.full
2246bf19c94SChristoph Hellwig
2256bf19c94SChristoph Hellwig[ -f check.time ] || touch check.time
2266bf19c94SChristoph Hellwig
2276bf19c94SChristoph HellwigFULL_IMGFMT_DETAILS=`_full_imgfmt_details`
2289cdfa1b3SMORITA KazutakaFULL_IMGPROTO_DETAILS=`_full_imgproto_details`
2296bf19c94SChristoph HellwigFULL_HOST_DETAILS=`_full_platform_details`
2306bf19c94SChristoph Hellwig#FULL_MKFS_OPTIONS=`_scratch_mkfs_options`
2316bf19c94SChristoph Hellwig#FULL_MOUNT_OPTIONS=`_scratch_mount_options`
2326bf19c94SChristoph Hellwig
2336bf19c94SChristoph Hellwigcat <<EOF
234*934659c4SMax ReitzQEMU          -- "$QEMU_PROG" $QEMU_OPTIONS
235*934659c4SMax ReitzQEMU_IMG      -- "$QEMU_IMG_PROG" $QEMU_IMG_OPTIONS
236*934659c4SMax ReitzQEMU_IO       -- "$QEMU_IO_PROG" $QEMU_IO_OPTIONS
237*934659c4SMax ReitzQEMU_NBD      -- "$QEMU_NBD_PROG" $QEMU_NBD_OPTIONS
2386bf19c94SChristoph HellwigIMGFMT        -- $FULL_IMGFMT_DETAILS
2399cdfa1b3SMORITA KazutakaIMGPROTO      -- $FULL_IMGPROTO_DETAILS
2406bf19c94SChristoph HellwigPLATFORM      -- $FULL_HOST_DETAILS
241b8aff7d6SFam ZhengTEST_DIR      -- $TEST_DIR
24230b005d9SWenchao XiaSOCKET_SCM_HELPER -- $SOCKET_SCM_HELPER
2436bf19c94SChristoph Hellwig
2446bf19c94SChristoph HellwigEOF
2456bf19c94SChristoph Hellwig#MKFS_OPTIONS  -- $FULL_MKFS_OPTIONS
2466bf19c94SChristoph Hellwig#MOUNT_OPTIONS -- $FULL_MOUNT_OPTIONS
2476bf19c94SChristoph Hellwig
2486bf19c94SChristoph Hellwigseq="check"
2496bf19c94SChristoph Hellwig
2506bf19c94SChristoph Hellwig[ -n "$TESTS_REMAINING_LOG" ] && echo $list > $TESTS_REMAINING_LOG
2516bf19c94SChristoph Hellwig
2526bf19c94SChristoph Hellwigfor seq in $list
2536bf19c94SChristoph Hellwigdo
2546bf19c94SChristoph Hellwig    err=false
2556bf19c94SChristoph Hellwig    echo -n "$seq"
2566bf19c94SChristoph Hellwig    if [ -n "$TESTS_REMAINING_LOG" ] ; then
2576bf19c94SChristoph Hellwig        sed -e "s/$seq//" -e 's/  / /' -e 's/^ *//' $TESTS_REMAINING_LOG > $TESTS_REMAINING_LOG.tmp
2586bf19c94SChristoph Hellwig        mv $TESTS_REMAINING_LOG.tmp $TESTS_REMAINING_LOG
2596bf19c94SChristoph Hellwig        sync
2606bf19c94SChristoph Hellwig    fi
2616bf19c94SChristoph Hellwig
2626bf19c94SChristoph Hellwig    if $showme
2636bf19c94SChristoph Hellwig    then
2646bf19c94SChristoph Hellwig        echo
2656bf19c94SChristoph Hellwig        continue
2666bf19c94SChristoph Hellwig    elif [ -f expunged ] && $expunge && egrep "^$seq([         ]|\$)" expunged >/dev/null
2676bf19c94SChristoph Hellwig    then
2686bf19c94SChristoph Hellwig        echo " - expunged"
2696bf19c94SChristoph Hellwig        rm -f $seq.out.bad
2706bf19c94SChristoph Hellwig        echo "/^$seq\$/d" >>$tmp.expunged
271e8f8624dSMax Reitz    elif [ ! -f "$source_iotests/$seq" ]
2726bf19c94SChristoph Hellwig    then
2736bf19c94SChristoph Hellwig        echo " - no such test?"
2746bf19c94SChristoph Hellwig        echo "/^$seq\$/d" >>$tmp.expunged
2756bf19c94SChristoph Hellwig    else
2766bf19c94SChristoph Hellwig        # really going to try and run this one
2776bf19c94SChristoph Hellwig        #
2786bf19c94SChristoph Hellwig        rm -f $seq.out.bad
2796bf19c94SChristoph Hellwig        lasttime=`sed -n -e "/^$seq /s/.* //p" <check.time`
2806bf19c94SChristoph Hellwig        if [ "X$lasttime" != X ]; then
2816bf19c94SChristoph Hellwig                echo -n " ${lasttime}s ..."
2826bf19c94SChristoph Hellwig        else
2836bf19c94SChristoph Hellwig                echo -n "        "        # prettier output with timestamps.
2846bf19c94SChristoph Hellwig        fi
2856bf19c94SChristoph Hellwig        rm -f core $seq.notrun
2866bf19c94SChristoph Hellwig
2876bf19c94SChristoph Hellwig        # for hangcheck ...
2886bf19c94SChristoph Hellwig        echo "$seq" >/tmp/check.sts
2896bf19c94SChristoph Hellwig
2906bf19c94SChristoph Hellwig        start=`_wallclock`
2916bf19c94SChristoph Hellwig        $timestamp && echo -n "        ["`date "+%T"`"]"
292ea81ca9dSMax Reitz
293ea81ca9dSMax Reitz        if [ "$(head -n 1 "$source_iotests/$seq")" == "#!/usr/bin/env python" ]; then
294ea81ca9dSMax Reitz            run_command="$PYTHON $seq"
295ea81ca9dSMax Reitz        else
296ea81ca9dSMax Reitz            run_command="./$seq"
297ea81ca9dSMax Reitz        fi
298e8f8624dSMax Reitz        export OUTPUT_DIR=$PWD
299aa4f592aSFam Zheng        if $debug; then
300aa4f592aSFam Zheng            (cd "$source_iotests";
301aa4f592aSFam Zheng            MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
302aa4f592aSFam Zheng                    $run_command -d 2>&1 | tee $tmp.out)
303aa4f592aSFam Zheng        else
304e8f8624dSMax Reitz            (cd "$source_iotests";
30504129606SStefan Hajnoczi            MALLOC_PERTURB_=${MALLOC_PERTURB_:-$(($RANDOM % 255 + 1))} \
306ea81ca9dSMax Reitz                    $run_command >$tmp.out 2>&1)
307aa4f592aSFam Zheng        fi
3086bf19c94SChristoph Hellwig        sts=$?
3096bf19c94SChristoph Hellwig        $timestamp && _timestamp
3106bf19c94SChristoph Hellwig        stop=`_wallclock`
3116bf19c94SChristoph Hellwig
3126bf19c94SChristoph Hellwig        if [ -f core ]
3136bf19c94SChristoph Hellwig        then
3146bf19c94SChristoph Hellwig            echo -n " [dumped core]"
3156bf19c94SChristoph Hellwig            mv core $seq.core
3166bf19c94SChristoph Hellwig            err=true
3176bf19c94SChristoph Hellwig        fi
3186bf19c94SChristoph Hellwig
3196bf19c94SChristoph Hellwig        if [ -f $seq.notrun ]
3206bf19c94SChristoph Hellwig        then
3216bf19c94SChristoph Hellwig            $timestamp || echo -n " [not run] "
3226bf19c94SChristoph Hellwig            $timestamp && echo " [not run]" && echo -n "        $seq -- "
3236bf19c94SChristoph Hellwig            cat $seq.notrun
3246bf19c94SChristoph Hellwig            notrun="$notrun $seq"
3256bf19c94SChristoph Hellwig        else
3266bf19c94SChristoph Hellwig            if [ $sts -ne 0 ]
3276bf19c94SChristoph Hellwig            then
3286bf19c94SChristoph Hellwig                echo -n " [failed, exit status $sts]"
3296bf19c94SChristoph Hellwig                err=true
3306bf19c94SChristoph Hellwig            fi
3318f94b077SKevin Wolf
332e8f8624dSMax Reitz            reference="$source_iotests/$seq.out"
333e166b414SBo Tu            reference_machine="$source_iotests/$seq.$QEMU_DEFAULT_MACHINE.out"
334e166b414SBo Tu            if [ -f "$reference_machine" ]; then
335e166b414SBo Tu                reference="$reference_machine"
336e166b414SBo Tu            fi
337e166b414SBo Tu
3383baa8449SFam Zheng            if [ "$CACHEMODE" = "none" ]; then
339e8f8624dSMax Reitz                [ -f "$source_iotests/$seq.out.nocache" ] && reference="$source_iotests/$seq.out.nocache"
3408f94b077SKevin Wolf            fi
3418f94b077SKevin Wolf
342e8f8624dSMax Reitz            if [ ! -f "$reference" ]
3436bf19c94SChristoph Hellwig            then
3446bf19c94SChristoph Hellwig                echo " - no qualified output"
3456bf19c94SChristoph Hellwig                err=true
3466bf19c94SChristoph Hellwig            else
347e8f8624dSMax Reitz                if diff -w "$reference" $tmp.out >/dev/null 2>&1
3486bf19c94SChristoph Hellwig                then
3496bf19c94SChristoph Hellwig                    echo ""
3506bf19c94SChristoph Hellwig                    if $err
3516bf19c94SChristoph Hellwig                    then
3526bf19c94SChristoph Hellwig                        :
3536bf19c94SChristoph Hellwig                    else
3546bf19c94SChristoph Hellwig                        echo "$seq `expr $stop - $start`" >>$tmp.time
3556bf19c94SChristoph Hellwig                    fi
3566bf19c94SChristoph Hellwig                else
3576bf19c94SChristoph Hellwig                    echo " - output mismatch (see $seq.out.bad)"
3586bf19c94SChristoph Hellwig                    mv $tmp.out $seq.out.bad
359e8f8624dSMax Reitz                    $diff -w "$reference" $seq.out.bad
3606bf19c94SChristoph Hellwig                    err=true
3616bf19c94SChristoph Hellwig                fi
3626bf19c94SChristoph Hellwig            fi
3636bf19c94SChristoph Hellwig        fi
3646bf19c94SChristoph Hellwig
3656bf19c94SChristoph Hellwig    fi
3666bf19c94SChristoph Hellwig
3676bf19c94SChristoph Hellwig    # come here for each test, except when $showme is true
3686bf19c94SChristoph Hellwig    #
3696bf19c94SChristoph Hellwig    if $err
3706bf19c94SChristoph Hellwig    then
3716bf19c94SChristoph Hellwig        bad="$bad $seq"
3726bf19c94SChristoph Hellwig        n_bad=`expr $n_bad + 1`
3736bf19c94SChristoph Hellwig        quick=false
3746bf19c94SChristoph Hellwig    fi
3756bf19c94SChristoph Hellwig    [ -f $seq.notrun ] || try=`expr $try + 1`
3766bf19c94SChristoph Hellwig
3776bf19c94SChristoph Hellwig    seq="after_$seq"
3786bf19c94SChristoph Hellwigdone
3796bf19c94SChristoph Hellwig
3806bf19c94SChristoph Hellwiginterrupt=false
3816bf19c94SChristoph Hellwigstatus=`expr $n_bad`
3826bf19c94SChristoph Hellwigexit
383