notmuch/test/notmuch-test
Tomi Ollila 11a3805464 test: exit with nonzero value when not all tests completed successfully
If any of the tests in our test system is not passing the execution
of the test suite completes with nonzero exit value.

It is better to rely on the exit value of the test system instead
of some arbitrary strings in test output (or use both).
2013-09-08 22:40:57 -03:00

105 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
setup
new
count
insert
search
search-output
search-by-folder
search-position-overlap-bug
search-insufficient-from-quoting
search-limiting
excludes
tagging
json
sexp
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
hex-escaping
parse-time-string
search-date
thread-replies
"
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/*
ev=$?
# Clean up
rm -rf test-results corpus.mail
exit $ev