test_description='Configuration of mail-root and database path'
. $(dirname "$0")/test-lib.sh || exit 1
+test_require_external_prereq xapian-metdata
+
backup_config () {
local test_name=$(basename $0 .sh)
cp ${NOTMUCH_CONFIG} notmuch-config-backup.${test_name}
unset CONFIG_PATH
unset DATABASE_PATH
unset NOTMUCH_PROFILE
+ unset XAPIAN_PATH
cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG}
}
notmuch config set database.path $dir
notmuch config set database.mail_root $MAIL_DIR
DATABASE_PATH=$dir
+ XAPIAN_PATH="$dir/xapian"
}
+symlink_config () {
+ local dir
+ backup_config
+ dir="$TMP_DIRECTORY/link.$test_count"
+ ln -s $MAIL_DIR $dir
+ notmuch config set database.path $dir
+ notmuch config set database.mail_root $MAIL_DIR
+ XAPIAN_PATH="$MAIL_DIR/.notmuch/xapian"
+ unset DATABASE_PATH
+}
+
+xdg_config () {
+ local dir
+ local profile=${1:-default}
+
+ if [[ $profile != default ]]; then
+ export NOTMUCH_PROFILE=$profile
+ fi
+
+ backup_config
+ DATABASE_PATH="${HOME}/.local/share/notmuch/${profile}"
+ rm -rf $DATABASE_PATH
+ mkdir -p $DATABASE_PATH
+ config_dir="${HOME}/.config/notmuch/${profile}"
+ mkdir -p ${config_dir}
+ CONFIG_PATH=$config_dir/config
+ mv ${NOTMUCH_CONFIG} $CONFIG_PATH
+ unset NOTMUCH_CONFIG
+
+ XAPIAN_PATH="${DATABASE_PATH}/xapian"
+ notmuch --config=${CONFIG_PATH} config set database.mail_root ${TMP_DIRECTORY}/mail
+ notmuch --config=${CONFIG_PATH} config set database.path
+}
-for config in traditional split; do
- # start each set of tests with a known set of messages
+for config in traditional split XDG XDG+profile symlink; do
+ #start each set of tests with an known set of messages
add_email_corpus
case $config in
traditional)
backup_config
+ XAPIAN_PATH="$MAIL_DIR/.notmuch/xapian"
;;
split)
split_config
mv mail/.notmuch/xapian $DATABASE_PATH
;;
+ XDG)
+ xdg_config
+ mv mail/.notmuch/xapian $DATABASE_PATH
+ ;;
+ XDG+profile)
+ xdg_config ${RANDOM}
+ mv mail/.notmuch/xapian $DATABASE_PATH
+ ;;
+ symlink)
+ symlink_config
+ ;;
esac
test_begin_subtest "count ($config)"
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
+ test_begin_subtest "use existing database ($config)"
+ output=$(notmuch new)
+ test_expect_equal "$output" 'No new mail.'
+
+ test_begin_subtest "create database ($config)"
+ rm -rf $DATABASE_PATH/{.notmuch,}/xapian
+ notmuch new
+ output=$(notmuch count '*')
+ test_expect_equal "$output" '52'
+
+ test_begin_subtest "detect new files ($config)"
+ generate_message
+ generate_message
+ notmuch new
+ output=$(notmuch count '*')
+ test_expect_equal "$output" '54'
+
+ test_begin_subtest "Show a raw message ($config)"
+ add_message
+ notmuch show --format=raw id:$gen_msg_id > OUTPUT
+ test_expect_equal_file $gen_msg_filename OUTPUT
+ rm -f $gen_msg_filename
+
+ test_begin_subtest "reply ($config)"
+ add_message '[from]="Sender <sender@example.com>"' \
+ [to]=test_suite@notmuchmail.org \
+ [subject]=notmuch-reply-test \
+ '[date]="Tue, 05 Jan 2010 15:43:56 -0000"' \
+ '[body]="basic reply test"'
+ notmuch reply id:${gen_msg_id} 2>&1 > OUTPUT
+ cat <<EOF > EXPECTED
+From: Notmuch Test Suite <test_suite@notmuchmail.org>
+Subject: Re: notmuch-reply-test
+To: Sender <sender@example.com>
+In-Reply-To: <${gen_msg_id}>
+References: <${gen_msg_id}>
+
+On Tue, 05 Jan 2010 15:43:56 -0000, Sender <sender@example.com> wrote:
+> basic reply test
+EOF
+ test_expect_equal_file EXPECTED OUTPUT
+ test_begin_subtest "insert+search ($config)"
+ generate_message \
+ "[subject]=\"insert-subject\"" \
+ "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
+ "[body]=\"insert-message\""
+ mkdir -p "$MAIL_DIR"/{cur,new,tmp}
+ notmuch insert < "$gen_msg_filename"
+ cur_msg_filename=$(notmuch search --output=files "subject:insert-subject")
+ test_expect_equal_file "$cur_msg_filename" "$gen_msg_filename"
+
+
+ test_begin_subtest "compact+search ($config)"
+ notmuch search --output=messages '*' | sort > EXPECTED
+ notmuch compact
+ notmuch search --output=messages '*' | sort > OUTPUT
+ test_expect_equal_file EXPECTED OUTPUT
+
+ test_begin_subtest "upgrade backup ($config)"
+ features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
+ xapian-metadata set $XAPIAN_PATH features "$features"
+ output=$(notmuch new | grep Welcome)
+ test_expect_equal \
+ "$output" \
+ "Welcome to a new version of notmuch! Your database will now be upgraded."
+
restore_config
done