This allows the scripts to be executed on systems that don't have bash in /bin. This fixes "make check".
90 lines
1.8 KiB
Bash
Executable file
90 lines
1.8 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
print_help() {
|
|
echo "$1 [-a] [-i ITERATIONS] [-m MAXFAILS] [-s SEED] [TEST]..."
|
|
}
|
|
|
|
run_test() {
|
|
local result name=$1 seed=$2
|
|
|
|
CLKNETSIM_RANDOM_SEED=$seed ./$name
|
|
result=$?
|
|
|
|
if [ $result -ne 0 -a $result -ne 9 ]; then
|
|
if [ $abort_on_fail -ne 0 ]; then
|
|
echo 1>&2
|
|
echo Failed with random seed $seed 1>&2
|
|
exit 1
|
|
fi
|
|
failed_seeds=(${failed_seeds[@]} $seed)
|
|
fi
|
|
|
|
return $result
|
|
}
|
|
|
|
abort_on_fail=0
|
|
iterations=1
|
|
max_fails=0
|
|
random_seed=${CLKNETSIM_RANDOM_SEED:-$RANDOM}
|
|
|
|
while getopts ":ai:m:s:" opt; do
|
|
case $opt in
|
|
a) abort_on_fail=1;;
|
|
i) iterations=$OPTARG;;
|
|
m) max_fails=$OPTARG;;
|
|
s) random_seed=$OPTARG;;
|
|
*) print_help "$0"; exit 3;;
|
|
esac
|
|
done
|
|
|
|
shift $[$OPTIND - 1]
|
|
|
|
passed=() failed=() skipped=() failed_seeds=()
|
|
|
|
[ $# -gt 0 ] && tests=($@) || tests=([0-9]*-*[^_])
|
|
|
|
for test in "${tests[@]}"; do
|
|
if [ $iterations -gt 1 ]; then
|
|
printf "%-30s" "$test"
|
|
fails=0
|
|
for i in $(seq 1 $iterations); do
|
|
run_test $test $[$random_seed + $i - 1] > /dev/null
|
|
case $? in
|
|
0) echo -n ".";;
|
|
9) break;;
|
|
*) echo -n "x"; fails=$[$fails + 1];;
|
|
esac
|
|
done
|
|
if [ $i -lt $iterations ]; then
|
|
printf "%${iterations}s" ""
|
|
echo " SKIP"
|
|
result=9
|
|
elif [ $fails -gt $max_fails ]; then
|
|
echo " FAIL"
|
|
result=1
|
|
else
|
|
echo " PASS"
|
|
result=0
|
|
fi
|
|
else
|
|
printf "%s " "$test"
|
|
run_test $test $random_seed
|
|
result=$?
|
|
echo
|
|
fi
|
|
|
|
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[@]}) (${failed_seeds[@]})"
|
|
echo " SKIPPED ${#skipped[@]} (${skipped[@]})"
|
|
|
|
[ ${#failed[@]} -eq 0 ]
|