summaryrefslogtreecommitdiff
path: root/test/t0001-new.sh
diff options
context:
space:
mode:
authorCarl Worth <cworth@cworth.org>2010-09-17 15:25:39 -0700
committerCarl Worth <cworth@cworth.org>2010-09-17 15:25:39 -0700
commitc92ad8bf6a7a798f5f0dd2861a6b087873fdf8b6 (patch)
tree92fc85bc0fb1f54740dca08ae36aee1308815c50 /test/t0001-new.sh
parent222926abe1e221a6239ccb9436968af43e1b6fb2 (diff)
test: Rework test-suite input to avoid ulti-command strings
The original git test suite works by concatenating many commands into a very long string (each separated by &&). This is painful to work with since it prevents the editor from helping by parsing the shell script, indenting, colorizing, etc. Instead, we switch this back to something like the original notmuch test suite, and add two new functions to test-lib.sh (test_begin_subtest and test_expect_equal) to support these. This also fixes the test suite to once again display the diff when a test fails to generate the expected input.
Diffstat (limited to 'test/t0001-new.sh')
-rwxr-xr-xtest/t0001-new.sh299
1 files changed, 150 insertions, 149 deletions
diff --git a/test/t0001-new.sh b/test/t0001-new.sh
index 97726e7..4c6952f 100755
--- a/test/t0001-new.sh
+++ b/test/t0001-new.sh
@@ -1,164 +1,165 @@
#!/bin/bash
-test_description="\"notmuch new\" in several variations"
+test_description='"notmuch new" in several variations'
. ./test-lib.sh
-test_expect_success "No new messages" '
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail."
-
-'
-test_expect_success "Single new message" '
-generate_message &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
-
-'
-test_expect_success "Multiple new messages" '
-generate_message &&
-generate_message &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 2 new messages to the database."
-
-'
-test_expect_success "No new messages (non-empty DB)" '
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail."
-
-'
-test_expect_success "New directories" '
-rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch &&
-mkdir "${MAIL_DIR}"/def &&
-mkdir "${MAIL_DIR}"/ghi &&
-generate_message [dir]=def &&
-
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
-
-'
-test_expect_success "Alternate inode order" '
-
-rm -rf "${MAIL_DIR}"/.notmuch &&
-mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc &&
-rm "${MAIL_DIR}"/def/* &&
-generate_message [dir]=abc &&
-
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
-
-'
-test_expect_success "Message moved in" '
-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" &&
-increment_mtime "${MAIL_DIR}" &&
-$NOTMUCH new > /dev/null &&
-mv "$tmp_msg_filename" "$gen_msg_filename" &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
-
-'
-test_expect_success "Renamed message" '
-
-generate_message &&
-$NOTMUCH new > /dev/null &&
-mv "$gen_msg_filename" "${gen_msg_filename}"-renamed &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Detected 1 file rename."
-
-'
-test_expect_success "Deleted message" '
-
-rm "${gen_msg_filename}"-renamed &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Removed 1 message."
-
-'
-test_expect_success "Renamed directory" '
-
-generate_message [dir]=dir &&
-generate_message [dir]=dir &&
-generate_message [dir]=dir &&
-
-$NOTMUCH new > /dev/null &&
-
-mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed &&
-increment_mtime "${MAIL_DIR}" &&
-
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Detected 3 file renames."
-
-'
-test_expect_success "Deleted directory" '
-
-rm -rf "${MAIL_DIR}"/dir-renamed &&
-increment_mtime "${MAIL_DIR}" &&
-
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Removed 3 messages."
-
-'
-test_expect_success "New directory (at end of list)" '
-
-generate_message [dir]=zzz &&
-generate_message [dir]=zzz &&
-generate_message [dir]=zzz &&
-
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 3 new messages to the database."
-
-'
-test_expect_success "Deleted directory (end of list)" '
-
-rm -rf "${MAIL_DIR}"/zzz &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Removed 3 messages."
+test_begin_subtest "No new messages"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail."
-'
-test_expect_success "New symlink to directory" '
-rm -rf "${MAIL_DIR}"/.notmuch &&
-mv "${MAIL_DIR}" "$PWD"/actual_maildir &&
+test_begin_subtest "Single new message"
+generate_message
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
-mkdir "${MAIL_DIR}" &&
-ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
+test_begin_subtest "Multiple new messages"
+generate_message
+generate_message
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 2 new messages to the database."
-'
-test_expect_success "New symlink to a 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" &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 1 new message to the database."
-'
-test_expect_success "New two-level directory" '
+test_begin_subtest "No new messages (non-empty DB)"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail."
-generate_message [dir]=two/levels &&
-generate_message [dir]=two/levels &&
-generate_message [dir]=two/levels &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "Added 3 new messages to the database."
+test_begin_subtest "New directories"
+rm -rf "${MAIL_DIR}"/* "${MAIL_DIR}"/.notmuch
+mkdir "${MAIL_DIR}"/def
+mkdir "${MAIL_DIR}"/ghi
+generate_message [dir]=def
-'
-test_expect_success "Deleted two-level directory" '
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
-rm -rf "${MAIL_DIR}"/two &&
-increment_mtime "${MAIL_DIR}" &&
-output=$(NOTMUCH_NEW) &&
-pass_if_equal "$output" "No new mail. Removed 3 messages."
-'
+test_begin_subtest "Alternate inode order"
+
+rm -rf "${MAIL_DIR}"/.notmuch
+mv "${MAIL_DIR}"/ghi "${MAIL_DIR}"/abc
+rm "${MAIL_DIR}"/def/*
+generate_message [dir]=abc
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
+
+
+test_begin_subtest "Message moved in"
+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"
+increment_mtime "${MAIL_DIR}"
+$NOTMUCH new > /dev/null
+mv "$tmp_msg_filename" "$gen_msg_filename"
+increment_mtime "${MAIL_DIR}"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
+
+
+test_begin_subtest "Renamed message"
+
+generate_message
+$NOTMUCH new > /dev/null
+mv "$gen_msg_filename" "${gen_msg_filename}"-renamed
+increment_mtime "${MAIL_DIR}"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Detected 1 file rename."
+
+
+test_begin_subtest "Deleted message"
+
+rm "${gen_msg_filename}"-renamed
+increment_mtime "${MAIL_DIR}"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Removed 1 message."
+
+
+test_begin_subtest "Renamed directory"
+
+generate_message [dir]=dir
+generate_message [dir]=dir
+generate_message [dir]=dir
+
+$NOTMUCH new > /dev/null
+
+mv "${MAIL_DIR}"/dir "${MAIL_DIR}"/dir-renamed
+increment_mtime "${MAIL_DIR}"
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Detected 3 file renames."
+
+
+test_begin_subtest "Deleted directory"
+
+rm -rf "${MAIL_DIR}"/dir-renamed
+increment_mtime "${MAIL_DIR}"
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Removed 3 messages."
+
+
+test_begin_subtest "New directory (at end of list)"
+
+generate_message [dir]=zzz
+generate_message [dir]=zzz
+generate_message [dir]=zzz
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 3 new messages to the database."
+
+
+test_begin_subtest "Deleted directory (end of list)"
+
+rm -rf "${MAIL_DIR}"/zzz
+increment_mtime "${MAIL_DIR}"
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Removed 3 messages."
+
+
+test_begin_subtest "New symlink to directory"
+
+rm -rf "${MAIL_DIR}"/.notmuch
+mv "${MAIL_DIR}" "$PWD"/actual_maildir
+
+mkdir "${MAIL_DIR}"
+ln -s "$PWD"/actual_maildir "${MAIL_DIR}"/symlink
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
+
+
+test_begin_subtest "New symlink to a 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"
+increment_mtime "${MAIL_DIR}"
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 1 new message to the database."
+
+
+test_begin_subtest "New two-level directory"
+
+generate_message [dir]=two/levels
+generate_message [dir]=two/levels
+generate_message [dir]=two/levels
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "Added 3 new messages to the database."
+
+
+test_begin_subtest "Deleted two-level directory"
+
+rm -rf "${MAIL_DIR}"/two
+increment_mtime "${MAIL_DIR}"
+
+output=$(NOTMUCH_NEW)
+test_expect_equal "$output" "No new mail. Removed 3 messages."
+
test_done