test: Emit a friendly error message if run with bash < 4.0.

The bash code in the test suite is using associative arrays which were
only added to bash as of release 4.0.

If the test suite is run with an older bash, we now immediately error
out and explain the situation, (instead of emitting confusing error
messages and failing dozens of tests, which is what happened before
this change).
This commit is contained in:
Carl Worth 2010-10-28 12:07:42 -07:00
parent 4884f5496c
commit 20018a0c09
2 changed files with 17 additions and 1 deletions

View file

@ -1,4 +1,4 @@
#!/bin/sh #!/bin/bash
# Run tests # Run tests
# #
@ -6,6 +6,14 @@
# #
# Adapted from a Makefile to a shell script by Carl Worth (2010) # 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") cd $(dirname "$0")
TESTS="basic new search json thread-naming reply dump-restore uuencode thread-order author-order from-guessing long-id encoding emacs" TESTS="basic new search json thread-naming reply dump-restore uuencode thread-order author-order from-guessing long-id encoding emacs"

View file

@ -15,6 +15,14 @@
# You should have received a copy of the GNU General Public License # You should have received a copy of the GNU General Public License
# along with this program. If not, see http://www.gnu.org/licenses/ . # along with this program. If not, see http://www.gnu.org/licenses/ .
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
# if --tee was passed, write the output not only to the terminal, but # if --tee was passed, write the output not only to the terminal, but
# additionally to the file test-results/$BASENAME.out, too. # additionally to the file test-results/$BASENAME.out, too.
case "$GIT_TEST_TEE_STARTED, $* " in case "$GIT_TEST_TEE_STARTED, $* " in