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 CFAEE431FCF for ; Sat, 22 Feb 2014 14:26:50 -0800 (PST) X-Virus-Scanned: Debian amavisd-new at olra.theworths.org X-Amavis-Alert: BAD HEADER SECTION, Duplicate header field: "References" X-Spam-Flag: NO X-Spam-Score: -0.7 X-Spam-Level: X-Spam-Status: No, score=-0.7 tagged_above=-999 required=5 tests=[RCVD_IN_DNSWL_LOW=-0.7] 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 2OUD2A5bdM4X for ; Sat, 22 Feb 2014 14:26:46 -0800 (PST) Received: from mail-ee0-f45.google.com (mail-ee0-f45.google.com [74.125.83.45]) (using TLSv1 with cipher RC4-SHA (128/128 bits)) (No client certificate requested) by olra.theworths.org (Postfix) with ESMTPS id D8A60429E27 for ; Sat, 22 Feb 2014 14:26:09 -0800 (PST) Received: by mail-ee0-f45.google.com with SMTP id e53so775548eek.4 for ; Sat, 22 Feb 2014 14:26:08 -0800 (PST) X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20130820; h=x-gm-message-state:from:to:cc:subject:date:message-id:in-reply-to :references:in-reply-to:references; bh=PeCyMLrcCScFrs4jrBvSfMGSBMQoSOQ4z1/td8hYeH8=; b=TwTYqGCSpMRBnqgjivWQKukK+ls5ZoAqaDgG5wkdt2mjTEpAq4++J+MeWhgW58VVvf lEgkJYXbF4HzvLrKXuHzHWEPLeFeP2jpk08SjC8hjqSzKpVf1kq/Uayda7QbJu5PG7Kh ldhyn/MTdiETe6tqq5XyztFM1SkHpu1vuXqwUy7AlVYsvupJGBla9JtjzckaoRHMjT/i q8AW6tBhkjgfERYuXs2fg9beT/UF1ZKeE/ntmVha9ziE1Y26seheqIShWQ6fxHet/+xk 1l2DLNIeD9+sGz+bdDRhWDNChaIK9w2vWTUUbmE3Ahawy0G2YDMrbU78T2OiBlYyiJ8K L1kw== X-Gm-Message-State: ALoCoQlPL7wLpqbGkjobU/83u8ktLwU63UepEMo4VIj8SUCZsxPzdEfquM7EedalZ0DhSpp38sGW X-Received: by 10.15.42.72 with SMTP id t48mr16371744eev.45.1393107968661; Sat, 22 Feb 2014 14:26:08 -0800 (PST) Received: from localhost (dsl-hkibrasgw2-58c36f-91.dhcp.inet.fi. [88.195.111.91]) by mx.google.com with ESMTPSA id 46sm43730780ees.4.2014.02.22.14.26.07 for (version=TLSv1.2 cipher=RC4-SHA bits=128/128); Sat, 22 Feb 2014 14:26:08 -0800 (PST) From: Jani Nikula To: notmuch@notmuchmail.org Subject: [PATCH v2 09/13] devel: add script to generate test databases Date: Sun, 23 Feb 2014 00:25:40 +0200 Message-Id: <1411feb2b6955ebaf4f5b4de9157e53f88e1bb1f.1393105055.git.jani@nikula.org> X-Mailer: git-send-email 1.8.5.3 In-Reply-To: References: In-Reply-To: References: 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, 22 Feb 2014 22:26:51 -0000 Add script to generate notmuch test databases using specified versions of notmuch. This is useful for generating material for database upgrade tests. This reuses the test infrastructure to have a sandbox environment for notmuch new etc. --- devel/gen-testdb.sh | 124 ++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 124 insertions(+) create mode 100755 devel/gen-testdb.sh diff --git a/devel/gen-testdb.sh b/devel/gen-testdb.sh new file mode 100755 index 000000000000..c291dfff98c9 --- /dev/null +++ b/devel/gen-testdb.sh @@ -0,0 +1,124 @@ +#!/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.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 +# +# 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 + +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" + +# finally, wrap the resulting mail store and database in a tarball +DBNAME=database${SUFFIX} +cp -a ${MAIL_DIR} ${TMP_DIRECTORY}/${DBNAME} +tar zcf ${TMP_DIRECTORY}/${DBNAME}.tar.gz -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" + +test_done -- 1.8.5.3