#! /bin/bash set -e if [[ $# -lt 1 || $# -gt 2 ]] ; then echo "Usage: $0 [1]" 1>&2 exit 1 fi # Obtain the absolute path to the tests directory pushd "$(dirname "$0")" &> /dev/null readonly T=$(pwd) popd &> /dev/null export T # Same for the nginx prefix directory pushd "$1" &> /dev/null readonly prefix=$(pwd) popd &> /dev/null dynamic=false if [[ $# -gt 1 && $2 -eq 1 ]] ; then dynamic=true fi readonly dynamic declare -a t_pass=( ) declare -a t_fail=( ) for t in "$T"/*.test ; do name="t/${t##*/}" name=${name%.test} printf "${name} ... " errfile="${name}.err" outfile="${name}.out" shfile="${name}.sh" cat > "${shfile}" <<-EOF readonly DYNAMIC=${dynamic} readonly TESTDIR='$T' readonly PREFIX='${prefix}' $(< "$T/preamble") $(< "$t") EOF if bash -e "${shfile}" > "${outfile}" 2> "${errfile}" ; then t_pass+=( "${name}" ) printf 'passed\n' else t_fail+=( "${name}" ) printf 'failed\n' fi done for name in "${t_fail[@]}" ; do echo printf '=== %s.out\n' "${name}" cat "${name}.out" echo printf '=== %s.err\n' "${name}" cat "${name}.err" echo done printf '=== passed/failed/total: %d/%d/%d\n' \ ${#t_pass[@]} ${#t_fail[@]} $(( ${#t_pass[@]} + ${#t_fail[@]} )) if [[ ${#t_fail[@]} -gt 0 ]] ; then exit 1 fi