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