#!/usr/bin/env zsh DIR="${0:a:h}" ROOT_DIR="$DIR/.." TEST_DIR="$ROOT_DIR/test" header() { local message="$1" cat <<-EOF #====================================================================# # $message #====================================================================# EOF } # ZSH binary to use local zsh_bin="zsh" while getopts ":z:" opt; do case $opt in z) zsh_bin="$OPTARG" ;; \?) echo "Invalid option: -$OPTARG" >&2 exit 1 ;; :) echo "Option -$OPTARG requires an argument" >&2 exit 1 ;; esac done shift $((OPTIND -1)) # Test suites to run local -a tests if [ $#@ -gt 0 ]; then tests=($@) else tests=($TEST_DIR/**/*_test.zsh) fi local -i retval=0 for suite in $tests; do header "${suite#"$ROOT_DIR/"}" "$zsh_bin" -f "$suite" || retval=$? done exit $retval