mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-12-23 01:44:52 +01:00
11a3805464
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).
105 lines
1.9 KiB
Bash
Executable file
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
|