blob: cb52a52708d107a226106e749af4560ff54a0d8b [file] [log] [blame]
#!/usr/bin/env bash
options="$*"
attempt=1
lastexit=0
rm tests/last-fails || true
while [[ $attempt < 5 ]]; do
echo
echo "~~> Test attempt $attempt"
if [[ -f tests/last-fails ]]; then
echo "~~? Testing only: $(cat tests/last-fails | xargs)"
echo
rm tests/last-run.log
lastexit=0
while read t; do
cargo test --color=always $options $t -- --exact | tee -a tests/last-run.log
status=${PIPESTATUS[0]}
if ! [[ $status = 0 ]]; then
lastexit=$status
fi
done < tests/last-fails
else
echo
cargo test --color=always $options | tee tests/last-run.log
lastexit=${PIPESTATUS[0]}
fi
if [[ $lastexit = 0 ]]; then
break
fi
grep -E "^test \w+ \.\.\. FAILED$" tests/last-run.log \
| cut -d\ -f2 > tests/last-fails
n=$(cat tests/last-fails | wc -l)
if [[ $n = 0 ]]; then
n=compile
fi
echo
echo "~~! $n failures this attempt"
echo
if [[ $n = "compile" ]]; then
break
fi
((attempt+=1))
done
exit $lastexit