[PATCH v2 09/13] devel: add script to generate test databases
authorJani Nikula <jani@nikula.org>
Sat, 22 Feb 2014 22:25:40 +0000 (00:25 +0200)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 18:00:09 +0000 (10:00 -0800)
a7/1e2eba4d9adf679d96bd138f09ba61356eb661 [new file with mode: 0644]

diff --git a/a7/1e2eba4d9adf679d96bd138f09ba61356eb661 b/a7/1e2eba4d9adf679d96bd138f09ba61356eb661
new file mode 100644 (file)
index 0000000..ca6cc44
--- /dev/null
@@ -0,0 +1,214 @@
+Return-Path: <jani@nikula.org>\r
+X-Original-To: notmuch@notmuchmail.org\r
+Delivered-To: notmuch@notmuchmail.org\r
+Received: from localhost (localhost [127.0.0.1])\r
+       by olra.theworths.org (Postfix) with ESMTP id CFAEE431FCF\r
+       for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:26:50 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References"\r
+X-Spam-Flag: NO\r
+X-Spam-Score: -0.7\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5\r
+       tests=[RCVD_IN_DNSWL_LOW=-0.7] autolearn=disabled\r
+Received: from olra.theworths.org ([127.0.0.1])\r
+       by localhost (olra.theworths.org [127.0.0.1]) (amavisd-new, port 10024)\r
+       with ESMTP id 2OUD2A5bdM4X for <notmuch@notmuchmail.org>;\r
+       Sat, 22 Feb 2014 14:26:46 -0800 (PST)\r
+Received: from mail-ee0-f45.google.com (mail-ee0-f45.google.com\r
+ [74.125.83.45])       (using TLSv1 with cipher RC4-SHA (128/128 bits))        (No client\r
+ certificate requested)        by olra.theworths.org (Postfix) with ESMTPS id\r
+ D8A60429E27   for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:26:09 -0800\r
+ (PST)\r
+Received: by mail-ee0-f45.google.com with SMTP id e53so775548eek.4\r
+       for <notmuch@notmuchmail.org>; Sat, 22 Feb 2014 14:26:08 -0800 (PST)\r
+X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed;\r
+       d=1e100.net; s=20130820;\r
+       h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to\r
+       :references:in-reply-to:references;\r
+       bh=PeCyMLrcCScFrs4jrBvSfMGSBMQoSOQ4z1/td8hYeH8=;\r
+       b=TwTYqGCSpMRBnqgjivWQKukK+ls5ZoAqaDgG5wkdt2mjTEpAq4++J+MeWhgW58VVvf\r
+       lEgkJYXbF4HzvLrKXuHzHWEPLeFeP2jpk08SjC8hjqSzKpVf1kq/Uayda7QbJu5PG7Kh\r
+       ldhyn/MTdiETe6tqq5XyztFM1SkHpu1vuXqwUy7AlVYsvupJGBla9JtjzckaoRHMjT/i\r
+       q8AW6tBhkjgfERYuXs2fg9beT/UF1ZKeE/ntmVha9ziE1Y26seheqIShWQ6fxHet/+xk\r
+       1l2DLNIeD9+sGz+bdDRhWDNChaIK9w2vWTUUbmE3Ahawy0G2YDMrbU78T2OiBlYyiJ8K\r
+       L1kw==\r
+X-Gm-Message-State:\r
+ ALoCoQlPL7wLpqbGkjobU/83u8ktLwU63UepEMo4VIj8SUCZsxPzdEfquM7EedalZ0DhSpp38sGW\r
+X-Received: by 10.15.42.72 with SMTP id t48mr16371744eev.45.1393107968661;\r
+       Sat, 22 Feb 2014 14:26:08 -0800 (PST)\r
+Received: from localhost (dsl-hkibrasgw2-58c36f-91.dhcp.inet.fi.\r
+       [88.195.111.91])\r
+       by mx.google.com with ESMTPSA id 46sm43730780ees.4.2014.02.22.14.26.07\r
+       for <multiple recipients>\r
+       (version=TLSv1.2 cipher=RC4-SHA bits=128/128);\r
+       Sat, 22 Feb 2014 14:26:08 -0800 (PST)\r
+From: Jani Nikula <jani@nikula.org>\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH v2 09/13] devel: add script to generate test databases\r
+Date: Sun, 23 Feb 2014 00:25:40 +0200\r
+Message-Id:\r
+ <1411feb2b6955ebaf4f5b4de9157e53f88e1bb1f.1393105055.git.jani@nikula.org>\r
+X-Mailer: git-send-email 1.8.5.3\r
+In-Reply-To: <cover.1393105055.git.jani@nikula.org>\r
+References: <cover.1393105055.git.jani@nikula.org>\r
+In-Reply-To: <cover.1393105055.git.jani@nikula.org>\r
+References: <cover.1393105055.git.jani@nikula.org>\r
+X-BeenThere: notmuch@notmuchmail.org\r
+X-Mailman-Version: 2.1.13\r
+Precedence: list\r
+List-Id: "Use and development of the notmuch mail system."\r
+       <notmuch.notmuchmail.org>\r
+List-Unsubscribe: <http://notmuchmail.org/mailman/options/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=unsubscribe>\r
+List-Archive: <http://notmuchmail.org/pipermail/notmuch>\r
+List-Post: <mailto:notmuch@notmuchmail.org>\r
+List-Help: <mailto:notmuch-request@notmuchmail.org?subject=help>\r
+List-Subscribe: <http://notmuchmail.org/mailman/listinfo/notmuch>,\r
+       <mailto:notmuch-request@notmuchmail.org?subject=subscribe>\r
+X-List-Received-Date: Sat, 22 Feb 2014 22:26:51 -0000\r
+\r
+Add script to generate notmuch test databases using specified versions\r
+of notmuch. This is useful for generating material for database\r
+upgrade tests.\r
+\r
+This reuses the test infrastructure to have a sandbox environment for\r
+notmuch new etc.\r
+---\r
+ devel/gen-testdb.sh | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++\r
+ 1 file changed, 124 insertions(+)\r
+ create mode 100755 devel/gen-testdb.sh\r
+\r
+diff --git a/devel/gen-testdb.sh b/devel/gen-testdb.sh\r
+new file mode 100755\r
+index 000000000000..c291dfff98c9\r
+--- /dev/null\r
++++ b/devel/gen-testdb.sh\r
+@@ -0,0 +1,124 @@\r
++#!/usr/bin/env bash\r
++#\r
++# NAME\r
++#     gen-testdb.sh - generate test databases\r
++#\r
++# SYNOPSIS\r
++#     gen-testdb.sh -v NOTMUCH-VERSION [-c CORPUS-PATH] [-s TAR-SUFFIX]\r
++#\r
++# DESCRIPTION\r
++#     Generate a tarball containing the specified test corpus and\r
++#     the corresponding notmuch database, indexed using a specific\r
++#     version of notmuch, resulting in a specific version of the\r
++#     database.\r
++#\r
++#     The specific version of notmuch will be built on the fly.\r
++#     Therefore the script must be run within a git repository to be\r
++#     able to build the old versions of notmuch.\r
++#\r
++#     This script reuses the test infrastructure, and the script\r
++#     must be run from within the test directory.\r
++#\r
++#     The output tarballs, named database-<TAR-SUFFIX>.tar.gz, are\r
++#     placed in the test/test-databases directory.\r
++#\r
++# OPTIONS\r
++#     -v NOTMUCH-VERSION\r
++#             Notmuch version in terms of a git tag or commit to use\r
++#             for generating the database. Required.\r
++#\r
++#     -c CORPUS-PATH\r
++#             Path to a corpus to use for generating the\r
++#             database. Due to CWD changes within the test\r
++#             infrastructure, use absolute paths. Defaults to the\r
++#             test corpus.\r
++#\r
++#     -s TAR-SUFFIX\r
++#             Suffix for the tarball basename. Empty by default.\r
++#\r
++# EXAMPLE\r
++#\r
++#     Generate a database indexed with notmuch 0.17. Use the default\r
++#     test corpus. Name the tarball database-v1.tar.gz to reflect\r
++#     the fact that notmuch 0.17 used database version 1.\r
++#\r
++#     $ cd test\r
++#     $ ../devel/gen-testdb.sh -v 0.17 -s v1\r
++#\r
++# CAVEATS\r
++#     Test infrastructure options won't work.\r
++#\r
++#     Any existing databases with the same name will be overwritten.\r
++#\r
++#     It may not be possible to build old versions of notmuch with\r
++#     the set of dependencies that satisfy building the current\r
++#     version of notmuch.\r
++#\r
++# AUTHOR\r
++#     Jani Nikula <jani@nikula.org>\r
++#\r
++# LICENSE\r
++#     Same as notmuch test infrastructure (GPLv2+).\r
++#\r
++\r
++test_description="database generation abusing test infrastructure"\r
++\r
++# immediate exit on subtest failure; see test_failure_ in test-lib.sh\r
++immediate=t\r
++\r
++VERSION=\r
++CORPUS=\r
++SUFFIX=\r
++\r
++while getopts v:c:s: opt; do\r
++    case "$opt" in\r
++      v) VERSION="$OPTARG";;\r
++      c) CORPUS="$OPTARG";;\r
++      s) SUFFIX="-$OPTARG";;\r
++    esac\r
++done\r
++shift `expr $OPTIND - 1`\r
++\r
++. ./test-lib.sh\r
++\r
++CORPUS=${CORPUS:-${TEST_DIRECTORY}/corpus}\r
++\r
++test_expect_code 0 "notmuch version specified on the command line" \\r
++    "test -n ${VERSION}"\r
++\r
++test_expect_code 0 "the specified version ${VERSION} refers to a commit" \\r
++    "git show ${VERSION} >/dev/null 2>&1"\r
++\r
++BUILD_DIR="notmuch-${VERSION}"\r
++test_expect_code 0 "generate snapshot of notmuch version ${VERSION}" \\r
++    "git -C $TEST_DIRECTORY/.. archive --prefix=${BUILD_DIR}/ --format=tar ${VERSION} | tar x"\r
++\r
++# force version string\r
++git describe --match '[0-9.]*' ${VERSION} > ${BUILD_DIR}/version\r
++\r
++test_expect_code 0 "configure and build notmuch version ${VERSION}" \\r
++    "make -C ${BUILD_DIR}"\r
++\r
++# use the newly built notmuch\r
++export PATH=./${BUILD_DIR}:$PATH\r
++\r
++test_begin_subtest "verify the newly built notmuch version"\r
++test_expect_equal "`notmuch --version`" "notmuch `cat ${BUILD_DIR}/version`"\r
++\r
++# replace the existing mails, if any, with the specified corpus\r
++rm -rf ${MAIL_DIR}\r
++cp -a ${CORPUS} ${MAIL_DIR}\r
++\r
++test_expect_code 0 "index the corpus" \\r
++    "notmuch new"\r
++\r
++# finally, wrap the resulting mail store and database in a tarball\r
++DBNAME=database${SUFFIX}\r
++cp -a ${MAIL_DIR} ${TMP_DIRECTORY}/${DBNAME}\r
++tar zcf ${TMP_DIRECTORY}/${DBNAME}.tar.gz -C ${TMP_DIRECTORY} ${DBNAME}\r
++mkdir -p  ${TEST_DIRECTORY}/test-databases\r
++cp -a ${TMP_DIRECTORY}/${DBNAME}.tar.gz ${TEST_DIRECTORY}/test-databases\r
++test_expect_code 0 "create the output tarball ${DBNAME}.tar.gz" \\r
++    "test -f ${TEST_DIRECTORY}/test-databases/${DBNAME}.tar.gz"\r
++\r
++test_done\r
+-- \r
+1.8.5.3\r
+\r