mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-22 17:34:54 +01:00
tests: run all tests in parallel, if available
If either the moreutils or GNU parallel utility are available, run all tests in parallel. On my eight core machine this makes for a ~x7 speed-up in the full test suite (1m24s -> 12s). The design of the test suite makes this parallelization trivial.
This commit is contained in:
parent
591388ccd1
commit
908d930d22
1 changed files with 20 additions and 10 deletions
|
@ -40,17 +40,27 @@ fi
|
|||
|
||||
trap 'e=$?; kill $!; exit $e' HUP INT TERM
|
||||
# Run the tests
|
||||
for test in $TESTS; do
|
||||
$TEST_TIMEOUT_CMD $test "$@" &
|
||||
wait $!
|
||||
# If the test failed without producing results, then it aborted,
|
||||
# so we should abort, too.
|
||||
RES=$?
|
||||
testname=$(basename $test .sh)
|
||||
if [[ $RES != 0 && ! -e "$NOTMUCH_BUILDDIR/test/test-results/$testname" ]]; then
|
||||
exit $RES
|
||||
if command -v parallel >/dev/null ; then
|
||||
if parallel -h | grep -q GNU ; then
|
||||
echo "INFO: running tests with GNU parallel"
|
||||
printf '%s\n' $TESTS | $TEST_TIMEOUT_CMD parallel
|
||||
else
|
||||
echo "INFO: running tests with moreutils parallel"
|
||||
$TEST_TIMEOUT_CMD parallel -- $TESTS
|
||||
fi
|
||||
done
|
||||
else
|
||||
for test in $TESTS; do
|
||||
$TEST_TIMEOUT_CMD $test "$@" &
|
||||
wait $!
|
||||
# If the test failed without producing results, then it aborted,
|
||||
# so we should abort, too.
|
||||
RES=$?
|
||||
testname=$(basename $test .sh)
|
||||
if [[ $RES != 0 && ! -e "$NOTMUCH_BUILDDIR/test/test-results/$testname" ]]; then
|
||||
exit $RES
|
||||
fi
|
||||
done
|
||||
fi
|
||||
trap - HUP INT TERM
|
||||
|
||||
# Report results
|
||||
|
|
Loading…
Reference in a new issue