#!/usr/bin/env bash
test_description="database upgrade"
-. ./test-lib.sh
+. $(dirname "$0")/test-lib.sh || exit 1
dbtarball=database-v1.tar.xz
# XXX: Accomplish the same with test lib helpers
if [ ! -e ${TEST_DIRECTORY}/test-databases/${dbtarball} ]; then
- test_subtest_missing_external_prereq_["${dbtarball}"]=t
+ test_subtest_missing_external_prereq_["${dbtarball} - fetch with 'make download-test-databases'"]=t
fi
+test_begin_subtest "database checksum"
test_expect_success \
- 'database checksum' \
'( cd $TEST_DIRECTORY/test-databases &&
sha256sum --quiet --check --status ${dbtarball}.sha256 )'
output=$(notmuch search path:foo)
test_expect_equal "$output" ""
+test_begin_subtest "pre upgrade dump"
+test_expect_success 'notmuch dump | sort > pre-upgrade-dump'
+
test_begin_subtest "database upgrade from format version 1"
-output=$(notmuch new)
+output=$(notmuch new | sed -e 's/^Backing up tags to .*$/Backing up tags to FILENAME/')
test_expect_equal "$output" "\
Welcome to a new version of notmuch! Your database will now be upgraded.
-Your notmuch database has now been upgraded to database format version 2.
+This process is safe to interrupt.
+Backing up tags to FILENAME
+Your notmuch database has now been upgraded.
No new mail."
+test_begin_subtest "tag backup matches pre-upgrade dump"
+gunzip -c ${MAIL_DIR}/.notmuch/dump-*.gz | sort > backup-dump
+test_expect_equal_file pre-upgrade-dump backup-dump
+
test_begin_subtest "folder: no longer matches in the middle of path"
output=$(notmuch search folder:baz)
test_expect_equal "$output" ""
MAIL_DIR/bar/new/22:2,
MAIL_DIR/cur/51:2,"
+test_begin_subtest "body: same as unprefixed before reindex"
+notmuch search --output=messages body:close > OUTPUT
+notmuch search --output=messages close > EXPECTED
+test_expect_equal_file EXPECTED OUTPUT
+
+test_begin_subtest "body: subset of unprefixed after reindex"
+notmuch reindex '*'
+notmuch search --output=messages body:close | sort > BODY
+notmuch search --output=messages close | sort > UNPREFIXED
+diff -e UNPREFIXED BODY | cut -c2- > OUTPUT
+cat <<EOF > EXPECTED
+d
+d
+EOF
+test_expect_equal_file EXPECTED OUTPUT
+
test_done