X-Git-Url: https://git.cworth.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT055-path-config.sh;h=b6858d42e4287086ecf41192debc96cfb00fda81;hp=c6920ca90631bd772a19a8521d868ab52d488fbf;hb=e43bad4883cf8a0c1d58d50238da599f9e170307;hpb=e823d05ae6dc920d4fc9abf774c3d2575d891d7b diff --git a/test/T055-path-config.sh b/test/T055-path-config.sh index c6920ca9..b6858d42 100755 --- a/test/T055-path-config.sh +++ b/test/T055-path-config.sh @@ -2,6 +2,8 @@ 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} @@ -13,6 +15,9 @@ restore_config () { unset CONFIG_PATH unset DATABASE_PATH unset NOTMUCH_PROFILE + unset XAPIAN_PATH + unset MAILDIR + rm -f "$HOME/mail" cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG} } @@ -25,22 +30,98 @@ split_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 +} -for config in traditional split; do - # start each set of tests with a known set of messages +home_mail_config () { + local dir + backup_config + dir="${HOME}/mail" + ln -s $MAIL_DIR $dir + notmuch config set database.path + notmuch config set database.mail_root + XAPIAN_PATH="$MAIL_DIR/.notmuch/xapian" + unset DATABASE_PATH +} + +maildir_env_config () { + local dir + backup_config + dir="${HOME}/env_points_here" + ln -s $MAIL_DIR $dir + export MAILDIR=$dir + notmuch config set database.path + notmuch config set database.mail_root + 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 XDG XDG+profile symlink home_mail maildir_env; 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 + ;; + home_mail) + home_mail_config + ;; + maildir_env) + maildir_env_config + ;; esac test_begin_subtest "count ($config)" @@ -76,15 +157,184 @@ EOF notmuch tag -inbox '*' notmuch restore < EXPECTED notmuch dump > OUTPUT - test_expect_equal_file EXPECTED OUTPUT + test_expect_equal_file_nonempty EXPECTED OUTPUT test_begin_subtest "reindex ($config)" notmuch search --output=messages '*' > EXPECTED notmuch reindex '*' notmuch search --output=messages '*' > OUTPUT + test_expect_equal_file_nonempty 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_nonempty $gen_msg_filename OUTPUT + rm -f $gen_msg_filename + + test_begin_subtest "reply ($config)" + add_message '[from]="Sender "' \ + [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 < EXPECTED +From: Notmuch Test Suite +Subject: Re: notmuch-reply-test +To: Sender +In-Reply-To: <${gen_msg_id}> +References: <${gen_msg_id}> + +On Tue, 05 Jan 2010 15:43:56 -0000, Sender wrote: +> basic reply test +EOF test_expect_equal_file EXPECTED OUTPUT - restore_config + 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_nonempty "$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_nonempty 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." + + test_begin_subtest "notmuch +config -database suggests notmuch new ($config)" + mv "$XAPIAN_PATH" "${XAPIAN_PATH}.bak" + notmuch > OUTPUT +cat < EXPECTED +Notmuch is configured, but no database was found. +You probably want to run "notmuch new" now to create a database. + +Note that the first run of "notmuch new" can take a very long time +and that the resulting database will use roughly the same amount of +storage space as the email being indexed. + +EOF + mv "${XAPIAN_PATH}.bak" "$XAPIAN_PATH" + + test_expect_equal_file EXPECTED OUTPUT + + test_begin_subtest "Set config value ($config)" + name=${RANDOM} + value=${RANDOM} + notmuch config set test${test_count}.${name} ${value} + output=$(notmuch config get test${test_count}.${name}) + notmuch config set test${test_count}.${name} + output2=$(notmuch config get test${test_count}.${name}) + test_expect_equal "${output}+${output2}" "${value}+" + + test_begin_subtest "Set config value in database ($config)" + name=${RANDOM} + value=${RANDOM} + notmuch config set --database test${test_count}.${name} ${value} + output=$(notmuch config get test${test_count}.${name}) + notmuch config set --database test${test_count}.${name} + output2=$(notmuch config get test${test_count}.${name}) + test_expect_equal "${output}+${output2}" "${value}+" + + test_begin_subtest "Config list ($config)" + notmuch config list | notmuch_config_sanitize | \ + sed -e "s/^database.backup_dir=.*$/database.backup_dir/" \ + -e "s/^database.hook_dir=.*$/database.hook_dir/" \ + -e "s/^database.path=.*$/database.path/" \ + -e "s,^database.mail_root=CWD/home/mail,database.mail_root=MAIL_DIR," \ + -e "s,^database.mail_root=CWD/home/env_points_here,database.mail_root=MAIL_DIR," \ + > OUTPUT + cat < EXPECTED +built_with.compact=something +built_with.field_processor=something +built_with.retry_lock=something +built_with.sexpr_query=something +database.autocommit=8000 +database.backup_dir +database.hook_dir +database.mail_root=MAIL_DIR +database.path +maildir.synchronize_flags=true +new.ignore= +new.tags=unread;inbox +search.exclude_tags= +user.name=Notmuch Test Suite +user.other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org +user.primary_email=test_suite@notmuchmail.org +EOF + test_expect_equal_file EXPECTED OUTPUT + + case $config in + XDG*) + test_begin_subtest "Set shadowed config value in database ($config)" + name=${RANDOM} + value=${RANDOM} + key=test${test_count}.${name} + notmuch config set --database ${key} ${value} + notmuch config set ${key} shadow${value} + output=$(notmuch --config='' config get ${key}) + notmuch config set --database ${key} + output2=$(notmuch --config='' config get ${key}) + notmuch config set ${key} + test_expect_equal "${output}+${output2}" "${value}+" + ;& + split) + test_begin_subtest "'to' header does not crash (python-cffi) ($config)" + echo 'notmuch@notmuchmail.org' > EXPECTED + test_python <