X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2Fnotmuch-test;h=fcf43a868644ad4ca95e351e9e5df771471e7f33;hp=d7b85c0383d4c3a161637f219085a190237f1004;hb=600f3761dc48c91a5ba9a18ddeb7fd8af22e71de;hpb=a2d919eb2f55ab503a95f5401c19cc162a7a46a0 diff --git a/test/notmuch-test b/test/notmuch-test index d7b85c03..fcf43a86 100755 --- a/test/notmuch-test +++ b/test/notmuch-test @@ -1,220 +1,33 @@ -#!/bin/sh -set -e +#!/bin/bash -find_notmuch_binary () -{ - dir=$1 - - while [ -n "$dir" ]; do - bin=$dir/notmuch - if [ -x $bin ]; then - echo $bin - return - fi - dir=$(dirname $dir) - if [ "$dir" = "/" ]; then - break - fi - done - - echo notmuch -} - -# Generate a new message in the mail directory, with -# a unique message ID and subject. +# Run tests # -# The filename of the message generated is available as -# $gen_msg_filename -gen_msg_cnt=0 -gen_msg_filename="" -generate_message () -{ - gen_msg_cnt=$((gen_msg_cnt + 1)) - gen_msg_name=msg-$(printf "%03d" $gen_msg_cnt) - - if [ "$#" = "0" ]; then - gen_msg_filename="${MAIL_DIR}/$gen_msg_name" - else - gen_msg_filename="${MAIL_DIR}/$1/$gen_msg_name" - mkdir -p $(dirname $gen_msg_filename) - fi - -cat <$gen_msg_filename -From: Notmuch Test Suite -To: Notmuch Test Suite -Message-Id: -Subject: Test message ${gen_msg_filename} -Date: Tue, 05 Jan 2010 15:43:57 -0800 - -This is just a test message at ${gen_msg_filename} -EOF -} - -do_sleep () -{ - sleep 1 -} - -TEST_DIR=$(pwd)/test.$$ -MAIL_DIR=${TEST_DIR}/mail -export NOTMUCH_CONFIG=${TEST_DIR}/notmuch-config -NOTMUCH=$(find_notmuch_binary $(pwd)) - -rm -rf ${TEST_DIR} -mkdir ${TEST_DIR} -cd ${TEST_DIR} - -mkdir ${MAIL_DIR} - -cat < ${NOTMUCH_CONFIG} -[database] -path=${MAIL_DIR} - -[user] -name=Notmuch Test Suite -primary_email=test_suite@notmuchmail.org -EOF - -echo "### Testing \"notmuch new\" with no messages" -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 new message" -do_sleep -generate_message -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 2 new messages" -do_sleep -generate_message -generate_message -$NOTMUCH new - -echo "### Testing \"notmuch new\" with no new messages (and a non-empty database)" - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with two new directories (one mail)" -rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch -mkdir ${MAIL_DIR}/def -mkdir ${MAIL_DIR}/ghi -generate_message def - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with two new directories (one mail)---opposite inode order" - -rm -rf ${MAIL_DIR}/.notmuch -mv ${MAIL_DIR}/ghi ${MAIL_DIR}/abc -rm ${MAIL_DIR}/def/* -generate_message abc - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 old message moved into the mail store" -rm -rf ${MAIL_DIR}/* ${MAIL_DIR}/.notmuch -generate_message -tmp_msg_filename=tmp/$gen_msg_filename -mkdir -p $(dirname $tmp_msg_filename) -mv $gen_msg_filename $tmp_msg_filename -do_sleep -$NOTMUCH new > /dev/null -do_sleep -mv $tmp_msg_filename $gen_msg_filename -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 renamed message" - -do_sleep -generate_message -$NOTMUCH new > /dev/null -do_sleep -mv $gen_msg_filename ${gen_msg_filename}-renamed -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 deleted message" - -do_sleep -rm ${gen_msg_filename}-renamed -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a new directory with 3 messages" - -do_sleep -generate_message dir -generate_message dir -generate_message dir - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a renamed directory of 3 messages" - -do_sleep -mv ${MAIL_DIR}/dir ${MAIL_DIR}/dir-renamed - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a deleted directory of 3 messages" - -do_sleep -rm -rf ${MAIL_DIR}/dir-renamed - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a new directory with 3 messages (tail of list)" - -do_sleep -generate_message zzz -generate_message zzz -generate_message zzz - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a deleted directory of 3 messages (tail of list)" - -do_sleep -rm -rf ${MAIL_DIR}/zzz - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a symlink to an external directory of 1 message" - -rm -rf ${MAIL_DIR}/.notmuch -mv ${MAIL_DIR} ${TEST_DIR}/actual_maildir - -mkdir ${MAIL_DIR} -ln -s ${TEST_DIR}/actual_maildir ${MAIL_DIR}/symlink - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a symlink to an external file" -do_sleep -generate_message -external_msg_filename=${TEST_DIR}/external/$(basename $gen_msg_filename) -mkdir -p $(dirname $external_msg_filename) -mv $gen_msg_filename $external_msg_filename -ln -s $external_msg_filename $gen_msg_filename - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a two-level directory with 3 files" +# Copyright (c) 2005 Junio C Hamano +# +# Adapted from a Makefile to a shell script by Carl Worth (2010) -do_sleep -generate_message two/levels -generate_message two/levels -generate_message two/levels +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 -$NOTMUCH new +cd $(dirname "$0") -echo "### Testing \"notmuch new\" with deletion of two-level directory (3 files)" +TESTS="basic new search search-output search-by-folder json thread-naming raw reply dump-restore uuencode thread-order author-order from-guessing long-id encoding emacs maildir-sync" -do_sleep -rm -rf ${MAIL_DIR}/two +# Clean up any results from a previous run +rm -r test-results >/dev/null 2>/dev/null -$NOTMUCH new +# Run the tests +for test in $TESTS; do + ./$test "$@" +done -cat <