set -e while [[ $# -gt 0 ]]; do case $1 in -v|--verbose) VERBOSE=1 shift; ;; *) echo "USAGE: [-v|--verbose]" exit 1 ;; esac done # cd into script's directory cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null root=$(pwd) TMPDIR="$(mktemp --tmpdir -d isle-tests.XXXXXX)" trap 'rm -rf $TMPDIR' EXIT export TMPDIR echo "tmp dir is $TMPDIR" test_files=$( find . -type f -name '*.sh' \ | sed "s|^\./||" \ | grep -v entrypoint.sh \ | sort -n\ ) echo -e "number of tests: $(echo "$test_files" | wc -l)\n" for file in $test_files; do echo "$file" [ -z "$VERBOSE" ] && output="$TMPDIR/$file.log" || output=/dev/stdout tmp="$TMPDIR/$file.tmp" mkdir -p "$tmp" if ! (cd "$tmp" && TMPDIR="$tmp" $SHELL -e -x "$root/$file" >"$output" 2>&1); then echo "$file FAILED" if [ -z "$VERBOSE" ]; then echo "output of test is as follows" echo "------------------------------" cat "$TMPDIR/$file.log" echo "------------------------------" fi exit 1 fi done echo -e '\nall tests succeeded!'