test: drop upgrade from v1 tests

These are less crucial since we stopped generating new database
versions and relied primarily on features. They also rely on a
pre-generated v1 database which happens to be chert format. This
backend is not supported by Xapian 1.5.

Also drop the tool gen-testdb.sh, which is currently broken, due to
changes in the testing infrastructure.
This commit is contained in:
David Bremner 2020-07-07 07:56:47 -03:00
parent b90d852a2f
commit ee897cab8b
8 changed files with 1 additions and 298 deletions

View file

@ -20,7 +20,6 @@ addons:
script:
- ./configure
- make download-test-databases
- make test
notifications:

2
configure vendored
View file

@ -48,7 +48,7 @@ case $PWD in ( *["$IFS"]* )
esac
subdirs="util compat lib parse-time-string completion doc emacs"
subdirs="${subdirs} performance-test test test/test-databases"
subdirs="${subdirs} performance-test test"
subdirs="${subdirs} bindings"
# For a non-srcdir configure invocation (such as ../configure), create

View file

@ -1,131 +0,0 @@
#!/usr/bin/env bash
#
# NAME
# gen-testdb.sh - generate test databases
#
# SYNOPSIS
# gen-testdb.sh -v NOTMUCH-VERSION [-c CORPUS-PATH] [-s TAR-SUFFIX]
#
# DESCRIPTION
# Generate a tarball containing the specified test corpus and
# the corresponding notmuch database, indexed using a specific
# version of notmuch, resulting in a specific version of the
# database.
#
# The specific version of notmuch will be built on the fly.
# Therefore the script must be run within a git repository to be
# able to build the old versions of notmuch.
#
# This script reuses the test infrastructure, and the script
# must be run from within the test directory.
#
# The output tarballs, named database-<TAR-SUFFIX>.tar.gz, are
# placed in the test/test-databases directory.
#
# OPTIONS
# -v NOTMUCH-VERSION
# Notmuch version in terms of a git tag or commit to use
# for generating the database. Required.
#
# -c CORPUS-PATH
# Path to a corpus to use for generating the
# database. Due to CWD changes within the test
# infrastructure, use absolute paths. Defaults to the
# test corpus.
#
# -s TAR-SUFFIX
# Suffix for the tarball basename. Empty by default.
#
# EXAMPLE
#
# Generate a database indexed with notmuch 0.17. Use the default
# test corpus. Name the tarball database-v1.tar.gz to reflect
# the fact that notmuch 0.17 used database version 1.
#
# $ cd test
# $ ../devel/gen-testdb.sh -v 0.17 -s v1
#
# CAVEATS
# Test infrastructure options won't work.
#
# Any existing databases with the same name will be overwritten.
#
# It may not be possible to build old versions of notmuch with
# the set of dependencies that satisfy building the current
# version of notmuch.
#
# AUTHOR
# Jani Nikula <jani@nikula.org>
#
# LICENSE
# Same as notmuch test infrastructure (GPLv2+).
#
test_description="database generation abusing test infrastructure"
# immediate exit on subtest failure; see test_failure_ in test-lib.sh
immediate=t
VERSION=
CORPUS=
SUFFIX=
while getopts v:c:s: opt; do
case "$opt" in
v) VERSION="$OPTARG";;
c) CORPUS="$OPTARG";;
s) SUFFIX="-$OPTARG";;
esac
done
shift `expr $OPTIND - 1`
. ./test-lib.sh || exit 1
SHORT_CORPUS=$(basename ${CORPUS:-database})
DBNAME=${SHORT_CORPUS}${SUFFIX}
TARBALLNAME=${DBNAME}.tar.xz
CORPUS=${CORPUS:-${TEST_DIRECTORY}/corpus}
test_expect_code 0 "notmuch version specified on the command line" \
"test -n ${VERSION}"
test_expect_code 0 "the specified version ${VERSION} refers to a commit" \
"git show ${VERSION} >/dev/null 2>&1"
BUILD_DIR="notmuch-${VERSION}"
test_expect_code 0 "generate snapshot of notmuch version ${VERSION}" \
"git -C $TEST_DIRECTORY/.. archive --prefix=${BUILD_DIR}/ --format=tar ${VERSION} | tar x"
# force version string
git describe --match '[0-9.]*' ${VERSION} > ${BUILD_DIR}/version
test_expect_code 0 "configure and build notmuch version ${VERSION}" \
"make -C ${BUILD_DIR}"
# use the newly built notmuch
export PATH=./${BUILD_DIR}:$PATH
test_begin_subtest "verify the newly built notmuch version"
test_expect_equal "`notmuch --version`" "notmuch `cat ${BUILD_DIR}/version`"
# replace the existing mails, if any, with the specified corpus
rm -rf ${MAIL_DIR}
cp -a ${CORPUS} ${MAIL_DIR}
test_expect_code 0 "index the corpus" \
"notmuch new"
# wrap the resulting mail store and database in a tarball
cp -a ${MAIL_DIR} ${TMP_DIRECTORY}/${DBNAME}
tar Jcf ${TMP_DIRECTORY}/${TARBALLNAME} -C ${TMP_DIRECTORY} ${DBNAME}
mkdir -p ${TEST_DIRECTORY}/test-databases
cp -a ${TMP_DIRECTORY}/${TARBALLNAME} ${TEST_DIRECTORY}/test-databases
test_expect_code 0 "create the output tarball ${TARBALLNAME}" \
"test -f ${TEST_DIRECTORY}/test-databases/${TARBALLNAME}"
# generate a checksum file
test_expect_code 0 "compute checksum" \
"(cd ${TEST_DIRECTORY}/test-databases/ && sha256sum ${TARBALLNAME} > ${TARBALLNAME}.sha256)"
test_done

View file

@ -1,136 +0,0 @@
#!/usr/bin/env bash
test_description="database upgrade"
. $(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} - fetch with 'make download-test-databases'"]=t
fi
test_begin_subtest "database checksum"
test_expect_success \
'( cd $TEST_DIRECTORY/test-databases &&
sha256sum --quiet --check --status ${dbtarball}.sha256 )'
tar xf $TEST_DIRECTORY/test-databases/${dbtarball} -C ${MAIL_DIR} --strip-components=1
test_begin_subtest "folder: search does not work with old database version"
output=$(notmuch search folder:foo)
test_expect_equal "$output" ""
test_begin_subtest "path: search does not work with old database version"
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 | 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.
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" ""
test_begin_subtest "folder: search"
output=$(notmuch search --output=files folder:foo | notmuch_search_files_sanitize | sort)
test_expect_equal "$output" "MAIL_DIR/foo/06:2,
MAIL_DIR/foo/cur/07:2,
MAIL_DIR/foo/cur/08:2,
MAIL_DIR/foo/new/03:2,
MAIL_DIR/foo/new/09:2,
MAIL_DIR/foo/new/10:2,"
test_begin_subtest "top level folder: search"
output=$(notmuch search --output=files folder:'""' | notmuch_search_files_sanitize | sort)
# bar/18:2, is a duplicate of cur/51:2,
test_expect_equal "$output" "MAIL_DIR/01:2,
MAIL_DIR/02:2,
MAIL_DIR/bar/18:2,
MAIL_DIR/cur/29:2,
MAIL_DIR/cur/30:2,
MAIL_DIR/cur/31:2,
MAIL_DIR/cur/32:2,
MAIL_DIR/cur/33:2,
MAIL_DIR/cur/34:2,
MAIL_DIR/cur/35:2,
MAIL_DIR/cur/36:2,
MAIL_DIR/cur/37:2,
MAIL_DIR/cur/38:2,
MAIL_DIR/cur/39:2,
MAIL_DIR/cur/40:2,
MAIL_DIR/cur/41:2,
MAIL_DIR/cur/42:2,
MAIL_DIR/cur/43:2,
MAIL_DIR/cur/44:2,
MAIL_DIR/cur/45:2,
MAIL_DIR/cur/46:2,
MAIL_DIR/cur/47:2,
MAIL_DIR/cur/48:2,
MAIL_DIR/cur/49:2,
MAIL_DIR/cur/50:2,
MAIL_DIR/cur/51:2,
MAIL_DIR/cur/52:2,
MAIL_DIR/cur/53:2,
MAIL_DIR/new/04:2,"
test_begin_subtest "path: search"
output=$(notmuch search --output=files path:"bar" | notmuch_search_files_sanitize | sort)
# cur/51:2, is a duplicate of bar/18:2,
test_expect_equal "$output" "MAIL_DIR/bar/17:2,
MAIL_DIR/bar/18:2,
MAIL_DIR/cur/51:2,"
test_begin_subtest "top level path: search"
output=$(notmuch search --output=files path:'""' | notmuch_search_files_sanitize | sort)
test_expect_equal "$output" "MAIL_DIR/01:2,
MAIL_DIR/02:2,"
test_begin_subtest "recursive path: search"
output=$(notmuch search --output=files path:"bar/**" | notmuch_search_files_sanitize | sort)
# cur/51:2, is a duplicate of bar/18:2,
test_expect_equal "$output" "MAIL_DIR/bar/17:2,
MAIL_DIR/bar/18:2,
MAIL_DIR/bar/baz/05:2,
MAIL_DIR/bar/baz/23:2,
MAIL_DIR/bar/baz/24:2,
MAIL_DIR/bar/baz/cur/25:2,
MAIL_DIR/bar/baz/cur/26:2,
MAIL_DIR/bar/baz/new/27:2,
MAIL_DIR/bar/baz/new/28:2,
MAIL_DIR/bar/cur/19:2,
MAIL_DIR/bar/cur/20:2,
MAIL_DIR/bar/new/21:2,
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

View file

@ -1 +0,0 @@
/*.tar.xz

View file

@ -1,7 +0,0 @@
# See Makefile.local for the list of files to be compiled in this
# directory.
all:
$(MAKE) -C ../.. all
.DEFAULT:
$(MAKE) -C ../.. $@

View file

@ -1,20 +0,0 @@
# -*- makefile -*-
TEST_DATABASE_MIRROR=https://notmuchmail.org/releases/test-databases
dir := test/test-databases
test_databases := $(dir)/database-v1.tar.xz
%.tar.xz:
@exec 1>&2 ;\
if command -v wget >/dev/null ;\
then set -x; wget -nv -O $@ ${TEST_DATABASE_MIRROR}/$(notdir $@) ;\
elif command -v curl >/dev/null ;\
then set -x; curl -L -s -o $@ ${TEST_DATABASE_MIRROR}/$(notdir $@) ;\
else echo Cannot fetch databases, no wget nor curl available; exit 1 ;\
fi
download-test-databases: ${test_databases}
DATACLEAN := $(DATACLEAN) ${test_databases}

View file

@ -1 +0,0 @@
4299e051b10e1fa7b33ea2862790a09ebfe96859681804e5251e130f800e69d2 database-v1.tar.xz