test: add known broken tests for finding database via MAILDIR

This highlights a bug reported by several users, including
Mohsin Kaleem [1].

The inconsistent use of test_begin_subtest_known_broken is because
some of these tests pass even though the database cannot be
located. This problem is left for a future commit.

[1]: id:87bl9lx864.fsf@kisara.moe
This commit is contained in:
David Bremner 2021-08-04 07:42:34 -03:00
parent f1a310b3a9
commit 8376e81441

View file

@ -16,6 +16,7 @@ restore_config () {
unset DATABASE_PATH unset DATABASE_PATH
unset NOTMUCH_PROFILE unset NOTMUCH_PROFILE
unset XAPIAN_PATH unset XAPIAN_PATH
unset MAILDIR
rm -f "$HOME/mail" rm -f "$HOME/mail"
cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG} cp notmuch-config-backup.${test_name} ${NOTMUCH_CONFIG}
} }
@ -55,6 +56,18 @@ home_mail_config () {
unset DATABASE_PATH 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 () { xdg_config () {
local dir local dir
local profile=${1:-default} local profile=${1:-default}
@ -79,7 +92,7 @@ xdg_config () {
notmuch --config=${CONFIG_PATH} config set database.path notmuch --config=${CONFIG_PATH} config set database.path
} }
for config in traditional split XDG XDG+profile symlink home_mail; do 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 #start each set of tests with an known set of messages
add_email_corpus add_email_corpus
@ -106,13 +119,18 @@ for config in traditional split XDG XDG+profile symlink home_mail; do
home_mail) home_mail)
home_mail_config home_mail_config
;; ;;
maildir_env)
maildir_env_config
;;
esac esac
test_begin_subtest "count ($config)" test_begin_subtest "count ($config)"
[[ "$config" = maildir_env ]] && test_subtest_known_broken
output=$(notmuch count '*') output=$(notmuch count '*')
test_expect_equal "$output" '52' test_expect_equal "$output" '52'
test_begin_subtest "count+tag ($config)" test_begin_subtest "count+tag ($config)"
[[ "$config" = maildir_env ]] && test_subtest_known_broken
tag="tag${RANDOM}" tag="tag${RANDOM}"
notmuch tag +$tag '*' notmuch tag +$tag '*'
output=$(notmuch count tag:$tag) output=$(notmuch count tag:$tag)
@ -120,6 +138,7 @@ for config in traditional split XDG XDG+profile symlink home_mail; do
test_expect_equal "$output" '52' test_expect_equal "$output" '52'
test_begin_subtest "address ($config)" test_begin_subtest "address ($config)"
[[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch address --deduplicate=no --sort=newest-first --output=sender --output=recipients path:foo >OUTPUT notmuch address --deduplicate=no --sort=newest-first --output=sender --output=recipients path:foo >OUTPUT
cat <<EOF >EXPECTED cat <<EOF >EXPECTED
Carl Worth <cworth@cworth.org> Carl Worth <cworth@cworth.org>
@ -128,6 +147,7 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "dump ($config)" test_begin_subtest "dump ($config)"
[[ "$config" = maildir_env ]] && test_subtest_known_broken
notmuch dump is:attachment and is:signed | sort > OUTPUT notmuch dump is:attachment and is:signed | sort > OUTPUT
cat <<EOF > EXPECTED cat <<EOF > EXPECTED
#notmuch-dump batch-tag:3 config,properties,tags #notmuch-dump batch-tag:3 config,properties,tags
@ -150,16 +170,19 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "use existing database ($config)" test_begin_subtest "use existing database ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
output=$(notmuch new) output=$(notmuch new)
test_expect_equal "$output" 'No new mail.' test_expect_equal "$output" 'No new mail.'
test_begin_subtest "create database ($config)" test_begin_subtest "create database ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
rm -rf $DATABASE_PATH/{.notmuch,}/xapian rm -rf $DATABASE_PATH/{.notmuch,}/xapian
notmuch new notmuch new
output=$(notmuch count '*') output=$(notmuch count '*')
test_expect_equal "$output" '52' test_expect_equal "$output" '52'
test_begin_subtest "detect new files ($config)" test_begin_subtest "detect new files ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message generate_message
generate_message generate_message
notmuch new notmuch new
@ -167,12 +190,14 @@ EOF
test_expect_equal "$output" '54' test_expect_equal "$output" '54'
test_begin_subtest "Show a raw message ($config)" test_begin_subtest "Show a raw message ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message add_message
notmuch show --format=raw id:$gen_msg_id > OUTPUT notmuch show --format=raw id:$gen_msg_id > OUTPUT
test_expect_equal_file $gen_msg_filename OUTPUT test_expect_equal_file $gen_msg_filename OUTPUT
rm -f $gen_msg_filename rm -f $gen_msg_filename
test_begin_subtest "reply ($config)" test_begin_subtest "reply ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
add_message '[from]="Sender <sender@example.com>"' \ add_message '[from]="Sender <sender@example.com>"' \
[to]=test_suite@notmuchmail.org \ [to]=test_suite@notmuchmail.org \
[subject]=notmuch-reply-test \ [subject]=notmuch-reply-test \
@ -190,7 +215,9 @@ On Tue, 05 Jan 2010 15:43:56 -0000, Sender <sender@example.com> wrote:
> basic reply test > basic reply test
EOF EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "insert+search ($config)" test_begin_subtest "insert+search ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
generate_message \ generate_message \
"[subject]=\"insert-subject\"" \ "[subject]=\"insert-subject\"" \
"[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \ "[date]=\"Sat, 01 Jan 2000 12:00:00 -0000\"" \
@ -208,6 +235,7 @@ EOF
test_expect_equal_file EXPECTED OUTPUT test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "upgrade backup ($config)" test_begin_subtest "upgrade backup ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths") features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^relative directory paths")
xapian-metadata set $XAPIAN_PATH features "$features" xapian-metadata set $XAPIAN_PATH features "$features"
output=$(notmuch new | grep Welcome) output=$(notmuch new | grep Welcome)
@ -241,6 +269,7 @@ EOF
test_expect_equal "${output}+${output2}" "${value}+" test_expect_equal "${output}+${output2}" "${value}+"
test_begin_subtest "Set config value in database ($config)" test_begin_subtest "Set config value in database ($config)"
[[ "$config" = "maildir_env" ]] && test_subtest_known_broken
name=${RANDOM} name=${RANDOM}
value=${RANDOM} value=${RANDOM}
notmuch config set --database test${test_count}.${name} ${value} notmuch config set --database test${test_count}.${name} ${value}
@ -250,11 +279,14 @@ EOF
test_expect_equal "${output}+${output2}" "${value}+" test_expect_equal "${output}+${output2}" "${value}+"
test_begin_subtest "Config list ($config)" test_begin_subtest "Config list ($config)"
notmuch config list | notmuch_dir_sanitize | sed -e "s/^database.backup_dir=.*$/database.backup_dir/" \ [[ "$config" = "maildir_env" ]] && test_subtest_known_broken
-e "s/^database.hook_dir=.*$/database.hook_dir/" \ notmuch config list | notmuch_dir_sanitize | \
-e "s/^database.path=.*$/database.path/" \ sed -e "s/^database.backup_dir=.*$/database.backup_dir/" \
-e "s,^database.mail_root=CWD/home/mail,database.mail_root=MAIL_DIR," \ -e "s/^database.hook_dir=.*$/database.hook_dir/" \
> OUTPUT -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 <<EOF > EXPECTED cat <<EOF > EXPECTED
built_with.compact=true built_with.compact=true
built_with.field_processor=true built_with.field_processor=true