mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 02:48:08 +01:00
73bf7e532e
The current 2 minute timeout is reasonable, but to exercise the test suite or induce timeout failures, we might want to make it shorter. This makes it configurable so you can run (for example): make check NOTMUCH_TEST_TIMEOUT=10s We stick with the default of 2m. Signed-off-by: Daniel Kahn Gillmor <dkg@fifthhorseman.net>
75 lines
2 KiB
Bash
Executable file
75 lines
2 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Run tests
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
# Copyright (c) 2010 Notmuch Developers
|
|
#
|
|
# Adapted from a Makefile to a shell script by Carl Worth (2010)
|
|
|
|
if [ ${BASH_VERSINFO[0]} -lt 4 ]; then
|
|
echo "Error: The notmuch test suite requires a bash version >= 4.0"
|
|
echo "due to use of associative arrays within the test suite."
|
|
echo "Please try again with a newer bash (or help us fix the"
|
|
echo "test suite to be more portable). Thanks."
|
|
exit 1
|
|
fi
|
|
|
|
# Ensure NOTMUCH_SRCDIR and NOTMUCH_BUILDDIR are set.
|
|
. $(dirname "$0")/export-dirs.sh || exit 1
|
|
|
|
TESTS=
|
|
for test in $NOTMUCH_TESTS; do
|
|
TESTS="$TESTS $NOTMUCH_SRCDIR/test/$test"
|
|
done
|
|
|
|
if [[ -z "$TESTS" ]]; then
|
|
TESTS="$NOTMUCH_SRCDIR/test/T[0-9][0-9][0-9]-*.sh"
|
|
fi
|
|
|
|
# Clean up any results from a previous run
|
|
rm -rf $NOTMUCH_BUILDDIR/test/test-results
|
|
|
|
# Test for timeout utility
|
|
if command -v timeout >/dev/null; then
|
|
TEST_TIMEOUT=${NOTMUCH_TEST_TIMEOUT:-2m}
|
|
TEST_TIMEOUT_CMD="timeout $TEST_TIMEOUT"
|
|
echo "INFO: using $TEST_TIMEOUT timeout for tests"
|
|
else
|
|
TEST_TIMEOUT_CMD=""
|
|
fi
|
|
|
|
trap 'e=$?; kill $!; exit $e' HUP INT TERM
|
|
# Run the tests
|
|
if test -z "$NOTMUCH_TEST_SERIALIZE" && 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
|
|
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
|
|
echo
|
|
$NOTMUCH_SRCDIR/test/aggregate-results.sh $NOTMUCH_BUILDDIR/test/test-results/*
|
|
ev=$?
|
|
|
|
# Clean up
|
|
rm -rf $NOTMUCH_BUILDDIR/test/test-results
|
|
|
|
exit $ev
|