isle/tests/entrypoint.sh

82 lines
1.6 KiB
Bash
Raw Normal View History

2023-08-30 16:16:19 +00:00
set -e
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-30 16:16:19 +00:00
# cd into script's directory
cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null
root=$(pwd)
2023-08-30 16:16:19 +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
export TMPDIR
2023-08-30 16:16:19 +00:00
echo "tmp dir is $TMPDIR"
test_files=$(
find . -type f -name '*.sh' \
| sed "s|^\./||" \
| grep -v entrypoint.sh \
| sort -n\
)
2023-08-30 16:16:19 +00:00
2023-09-01 14:18:23 +00:00
for r in "${REGEXS[@]}"; do
test_files="$(echo "$test_files" | grep -P "$r")"
done
echo -e "number of tests: $(echo "$test_files" | wc -l)\n"
for file in $test_files; do
echo "$file"
2023-08-30 18:08:40 +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
(
export TMPDIR="$TMPDIR/$file.tmp"
export XDG_RUNTIME_DIR="$TMPDIR/.run"
export XDG_DATA_HOME="$TMPDIR/.data"
mkdir -p "$TMPDIR" "$XDG_RUNTIME_DIR" "$XDG_DATA_HOME"
cd "$TMPDIR"
2023-09-01 14:18:23 +00:00
if ! $SHELL -e -x "$root/$file" >"$output" 2>&1; then
echo "$file FAILED"
if [ -z "$VERBOSE" ]; then
echo "output of test is as follows"
echo "------------------------------"
cat "$output"
echo "------------------------------"
fi
exit 1
fi
2023-09-01 14:18:23 +00:00
)
2023-08-30 16:16:19 +00:00
done
echo -e '\nall tests succeeded!'
2023-08-30 16:16:19 +00:00