Files
DroidDeck/tools/ci/run-python-tests.sh

33 lines
851 B
Bash
Executable File

#!/usr/bin/env bash
set -uo pipefail
cd "$(dirname "$0")/../.."
groups=${PYTHON_TEST_GROUPS:-3}
work=$(mktemp -d)
trap 'rm -rf "$work"' EXIT
index=0
while read -r file; do
module=$(basename "$file" .py)
echo "$module" >> "$work/group-$((index % groups)).list"
index=$((index + 1))
done < <(ls -S tools/tests/test_*.py)
pids=()
for list in "$work"/group-*.list; do
(
PYTHONPATH=tools/tests python3 -m unittest $(cat "$list") > "${list%.list}.log" 2>&1
echo $? > "${list%.list}.status"
) &
pids+=($!)
done
wait "${pids[@]}"
failed=0
for list in "$work"/group-*.list; do
echo "::group::$(basename "$list"): $(tr '\n' ' ' < "$list" | cut -c1-120)"
cat "${list%.list}.log"
echo "::endgroup::"
if [ "$(cat "${list%.list}.status")" != 0 ]; then
failed=1
echo "::error::$(basename "$list") failed"
fi
done
exit "$failed"