On Sun, Jan 17 2021, David Bremner wrote: > In ee897cab8b721 the upgrade tests from pre v3 databases were > removed. The reasons for that are still valid, but we should still > test the code paths that do the upgrade, and it is relatively > straightforward to do that for v3 to v3 upgrades. > --- > test/README | 1 + > test/T530-upgrade.sh | 51 ++++++++++++++++++++++++++++++++++++++++++++ > test/test-lib.sh | 1 + > 3 files changed, 53 insertions(+) > create mode 100755 test/T530-upgrade.sh > > diff --git a/test/README b/test/README > index 11eaf18f..10f127cb 100644 > --- a/test/README > +++ b/test/README > @@ -25,6 +25,7 @@ that you know if you break anything. > - gdb(1) > - gpg(1) > - python(1) > + - xapian-metadata(1) > > If your system lacks these tools or have older, non-upgradable versions > of these, please (possibly compile and) install these to some other > diff --git a/test/T530-upgrade.sh b/test/T530-upgrade.sh > new file mode 100755 > index 00000000..bdd8d282 > --- /dev/null > +++ b/test/T530-upgrade.sh > @@ -0,0 +1,51 @@ > +#!/usr/bin/env bash > +test_description='database upgrades' > +. $(dirname "$0")/test-lib.sh || exit 1 > + > +test_require_external_prereq xapian-metadata > + > +XAPIAN_PATH=$MAIL_DIR/.notmuch/xapian > +BACKUP_PATH=$MAIL_DIR/.notmuch > + > +delete_feature () { > + local key=$1 > + features=$(xapian-metadata get $XAPIAN_PATH features | grep -v "^$key") > + xapian-metadata set $XAPIAN_PATH features "$features" > +} > + > +add_email_corpus > + > +for key in 'multiple paths per message' 'relative directory paths' 'exact folder:/path: search' \ could be split "earlier" so that this fits into 80 columns... > + 'mail documents for missing messages' \ > + 'modification tracking'; do > + backup_database > + test_begin_subtest "upgrade is triggered by missing '$key'" > + delete_feature "$key" > + output=$(notmuch new | grep Welcome) > + test_expect_equal "$output" "Welcome to a new version of notmuch! Your database will now be upgraded." (here we have to tolerate long line) > + restore_database > + > + backup_database > + test_begin_subtest "backup can be restored ['$key']" > + notmuch dump > BEFORE > + delete_feature "$key" > + notmuch new | grep "\(Welcome\|backup\)" > OUTPUT could do grep -e Welcome -e backup (but above is fine too) > + notmuch tag -inbox '*' > + dump_file=$(ls ${BACKUP_PATH}/dump*) $(echo ${BACKUP_PATH}/dump*) (so using shell builtin instead of external command) > + notmuch restore --input=$dump_file >> OUTPUT > + notmuch dump > AFTER > + test_expect_equal_file BEFORE AFTER > + restore_database > + > +done > + > +for key in 'from/subject/message-ID in database' 'indexed MIME types' 'index body and headers separately'; do clould be split "earlier" so lines fit into 80 columns > + backup_database > + test_begin_subtest "upgrade not triggered by missing '$key'" > + delete_feature "$key" > + output=$(notmuch new | grep Welcome) > + test_expect_equal "$output" "" > + restore_database > +done > + > +test_done > diff --git a/test/test-lib.sh b/test/test-lib.sh > index c23a0d20..29baa0c1 100644 > --- a/test/test-lib.sh > +++ b/test/test-lib.sh > @@ -1270,3 +1270,4 @@ test_declare_external_prereq gpg > test_declare_external_prereq openssl > test_declare_external_prereq gpgsm > test_declare_external_prereq ${NOTMUCH_PYTHON} > +test_declare_external_prereq xapian-metadata > -- > 2.29.2 > _______________________________________________ > notmuch mailing list -- notmuch@notmuchmail.org > To unsubscribe send an email to notmuch-leave@notmuchmail.org _______________________________________________ notmuch mailing list -- notmuch@notmuchmail.org To unsubscribe send an email to notmuch-leave@notmuchmail.org