2023-08-30 16:16:19 +00:00
|
|
|
set -e
|
|
|
|
|
2023-09-01 16:28:22 +00:00
|
|
|
# cd into script's directory
|
|
|
|
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null
|
|
|
|
root=$(pwd)
|
|
|
|
|
2023-09-04 17:53:33 +00:00
|
|
|
export UTILS="$root"/utils
|
|
|
|
|
2023-09-01 14:18:23 +00:00
|
|
|
REGEXS=()
|
|
|
|
|
2023-08-30 18:08:40 +00:00
|
|
|
while [[ $# -gt 0 ]]; do
|
|
|
|
case $1 in
|
2023-09-01 14:18:23 +00:00
|
|
|
-h|--help)
|
|
|
|
cat <<EOF
|
|
|
|
USAGE: [flags] [test regexs...]
|
|
|
|
FLAGS
|
2023-09-01 15:19:48 +00:00
|
|
|
--keep-tmp
|
2023-09-01 14:18:23 +00:00
|
|
|
--verbose (-v)
|
|
|
|
--help (-h)
|
|
|
|
EOF
|
2023-08-30 18:08:40 +00:00
|
|
|
exit 1
|
|
|
|
;;
|
2023-09-01 15:19:48 +00:00
|
|
|
-v|--verbose)
|
|
|
|
VERBOSE=1
|
|
|
|
shift
|
|
|
|
;;
|
|
|
|
--keep-tmp)
|
|
|
|
KEEP_TMP=1
|
|
|
|
shift
|
|
|
|
;;
|
2023-09-01 14:18:23 +00:00
|
|
|
*)
|
|
|
|
REGEXS+=("$1")
|
|
|
|
shift
|
|
|
|
;;
|
2023-08-30 18:08:40 +00:00
|
|
|
esac
|
|
|
|
done
|
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
TMPDIR="$(mktemp --tmpdir -d isle-tests.XXXXXX)"
|
2023-09-01 15:19:48 +00:00
|
|
|
if [ -z "$KEEP_TMP" ]; then trap 'rm -rf $TMPDIR' EXIT; fi
|
2023-08-30 16:16:19 +00:00
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
export TMPDIR
|
2023-08-30 16:16:19 +00:00
|
|
|
echo "tmp dir is $TMPDIR"
|
|
|
|
|
2023-09-04 17:53:33 +00:00
|
|
|
# Blackhole these directories so that tests don't accidentally use the host's
|
|
|
|
# real ones.
|
|
|
|
export XDG_RUNTIME_DIR=/dev/null
|
|
|
|
export XDG_DATA_HOME=/dev/null
|
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
test_files=$(
|
2023-09-01 16:28:22 +00:00
|
|
|
find ./cases -type f -name '*.sh' \
|
|
|
|
| sed "s|^\./cases/||" \
|
2023-08-31 20:07:36 +00:00
|
|
|
| grep -v entrypoint.sh \
|
2023-09-01 16:28:22 +00:00
|
|
|
| sort -n
|
2023-08-31 20:07:36 +00:00
|
|
|
)
|
2023-08-30 16:16:19 +00:00
|
|
|
|
2023-09-01 14:18:23 +00:00
|
|
|
for r in "${REGEXS[@]}"; do
|
2023-09-01 16:28:22 +00:00
|
|
|
test_files="$(echo "$test_files" | grep "$r")"
|
2023-09-01 14:18:23 +00:00
|
|
|
done
|
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
echo -e "number of tests: $(echo "$test_files" | wc -l)\n"
|
|
|
|
for file in $test_files; do
|
2023-08-31 19:46:56 +00:00
|
|
|
echo "$file"
|
2023-08-30 18:08:40 +00:00
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
[ -z "$VERBOSE" ] && output="$TMPDIR/$file.log" || output=/dev/stdout
|
2023-08-30 18:08:40 +00:00
|
|
|
|
2023-09-01 14:18:23 +00:00
|
|
|
(
|
2023-09-04 17:53:33 +00:00
|
|
|
export TEST_CASE_FILE="$file"
|
2023-08-31 20:07:36 +00:00
|
|
|
|
2023-09-01 16:28:22 +00:00
|
|
|
if ! $SHELL -e -x "$root/cases/$file" >"$output" 2>&1; then
|
2023-09-01 14:18:23 +00:00
|
|
|
echo "$file FAILED"
|
|
|
|
if [ -z "$VERBOSE" ]; then
|
|
|
|
echo "output of test is as follows"
|
|
|
|
echo "------------------------------"
|
|
|
|
cat "$output"
|
|
|
|
echo "------------------------------"
|
|
|
|
fi
|
|
|
|
exit 1
|
2023-08-31 19:46:56 +00:00
|
|
|
fi
|
2023-09-01 14:18:23 +00:00
|
|
|
)
|
2023-08-30 16:16:19 +00:00
|
|
|
done
|
|
|
|
|
2023-08-31 20:07:36 +00:00
|
|
|
echo -e '\nall tests succeeded!'
|