1#!/bin/bash 2 3source scripts/runtest.sh 4source scripts/portability.sh 5 6TOPDIR="$PWD" 7export FILES="$PWD"/tests/files 8 9trap 'kill $(jobs -p) 2>/dev/null; exit 1' INT 10 11rm -rf generated/testdir 12mkdir -p generated/testdir/testdir 13 14if [ -z "$TEST_HOST" ] 15then 16 if [ $# -ne 0 ] 17 then 18 PREFIX=generated/testdir/ scripts/single.sh "$@" || exit 1 19 else 20 make install_flat PREFIX=generated/testdir || exit 1 21 fi 22fi 23 24cd generated/testdir 25PATH="$PWD:$PATH" 26TESTDIR="$PWD" 27export LC_COLLATE=C 28 29[ -f "$TOPDIR/generated/config.h" ] && 30 export OPTIONFLAGS=:$(echo $($SED -nr 's/^#define CFG_(.*) 1/\1/p' "$TOPDIR/generated/config.h") | $SED 's/ /:/g') 31 32do_test() 33{ 34 cd "$TESTDIR" && rm -rf testdir continue && mkdir testdir && cd testdir || 35 exit 1 36 CMDNAME="${1##*/}" 37 CMDNAME="${CMDNAME%.test}" 38 if [ -z "$TEST_HOST" ] 39 then 40 C="$TESTDIR/$CMDNAME" 41 [ ! -e "$C" ] && echo "$CMDNAME disabled" && return 42 C="$(dirname $(realpath "$C"))/$CMDNAME" 43 else 44 C="$(which $CMDNAME 2>/dev/null)" 45 [ -z "$C" ] && printf '%s\n' "$SHOWSKIP: no $CMDNAME" && return 46 fi 47 48 (. "$1"; cd "$TESTDIR"; echo "$FAILCOUNT" > continue) 49 cd "$TESTDIR" 50 [ -e continue ] && FAILCOUNT=$(($(cat continue)+$FAILCOUNT)) || exit 1 51} 52 53if [ $# -ne 0 ] 54then 55 for i in "$@" 56 do 57 do_test "$TOPDIR"/tests/$i.test 58 done 59else 60 for i in "$TOPDIR"/tests/*.test 61 do 62 [ -z "$TEST_ALL" ] && [ ! -x "$i" ] && continue 63 do_test "$i" 64 done 65fi 66 67[ $FAILCOUNT -eq 0 ] 68