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