#!/usr/bin/env bash test_description='Configuration of mail-root and database path' . $(dirname "$0")/test-lib.sh || exit 1 backup_config () { local test_name=$(basename $0 .sh) cp ${NOTMUCH_CONFIG} notmuch-config-backup.${test_name} } restore_config () { local test_name=$(basename $0 .sh) export NOTMUCH_CONFIG="${TMP_DIRECTORY}/notmuch-config" unset CONFIG_PATH unset DATABASE_PATH unset NOTMUCH_PROFILE cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG} } split_config () { local dir backup_config dir="$TMP_DIRECTORY/database.$test_count" rm -rf $dir mkdir $dir notmuch config set database.path $dir notmuch config set database.mail_root $MAIL_DIR DATABASE_PATH=$dir } 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 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+prefix split XDG XDG+profile; do #start each set of tests with an known set of messages add_email_corpus case $config in traditional) backup_config ;; split+prefix) split_config mv mail/.notmuch $DATABASE_PATH ;; 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 ;; esac test_begin_subtest "count ($config)" output=$(notmuch count '*') test_expect_equal "$output" '52' test_begin_subtest "count+tag ($config)" tag="tag${RANDOM}" notmuch tag +$tag '*' output=$(notmuch count tag:$tag) notmuch tag -$tag '*' test_expect_equal "$output" '52' 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 "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 "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 "compact+search ($config)" notmuch search --output=messages '*' | sort > EXPECTED notmuch compact notmuch search --output=messages '*' | sort > OUTPUT test_expect_equal_file EXPECTED OUTPUT restore_config done test_done