X-Git-Url: https://git.notmuchmail.org/git?p=notmuch;a=blobdiff_plain;f=test%2FT530-upgrade.sh;h=6b42a690fa9002573ef9639167d757987223281b;hp=67bbf319a1b7b271212fa6e0d7b74794d293ac07;hb=4e2c351c588ad74f4800ca0344232be90387c54a;hpb=8413582b6edc859285d68c9f7ad83236788567c0 diff --git a/test/T530-upgrade.sh b/test/T530-upgrade.sh index 67bbf319..6b42a690 100755 --- a/test/T530-upgrade.sh +++ b/test/T530-upgrade.sh @@ -25,13 +25,21 @@ test_begin_subtest "path: search does not work with old database version" output=$(notmuch search path:foo) test_expect_equal "$output" "" +test_expect_success 'pre upgrade dump' '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" "" @@ -108,4 +116,25 @@ MAIL_DIR/bar/new/21:2, MAIL_DIR/bar/new/22:2, MAIL_DIR/cur/51:2," +# Ghost messages are difficult to test since they're nearly invisible. +# However, if the upgrade works correctly, the ghost message should +# retain the right thread ID even if all of the original messages in +# the thread are deleted. That's what we test. This won't detect if +# the upgrade just plain didn't happen, but it should detect if +# something went wrong. +test_begin_subtest "ghost message retains thread ID" +# Upgrade database +notmuch new +# Get thread ID of real message +thread=$(notmuch search --output=threads id:4EFC743A.3060609@april.org) +# Delete all real messages in that thread +rm $(notmuch search --output=files $thread) +notmuch new +# "Deliver" ghost message +add_message '[subject]=Ghost' '[id]=4EFC3931.6030007@april.org' +# If the ghost upgrade worked, the new message should be attached to +# the existing thread ID. +nthread=$(notmuch search --output=threads id:4EFC3931.6030007@april.org) +test_expect_equal "$thread" "$nthread" + test_done