mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-22 10:58:10 +01:00
ec59896de0
Previously, if a test script aborted (e.g., because it passed too few arguments to a test function), the test driver loop would simply continue on to the next test script and the final results would declare that everything passed (except that the test count would look suspiciously low, but maybe you just misremembered how many tests there were). Now, if a test script exits with a non-zero status and did not produce a final results file, we propagate that failure out of the driver loop immediately. To keep this simple, this patch removes the PID from the test-results file name. This PID was inherited from the git test system and seems unnecessary, since the file name already includes the name of the test script and the test-results directory is created anew for each run.
97 lines
1.9 KiB
Bash
Executable file
97 lines
1.9 KiB
Bash
Executable file
#!/usr/bin/env bash
|
|
|
|
# Run tests
|
|
#
|
|
# Copyright (c) 2005 Junio C Hamano
|
|
#
|
|
# 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
|
|
|
|
cd $(dirname "$0")
|
|
|
|
TESTS="
|
|
basic
|
|
help-test
|
|
config
|
|
new
|
|
count
|
|
search
|
|
search-output
|
|
search-by-folder
|
|
search-position-overlap-bug
|
|
search-insufficient-from-quoting
|
|
search-limiting
|
|
excludes
|
|
tagging
|
|
json
|
|
text
|
|
multipart
|
|
thread-naming
|
|
raw
|
|
reply
|
|
reply-to-sender
|
|
dump-restore
|
|
uuencode
|
|
thread-order
|
|
author-order
|
|
from-guessing
|
|
long-id
|
|
encoding
|
|
emacs
|
|
emacs-large-search-buffer
|
|
emacs-subject-to-filename
|
|
maildir-sync
|
|
crypto
|
|
symbol-hiding
|
|
search-folder-coherence
|
|
atomicity
|
|
python
|
|
hooks
|
|
argument-parsing
|
|
emacs-test-functions
|
|
emacs-address-cleaning
|
|
emacs-hello
|
|
emacs-show
|
|
missing-headers
|
|
parse-time-string
|
|
search-date
|
|
"
|
|
TESTS=${NOTMUCH_TESTS:=$TESTS}
|
|
|
|
# Clean up any results from a previous run
|
|
rm -r test-results >/dev/null 2>/dev/null
|
|
|
|
# test for timeout utility
|
|
if command -v timeout >/dev/null; then
|
|
TEST_TIMEOUT_CMD="timeout 2m "
|
|
echo "INFO: using 2 minute timeout for tests"
|
|
else
|
|
TEST_TIMEOUT_CMD=""
|
|
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=$?
|
|
if [[ $RES != 0 && ! -e "test-results/${test%.sh}" ]]; then
|
|
exit $RES
|
|
fi
|
|
done
|
|
trap - HUP INT TERM
|
|
|
|
# Report results
|
|
./aggregate-results.sh test-results/*
|
|
|
|
# Clean up
|
|
rm -rf test-results corpus.mail
|