From 71faaef730e291c1d8fbfe085a34b7f4c2e5ad49 Mon Sep 17 00:00:00 2001 From: David Bremner Date: Sun, 9 Mar 2014 17:19:30 +2000 Subject: [PATCH] v3 of boolean folder: patches --- 66/c453b865cceffb9526638dd153e897cae84b73 | 247 ++++++++++++++++++++++ 1 file changed, 247 insertions(+) create mode 100644 66/c453b865cceffb9526638dd153e897cae84b73 diff --git a/66/c453b865cceffb9526638dd153e897cae84b73 b/66/c453b865cceffb9526638dd153e897cae84b73 new file mode 100644 index 000000000..4bbc1d39f --- /dev/null +++ b/66/c453b865cceffb9526638dd153e897cae84b73 @@ -0,0 +1,247 @@ +Return-Path: +X-Original-To: notmuch@notmuchmail.org +Delivered-To: notmuch@notmuchmail.org +Received: from localhost (localhost [127.0.0.1]) + by olra.theworths.org (Postfix) with ESMTP id DA1FE431FC7 + for ; Sat, 8 Mar 2014 13:20:16 -0800 (PST) +X-Virus-Scanned: Debian amavisd-new at olra.theworths.org +X-Spam-Flag: NO +X-Spam-Score: 0 +X-Spam-Level: +X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none] + autolearn=disabled +Received: from olra.theworths.org ([127.0.0.1]) + by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024) + with ESMTP id 8wm6Zf+GkkXX for ; + Sat, 8 Mar 2014 13:20:09 -0800 (PST) +Received: from yantan.tethera.net (yantan.tethera.net [199.188.72.155]) + (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits)) + (No client certificate requested) + by olra.theworths.org (Postfix) with ESMTPS id 59C52431FB6 + for ; Sat, 8 Mar 2014 13:20:09 -0800 (PST) +Received: from remotemail by yantan.tethera.net with local (Exim 4.80) + (envelope-from ) id 1WMOf8-00057h-AK + for notmuch@notmuchmail.org; Sat, 08 Mar 2014 17:20:06 -0400 +Received: (nullmailer pid 28523 invoked by uid 1000); Sat, 08 Mar 2014 + 21:20:02 -0000 +From: David Bremner +To: notmuch@notmuchmail.org +Subject: v3 of boolean folder: patches +Date: Sat, 8 Mar 2014 17:19:30 -0400 +Message-Id: <1394313585-28422-1-git-send-email-david@tethera.net> +X-Mailer: git-send-email 1.8.5.3 +X-BeenThere: notmuch@notmuchmail.org +X-Mailman-Version: 2.1.13 +Precedence: list +List-Id: "Use and development of the notmuch mail system." + +List-Unsubscribe: , + +List-Archive: +List-Post: +List-Help: +List-Subscribe: , + +X-List-Received-Date: Sat, 08 Mar 2014 21:20:17 -0000 + +This is a followup to + + id:cover.1393105055.git.jani@nikula.org + +The first 11 patches are very close to that series; in the last 4 I +have added some minimalist infrastructure to download and verify +pre-built test databases. + +I decided that the benefits of being to really apply and test the +patch series outweighed the fact that one of patchs is about +150K. Apologies to those of you on GSM modems and the like. + +Interdiff follows + +diff --git a/Makefile b/Makefile +index 0428160..97084b1 100644 +--- a/Makefile ++++ b/Makefile +@@ -5,7 +5,8 @@ all: + # List all subdirectories here. Each contains its own Makefile.local. + # Use of '=', without '+=', seems to be required for out-of-tree + # builds to work. +-subdirs = compat completion emacs lib man parse-time-string performance-test util test ++subdirs = compat completion emacs lib man parse-time-string performance-test util test \ ++ test/test-databases + + # We make all targets depend on the Makefiles themselves. + global_deps = Makefile Makefile.config Makefile.local \ +diff --git a/devel/gen-testdb.sh b/devel/gen-testdb.sh +index c291dff..621b31e 100755 +--- a/devel/gen-testdb.sh ++++ b/devel/gen-testdb.sh +@@ -81,6 +81,10 @@ shift `expr $OPTIND - 1` + + . ./test-lib.sh + ++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" \ +@@ -112,13 +116,16 @@ cp -a ${CORPUS} ${MAIL_DIR} + test_expect_code 0 "index the corpus" \ + "notmuch new" + +-# finally, wrap the resulting mail store and database in a tarball +-DBNAME=database${SUFFIX} ++# wrap the resulting mail store and database in a tarball ++ + cp -a ${MAIL_DIR} ${TMP_DIRECTORY}/${DBNAME} +-tar zcf ${TMP_DIRECTORY}/${DBNAME}.tar.gz -C ${TMP_DIRECTORY} ${DBNAME} ++tar Jcf ${TMP_DIRECTORY}/${TARBALLNAME} -C ${TMP_DIRECTORY} ${DBNAME} + mkdir -p ${TEST_DIRECTORY}/test-databases +-cp -a ${TMP_DIRECTORY}/${DBNAME}.tar.gz ${TEST_DIRECTORY}/test-databases +-test_expect_code 0 "create the output tarball ${DBNAME}.tar.gz" \ +- "test -f ${TEST_DIRECTORY}/test-databases/${DBNAME}.tar.gz" ++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 +diff --git a/test/Makefile.local b/test/Makefile.local +index 99324ba..bfabd15 100644 +--- a/test/Makefile.local ++++ b/test/Makefile.local +@@ -2,6 +2,8 @@ + + dir := test + ++# save against changes in $(dir) ++test_src_dir := $(dir) + extra_cflags += -I. + + smtp_dummy_srcs = \ +@@ -44,12 +46,12 @@ TEST_BINARIES=$(dir)/arg-test \ + + test-binaries: $(TEST_BINARIES) + +-test: all test-binaries +- @${dir}/notmuch-test $(OPTIONS) ++test: all test-binaries fetch-test-databases ++ @${test_src_dir}/notmuch-test $(OPTIONS) + + check: test + + SRCS := $(SRCS) $(smtp_dummy_srcs) + CLEAN += $(TEST_BINARIES) $(addsuffix .o,$(TEST_BINARIES)) \ + $(dir)/database-test.o \ +- $(dir)/corpus.mail $(dir)/test-results $(dir)/tmp.* ++ $(dir)/corpus.mail.* $(dir)/test-results $(dir)/tmp.* +diff --git a/test/README b/test/README +index 79a9b1b..81a1c82 100644 +--- a/test/README ++++ b/test/README +@@ -64,6 +64,14 @@ The following command-line options are available when running tests: + Pointing this argument at a tmpfs filesystem can improve the + speed of the test suite for some users. + ++Certain tests require precomputed databases to complete. You can fetch these ++databases with ++ ++ make download-test-databases ++ ++If you do not download the test databases, the relevant tests will be ++skipped. ++ + When invoking the test suite via "make test" any of the above options + can be specified as follows: + +diff --git a/test/T530-upgrade.sh b/test/T530-upgrade.sh +index cf9914e..e1e8ac5 100755 +--- a/test/T530-upgrade.sh ++++ b/test/T530-upgrade.sh +@@ -3,7 +3,19 @@ test_description="database upgrade" + + . ./test-lib.sh + +-tar zxf $TEST_DIRECTORY/test-databases/database-v1.tar.gz -C ${MAIL_DIR} --strip-components=1 ++dbtarball=folders-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_expect_success \ ++ 'database checksum' \ ++ '( 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) +diff --git a/test/test-databases/.gitignore b/test/test-databases/.gitignore +new file mode 100644 +index 0000000..b5624b7 +--- /dev/null ++++ b/test/test-databases/.gitignore +@@ -0,0 +1 @@ ++*.tar.xz +diff --git a/test/test-databases/Makefile b/test/test-databases/Makefile +new file mode 100644 +index 0000000..b250a8b +--- /dev/null ++++ b/test/test-databases/Makefile +@@ -0,0 +1,7 @@ ++# See Makefile.local for the list of files to be compiled in this ++# directory. ++all: ++ $(MAKE) -C ../.. all ++ ++.DEFAULT: ++ $(MAKE) -C ../.. $@ +diff --git a/test/test-databases/Makefile.local b/test/test-databases/Makefile.local +new file mode 100644 +index 0000000..e777ada +--- /dev/null ++++ b/test/test-databases/Makefile.local +@@ -0,0 +1,14 @@ ++# -*- makefile -*- ++ ++TEST_DATABASE_MIRROR=http://notmuchmail.org/releases/test-databases ++ ++dir := test/test-databases ++ ++test_databases := $(dir)/folders-v1.tar.xz ++ ++%.tar.xz: ++ wget -nv -O $@ ${TEST_DATABASE_MIRROR}/$(notdir $@); ++ ++download-test-databases: ${test_databases} ++ ++DISTCLEAN := $(DISTCLEAN) ${test_databases} +diff --git a/test/test-databases/README b/test/test-databases/README +deleted file mode 100644 +index af5defe..0000000 +--- a/test/test-databases/README ++++ /dev/null +@@ -1,5 +0,0 @@ +-Notmuch test databases +-====================== +- +-This directory contains pre-generated databases with their source +-corpus, chiefly for the purpose of testing database upgrade. +diff --git a/test/test-databases/database-v1.tar.gz b/test/test-databases/database-v1.tar.gz +deleted file mode 100644 +index bb4df4d..0000000 +Binary files a/test/test-databases/database-v1.tar.gz and /dev/null differ +diff --git a/test/test-databases/folders-v1.tar.xz.sha256 b/test/test-databases/folders-v1.tar.xz.sha256 +new file mode 100644 +index 0000000..01ad79d +--- /dev/null ++++ b/test/test-databases/folders-v1.tar.xz.sha256 +@@ -0,0 +1 @@ ++ace8a61216756b90a421e23d03910e1228bcb910e197c35e51e29f2cf57b37d9 folders-v1.tar.xz -- 2.26.2