blob: fbce33699070f7cae9dfb2c1511f6fc678c77fed [file] [log] [blame]
#!/bin/sh -eu
my_cleanup() {
[ -n "${workdir:-}" ] && rm -rf "${workdir}"
}
trap "my_cleanup" EXIT
for sig in INT TERM ; do
# We want sig to expand right here and now, as it's
# a loop variable, not when signalled. For $$ it
# doesn't matter.
# shellcheck disable=SC2064
trap "my_cleanup ; trap - EXIT ; trap - ${sig} ; kill -s ${sig} $$" ${sig}
done
workdir=$(mktemp -d -t onig.ptest.XXXXXX)
status="${workdir}/failed"
touch "${status}"
find tests/ -perm -111 -type f ! -path "tests/.debug/*" -exec sh -c '
workdir="${1}"
status="${2}"
t="${3}"
t_log="${workdir}/$(basename ${t}).log"
res=0
./${t} > "${t_log}" 2>&1 \
|| res=$?
if [ $res -eq 0 ] ; then
echo "PASS: ${t}"
else
echo "FAIL: ${t}"
echo "$(basename ${t}): ${t_log}" >> "${status}"
fi
' _ "${workdir}" "${status}" {} \;
if [ $(stat -c '%s' "${status}") -ne 0 ] ; then
exec >&2
while IFS=': ' read -r t t_log ; do
printf "\n=========================\n"
printf "ERROR: %s:\n" "${t}"
printf -- "-------------------------\n"
cat "${t_log}"
done < "${status}"
fi
[ $(stat -c '%s' "${status}") -eq 0 ]