64 lines
1.1 KiB
Bash
Executable file
64 lines
1.1 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
print_help() {
|
|
echo "$1 [-a] [-d] [TEST]..."
|
|
}
|
|
|
|
run_test() {
|
|
local result name=$1
|
|
|
|
if [ $destructive -ne 1 ] && [[ "$name" == 1[0-9][0-9]-* ]]; then
|
|
echo "SKIP (destructive test)"
|
|
return 9
|
|
fi
|
|
|
|
./$name
|
|
result=$?
|
|
|
|
if [ $result -ne 0 -a $result -ne 9 ]; then
|
|
if [ $abort_on_fail -ne 0 ]; then
|
|
exit 1
|
|
fi
|
|
fi
|
|
|
|
return $result
|
|
}
|
|
|
|
passed=() failed=() skipped=()
|
|
|
|
abort_on_fail=0
|
|
destructive=0
|
|
|
|
while getopts ":ad" opt; do
|
|
case $opt in
|
|
a) abort_on_fail=1;;
|
|
d) destructive=1;;
|
|
*) print_help "$0"; exit 3;;
|
|
esac
|
|
done
|
|
|
|
shift $[$OPTIND - 1]
|
|
|
|
[ $# -gt 0 ] && tests=($@) || tests=([0-9]*-*[^_])
|
|
|
|
for test in "${tests[@]}"; do
|
|
printf "%s " "$test"
|
|
run_test $test
|
|
result=$?
|
|
echo
|
|
|
|
case $result in
|
|
0) passed=(${passed[@]} $test);;
|
|
9) skipped=(${skipped[@]} $test);;
|
|
*) failed=(${failed[@]} $test);;
|
|
esac
|
|
done
|
|
|
|
echo
|
|
echo "SUMMARY:"
|
|
echo " TOTAL $[${#passed[@]} + ${#failed[@]} + ${#skipped[@]}]"
|
|
echo " PASSED ${#passed[@]}"
|
|
echo " FAILED ${#failed[@]} (${failed[@]})"
|
|
echo " SKIPPED ${#skipped[@]} (${skipped[@]})"
|
|
|
|
[ ${#failed[@]} -eq 0 ]
|