notmuch/test/T700-reindex.sh
David Bremner dfa43a1921 test: treat undefined feature variables as 0
When running the test suite without building first, it is desirable to
have the tests consider these variables being undefined as equivalent
to the feature not being present, and in particular for the tests not
to generate errors.
2023-07-21 06:58:16 -03:00

122 lines
4.3 KiB
Bash
Executable file

#!/usr/bin/env bash
test_description='reindexing messages'
. $(dirname "$0")/test-lib.sh || exit 1
add_email_corpus
if [ "${NOTMUCH_HAVE_SFSEXP-0}" = "1" ]; then
count=$(notmuch count --lastmod '*' | cut -f 3)
for query in '()' '(not)' '(and)' '(or ())' '(or (not))' '(or (and))' \
'(or (and) (or) (not (and)))'; do
test_begin_subtest "reindex all messages: $query"
notmuch reindex --query=sexp "$query"
output=$(notmuch count --lastmod '*' | cut -f 3)
count=$((count + 1))
test_expect_equal "$output" "$count"
done
fi
notmuch tag +usertag1 '*'
notmuch search '*' 2>1 | notmuch_search_sanitize > initial-threads
notmuch search --output=messages '*' 2>/dev/null > initial-message-ids
notmuch dump > initial-dump
test_begin_subtest 'reindex preserves threads'
notmuch reindex '*'
notmuch search '*' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file initial-threads OUTPUT
test_begin_subtest 'reindex after removing duplicate file preserves threads'
# remove one copy
sed 's,3/3(4),3/3,' < initial-threads > EXPECTED
mv $MAIL_DIR/bar/18:2, duplicate-msg-1.eml
notmuch reindex '*'
notmuch search '*' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest 'reindex preserves message-ids'
notmuch reindex '*'
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file initial-message-ids OUTPUT
test_begin_subtest 'reindex preserves tags'
notmuch reindex '*'
notmuch dump > OUTPUT
test_expect_equal_file initial-dump OUTPUT
test_begin_subtest 'reindex preserves tags with special prefixes'
notmuch tag +attachment2 +encrypted2 +signed2 '*'
notmuch dump > EXPECTED
notmuch reindex '*'
notmuch dump > OUTPUT
notmuch tag -attachment2 -encrypted2 -signed2 '*'
test_expect_equal_file EXPECTED OUTPUT
backup_database
test_begin_subtest 'reindex moves a message between threads'
notmuch search --output=threads id:87iqd9rn3l.fsf@vertex.dottedmag > EXPECTED
# re-parent
sed -i 's/1258471718-6781-1-git-send-email-dottedmag@dottedmag.net/87iqd9rn3l.fsf@vertex.dottedmag/' $MAIL_DIR/02:2,*
notmuch reindex id:1258471718-6781-2-git-send-email-dottedmag@dottedmag.net
notmuch search --output=threads id:1258471718-6781-2-git-send-email-dottedmag@dottedmag.net > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
restore_database
backup_database
test_begin_subtest 'reindex detects removal of all files'
notmuch search --output=messages not id:20091117232137.GA7669@griffis1.net> EXPECTED
# remove both copies
mv $MAIL_DIR/cur/51:2,* duplicate-message-2.eml
notmuch reindex id:20091117232137.GA7669@griffis1.net
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
restore_database
backup_database
test_begin_subtest 'reindex detects removal of all files'
notmuch search --output=messages not id:20091117232137.GA7669@griffis1.net> EXPECTED
# remove both copies
mv $MAIL_DIR/cur/51:2,* duplicate-message-2.eml
notmuch reindex id:20091117232137.GA7669@griffis1.net
notmuch search --output=messages '*' > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
restore_database
test_begin_subtest "reindex preserves properties"
cat <<EOF > prop-dump
#= 1258471718-6781-1-git-send-email-dottedmag@dottedmag.net userprop=userval
#= 1258471718-6781-2-git-send-email-dottedmag@dottedmag.net userprop=userval
#= 1258491078-29658-1-git-send-email-dottedmag@dottedmag.net userprop=userval1
#= 20091117190054.GU3165@dottiness.seas.harvard.edu userprop=userval
#= 20091117203301.GV3165@dottiness.seas.harvard.edu userprop=userval3
#= 87fx8can9z.fsf@vertex.dottedmag userprop=userval2
#= 87iqd9rn3l.fsf@vertex.dottedmag userprop=userval
#= 87lji4lx9v.fsf@yoom.home.cworth.org userprop=userval3
#= 87lji5cbwo.fsf@yoom.home.cworth.org userprop=userval
#= cf0c4d610911171136h1713aa59w9cf9aa31f052ad0a@mail.gmail.com userprop=userval
EOF
notmuch restore < prop-dump
notmuch reindex '*'
notmuch dump | grep '^#=' | sort > OUTPUT
test_expect_equal_file prop-dump OUTPUT
add_email_corpus lkml
test_begin_subtest "reindex of lkml corpus preserves threads"
notmuch search '*' | notmuch_search_sanitize > EXPECTED
notmuch reindex '*'
notmuch search '*' | notmuch_search_sanitize > OUTPUT
test_expect_equal_file EXPECTED OUTPUT
test_begin_subtest "reindex after removing corpus"
tar cf backup.tar mail/cur
find mail/cur -type f -delete
test_expect_success "notmuch reindex '*'"
tar xf backup.tar
test_done