The changes are: - Removed helper functions which were moved to test-lib.sh - Replaced every echo with test_expect_success. - Replaced $NOTMUCH with notmuch (test-lib.sh sets $PATH appropriately) - Test commands chained with && (test-lib.sh doesn't use "set -e" in order to complete the test suite even if something fails) - Quoted ${MAIL_DIR} and other variables as they contains spaces - ${TEST_DIR} replaced by ./
To run the whole test suite run make To run only the converted test ./t0001-notmuch-new.sh To stop on the first error ./t0001-notmuch-new.sh -i then mail store and database can be inspected in "trash directory.t0001-notmuch-new" To see the output of tests ./t0001-notmuch-new.sh -v To not remove trash directory at the end: ./t0001-notmuch-new.sh -d Signed-off-by: Michal Sojka <sojkam1 at fel.cvut.cz> --- test/t0001-notmuch-new.sh | 310 ++++++++++++++++----------------------------- 1 files changed, 108 insertions(+), 202 deletions(-) diff --git a/test/t0001-notmuch-new.sh b/test/t0001-notmuch-new.sh index d7b85c0..52c64e9 100755 --- a/test/t0001-notmuch-new.sh +++ b/test/t0001-notmuch-new.sh @@ -1,220 +1,126 @@ #!/bin/sh -set -e -find_notmuch_binary () -{ - dir=$1 +test_description='Description of this test... +This test checks if command xyzzy does the right thing... +' +. ./test-lib.sh - 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. -# -# 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 <<EOF >$gen_msg_filename -From: Notmuch Test Suite <test_suite at notmuchmail.org> -To: Notmuch Test Suite <test_suite at notmuchmail.org> -Message-Id: <msg-${gen_msg_cnt}@notmuch-test-suite> -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 <<EOF > ${NOTMUCH_CONFIG} -[database] -path=${MAIL_DIR} - -[user] -name=Notmuch Test Suite -primary_email=test_suite at notmuchmail.org -EOF - -echo "### Testing \"notmuch new\" with no messages" -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 new message" +test_expect_success "Testing \"notmuch new\" with no messages" ' +notmuch new +' do_sleep -generate_message -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 2 new messages" +test_expect_success "Testing \"notmuch new\" with 1 new message" ' +generate_message && +notmuch new +' 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 +test_expect_success "Testing \"notmuch new\" with 2 new messages" ' +generate_message && +generate_message && +notmuch new +' +test_expect_success "Testing \"notmuch new\" with no new messages (and a non-empty database)" ' +notmuch new +' +test_expect_success "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 +' +test_expect_success "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 +' +test_expect_success "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/notmuch-${this_test}/$(basename "$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 +' do_sleep -$NOTMUCH new > /dev/null +test_expect_success "Testing \"notmuch new\" with 1 renamed message" ' +generate_message && +notmuch new > /dev/null && +do_sleep && +mv "$gen_msg_filename" "${gen_msg_filename}-renamed" && +notmuch new +' do_sleep -mv $tmp_msg_filename $gen_msg_filename -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 renamed message" - +test_expect_success "Testing \"notmuch new\" with 1 deleted message" ' +rm "${gen_msg_filename}-renamed" && +notmuch new +' do_sleep -generate_message -$NOTMUCH new > /dev/null +test_expect_success "Testing \"notmuch new\" with a new directory with 3 messages" ' +generate_message dir && +generate_message dir && +generate_message dir && +notmuch new +' do_sleep -mv $gen_msg_filename ${gen_msg_filename}-renamed -$NOTMUCH new - -echo "### Testing \"notmuch new\" with 1 deleted message" - +test_expect_success "Testing \"notmuch new\" with a renamed directory of 3 messages" ' +mv "${MAIL_DIR}/dir" "${MAIL_DIR}/dir-renamed" && +notmuch new +' do_sleep -rm ${gen_msg_filename}-renamed -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a new directory with 3 messages" - +test_expect_success "Testing \"notmuch new\" with a deleted directory of 3 messages" ' +rm -rf "${MAIL_DIR}/dir-renamed" && +notmuch new +' 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" - +test_expect_success "Testing \"notmuch new\" with a new directory with 3 messages (tail of list)" ' +generate_message zzz && +generate_message zzz && +generate_message zzz && +notmuch new +' do_sleep -rm -rf ${MAIL_DIR}/dir-renamed - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with a new directory with 3 messages (tail of list)" +test_expect_success "Testing \"notmuch new\" with a deleted directory of 3 messages (tail of list)" ' +rm -rf "${MAIL_DIR}/zzz" && +notmuch new +' +test_expect_success "Testing \"notmuch new\" with a symlink to an external directory of 1 message" ' +rm -rf "${MAIL_DIR}/.notmuch" && +mv "${MAIL_DIR}" "./actual_maildir" && +mkdir "${MAIL_DIR}" && +ln -s ../actual_maildir "${MAIL_DIR}/symlink" && +notmuch new +' 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)" +test_expect_success "Testing \"notmuch new\" with a symlink to an external file" ' +generate_message && +external_msg_filename="$PWD/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 +' +do_sleep + +test_expect_success "Testing \"notmuch new\" with a two-level directory with 3 files" ' +generate_message two/levels && +generate_message two/levels && +generate_message two/levels && +notmuch new +' 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" - -do_sleep -generate_message two/levels -generate_message two/levels -generate_message two/levels - -$NOTMUCH new - -echo "### Testing \"notmuch new\" with deletion of two-level directory (3 files)" - -do_sleep -rm -rf ${MAIL_DIR}/two - -$NOTMUCH new -cat <<EOF -Notmuch test suite complete. +test_expect_success "Testing \"notmuch new\" with deletion of two-level directory (3 files)" ' +rm -rf "${MAIL_DIR}/two" && +notmuch new +' -Intermediate state can be examined in: - ${TEST_DIR} -EOF +test_done -- 1.6.6