mirror of
https://git.notmuchmail.org/git/notmuch
synced 2024-11-24 11:58:10 +01:00
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:
parent
b90d852a2f
commit
ee897cab8b
8 changed files with 1 additions and 298 deletions
|
@ -20,7 +20,6 @@ addons:
|
|||
|
||||
script:
|
||||
- ./configure
|
||||
- make download-test-databases
|
||||
- make test
|
||||
|
||||
notifications:
|
||||
|
|
2
configure
vendored
2
configure
vendored
|
@ -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
|
||||
|
|
|
@ -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
|
|
@ -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
|
1
test/test-databases/.gitignore
vendored
1
test/test-databases/.gitignore
vendored
|
@ -1 +0,0 @@
|
|||
/*.tar.xz
|
|
@ -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 ../.. $@
|
|
@ -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}
|
|
@ -1 +0,0 @@
|
|||
4299e051b10e1fa7b33ea2862790a09ebfe96859681804e5251e130f800e69d2 database-v1.tar.xz
|
Loading…
Reference in a new issue