[PATCH 1/2] test: factor out part of test-lib.sh into test-lib-common.sh
authordavid <david@tethera.net>
Tue, 20 Nov 2012 02:23:19 +0000 (22:23 +2000)
committerW. Trevor King <wking@tremily.us>
Fri, 7 Nov 2014 17:50:45 +0000 (09:50 -0800)
a6/85e401ae94d376ac72d5d8608e3dcdb5e68a21 [new file with mode: 0644]

diff --git a/a6/85e401ae94d376ac72d5d8608e3dcdb5e68a21 b/a6/85e401ae94d376ac72d5d8608e3dcdb5e68a21
new file mode 100644 (file)
index 0000000..94bf87e
--- /dev/null
@@ -0,0 +1,361 @@
+Return-Path: <bremner@tethera.net>\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 1B3BE431FC4\r
+       for <notmuch@notmuchmail.org>; Mon, 19 Nov 2012 18:23:42 -0800 (PST)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 0\r
+X-Spam-Level: \r
+X-Spam-Status: No, score=0 tagged_above=-999 required=5 tests=[none]\r
+       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 l82lhS++ovoF for <notmuch@notmuchmail.org>;\r
+       Mon, 19 Nov 2012 18:23:40 -0800 (PST)\r
+Received: from tesseract.cs.unb.ca (tesseract.cs.unb.ca [131.202.240.238])\r
+       (using TLSv1 with cipher AES256-SHA (256/256 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 70087431FC2\r
+       for <notmuch@notmuchmail.org>; Mon, 19 Nov 2012 18:23:40 -0800 (PST)\r
+Received: from fctnnbsc30w-156034089108.dhcp-dynamic.fibreop.nb.bellaliant.net\r
+       ([156.34.89.108] helo=zancas.localnet)\r
+       by tesseract.cs.unb.ca with esmtpsa\r
+       (TLS1.0:DHE_RSA_AES_128_CBC_SHA1:16) (Exim 4.72)\r
+       (envelope-from <bremner@tethera.net>)\r
+       id 1TadUu-0004EN-HH; Mon, 19 Nov 2012 22:23:39 -0400\r
+Received: from bremner by zancas.localnet with local (Exim 4.80)\r
+       (envelope-from <bremner@tethera.net>)\r
+       id 1TadUo-0007SH-8l; Mon, 19 Nov 2012 22:23:30 -0400\r
+From: david@tethera.net\r
+To: notmuch@notmuchmail.org\r
+Subject: [PATCH 1/2] test: factor out part of test-lib.sh into\r
+       test-lib-common.sh\r
+Date: Mon, 19 Nov 2012 22:23:19 -0400\r
+Message-Id: <1353378200-28625-1-git-send-email-david@tethera.net>\r
+X-Mailer: git-send-email 1.7.10.4\r
+In-Reply-To: <1353188234-29666-1-git-send-email-david@tethera.net>\r
+References: <1353188234-29666-1-git-send-email-david@tethera.net>\r
+X-Spam_bar: -\r
+Cc: David Bremner <bremner@debian.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: Tue, 20 Nov 2012 02:23:42 -0000\r
+\r
+From: David Bremner <bremner@debian.org>\r
+\r
+The idea is to use some of the simpler parts of the test suite\r
+infrastructure to help run performance tests.\r
+---\r
+ test/test-lib-common.sh |  147 +++++++++++++++++++++++++++++++++++++++++++++++\r
+ test/test-lib.sh        |  129 +----------------------------------------\r
+ 2 files changed, 148 insertions(+), 128 deletions(-)\r
+ create mode 100644 test/test-lib-common.sh\r
+\r
+diff --git a/test/test-lib-common.sh b/test/test-lib-common.sh\r
+new file mode 100644\r
+index 0000000..e1eaa5a\r
+--- /dev/null\r
++++ b/test/test-lib-common.sh\r
+@@ -0,0 +1,147 @@\r
++#\r
++# Copyright (c) 2005 Junio C Hamano\r
++#\r
++# This program is free software: you can redistribute it and/or modify\r
++# it under the terms of the GNU General Public License as published by\r
++# the Free Software Foundation, either version 2 of the License, or\r
++# (at your option) any later version.\r
++#\r
++# This program is distributed in the hope that it will be useful,\r
++# but WITHOUT ANY WARRANTY; without even the implied warranty of\r
++# MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the\r
++# GNU General Public License for more details.\r
++#\r
++# You should have received a copy of the GNU General Public License\r
++# along with this program.  If not, see http://www.gnu.org/licenses/ .\r
++\r
++# This file contains common code to be used by both the regular\r
++# (correctness) tests and the performance tests.\r
++\r
++find_notmuch_path ()\r
++{\r
++    dir="$1"\r
++\r
++    while [ -n "$dir" ]; do\r
++      bin="$dir/notmuch"\r
++      if [ -x "$bin" ]; then\r
++          echo "$dir"\r
++          return\r
++      fi\r
++      dir="$(dirname "$dir")"\r
++      if [ "$dir" = "/" ]; then\r
++          break\r
++      fi\r
++    done\r
++}\r
++\r
++# Test the binaries we have just built.  The tests are kept in\r
++# test/ subdirectory and are run in 'trash directory' subdirectory.\r
++TEST_DIRECTORY=$(pwd)\r
++notmuch_path=`find_notmuch_path "$TEST_DIRECTORY"`\r
++if test -n "$valgrind"\r
++then\r
++      make_symlink () {\r
++              test -h "$2" &&\r
++              test "$1" = "$(readlink "$2")" || {\r
++                      # be super paranoid\r
++                      if mkdir "$2".lock\r
++                      then\r
++                              rm -f "$2" &&\r
++                              ln -s "$1" "$2" &&\r
++                              rm -r "$2".lock\r
++                      else\r
++                              while test -d "$2".lock\r
++                              do\r
++                                      say "Waiting for lock on $2."\r
++                                      sleep 1\r
++                              done\r
++                      fi\r
++              }\r
++      }\r
++\r
++      make_valgrind_symlink () {\r
++              # handle only executables\r
++              test -x "$1" || return\r
++\r
++              base=$(basename "$1")\r
++              symlink_target=$TEST_DIRECTORY/../$base\r
++              # do not override scripts\r
++              if test -x "$symlink_target" &&\r
++                  test ! -d "$symlink_target" &&\r
++                  test "#!" != "$(head -c 2 < "$symlink_target")"\r
++              then\r
++                      symlink_target=$TEST_DIRECTORY/valgrind.sh\r
++              fi\r
++              case "$base" in\r
++              *.sh|*.perl)\r
++                      symlink_target=$TEST_DIRECTORY/unprocessed-script\r
++              esac\r
++              # create the link, or replace it if it is out of date\r
++              make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit\r
++      }\r
++\r
++      # override notmuch executable in TEST_DIRECTORY/..\r
++      GIT_VALGRIND=$TEST_DIRECTORY/valgrind\r
++      mkdir -p "$GIT_VALGRIND"/bin\r
++      make_valgrind_symlink $TEST_DIRECTORY/../notmuch\r
++      OLDIFS=$IFS\r
++      IFS=:\r
++      for path in $PATH\r
++      do\r
++              ls "$path"/notmuch 2> /dev/null |\r
++              while read file\r
++              do\r
++                      make_valgrind_symlink "$file"\r
++              done\r
++      done\r
++      IFS=$OLDIFS\r
++      PATH=$GIT_VALGRIND/bin:$PATH\r
++      GIT_EXEC_PATH=$GIT_VALGRIND/bin\r
++      export GIT_VALGRIND\r
++      test -n "$notmuch_path" && MANPATH="$notmuch_path/man:$MANPATH"\r
++else # normal case\r
++      if test -n "$notmuch_path"\r
++              then\r
++                      PATH="$notmuch_path:$PATH"\r
++                      MANPATH="$notmuch_path/man:$MANPATH"\r
++              fi\r
++fi\r
++export PATH MANPATH\r
++\r
++# Test repository\r
++test="tmp.$(basename "$0" .sh)"\r
++test -n "$root" && test="$root/$test"\r
++case "$test" in\r
++/*) TMP_DIRECTORY="$test" ;;\r
++ *) TMP_DIRECTORY="$TEST_DIRECTORY/$test" ;;\r
++esac\r
++test ! -z "$debug" || remove_tmp=$TMP_DIRECTORY\r
++rm -fr "$test" || {\r
++      GIT_EXIT_OK=t\r
++      echo >&5 "FATAL: Cannot prepare test area"\r
++      exit 1\r
++}\r
++\r
++# A temporary home directory is needed by at least:\r
++# - emacs/"Sending a message via (fake) SMTP"\r
++# - emacs/"Reply within emacs"\r
++# - crypto/emacs_deliver_message\r
++export HOME="${TMP_DIRECTORY}/home"\r
++mkdir -p "${HOME}"\r
++\r
++MAIL_DIR="${TMP_DIRECTORY}/mail"\r
++export GNUPGHOME="${TMP_DIRECTORY}/gnupg"\r
++export NOTMUCH_CONFIG="${TMP_DIRECTORY}/notmuch-config"\r
++\r
++mkdir -p "${test}"\r
++mkdir -p "${MAIL_DIR}"\r
++\r
++cat <<EOF >"${NOTMUCH_CONFIG}"\r
++[database]\r
++path=${MAIL_DIR}\r
++\r
++[user]\r
++name=Notmuch Test Suite\r
++primary_email=test_suite@notmuchmail.org\r
++other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org\r
++EOF\r
+diff --git a/test/test-lib.sh b/test/test-lib.sh\r
+index e7638be..6548b29 100644\r
+--- a/test/test-lib.sh\r
++++ b/test/test-lib.sh\r
+@@ -1070,134 +1070,7 @@ test_init_ () {\r
+ }\r
\r
\r
+-find_notmuch_path ()\r
+-{\r
+-    dir="$1"\r
+-\r
+-    while [ -n "$dir" ]; do\r
+-      bin="$dir/notmuch"\r
+-      if [ -x "$bin" ]; then\r
+-          echo "$dir"\r
+-          return\r
+-      fi\r
+-      dir="$(dirname "$dir")"\r
+-      if [ "$dir" = "/" ]; then\r
+-          break\r
+-      fi\r
+-    done\r
+-}\r
+-\r
+-# Test the binaries we have just built.  The tests are kept in\r
+-# test/ subdirectory and are run in 'trash directory' subdirectory.\r
+-TEST_DIRECTORY=$(pwd)\r
+-notmuch_path=`find_notmuch_path "$TEST_DIRECTORY"`\r
+-if test -n "$valgrind"\r
+-then\r
+-      make_symlink () {\r
+-              test -h "$2" &&\r
+-              test "$1" = "$(readlink "$2")" || {\r
+-                      # be super paranoid\r
+-                      if mkdir "$2".lock\r
+-                      then\r
+-                              rm -f "$2" &&\r
+-                              ln -s "$1" "$2" &&\r
+-                              rm -r "$2".lock\r
+-                      else\r
+-                              while test -d "$2".lock\r
+-                              do\r
+-                                      say "Waiting for lock on $2."\r
+-                                      sleep 1\r
+-                              done\r
+-                      fi\r
+-              }\r
+-      }\r
+-\r
+-      make_valgrind_symlink () {\r
+-              # handle only executables\r
+-              test -x "$1" || return\r
+-\r
+-              base=$(basename "$1")\r
+-              symlink_target=$TEST_DIRECTORY/../$base\r
+-              # do not override scripts\r
+-              if test -x "$symlink_target" &&\r
+-                  test ! -d "$symlink_target" &&\r
+-                  test "#!" != "$(head -c 2 < "$symlink_target")"\r
+-              then\r
+-                      symlink_target=$TEST_DIRECTORY/valgrind.sh\r
+-              fi\r
+-              case "$base" in\r
+-              *.sh|*.perl)\r
+-                      symlink_target=$TEST_DIRECTORY/unprocessed-script\r
+-              esac\r
+-              # create the link, or replace it if it is out of date\r
+-              make_symlink "$symlink_target" "$GIT_VALGRIND/bin/$base" || exit\r
+-      }\r
+-\r
+-      # override notmuch executable in TEST_DIRECTORY/..\r
+-      GIT_VALGRIND=$TEST_DIRECTORY/valgrind\r
+-      mkdir -p "$GIT_VALGRIND"/bin\r
+-      make_valgrind_symlink $TEST_DIRECTORY/../notmuch\r
+-      OLDIFS=$IFS\r
+-      IFS=:\r
+-      for path in $PATH\r
+-      do\r
+-              ls "$path"/notmuch 2> /dev/null |\r
+-              while read file\r
+-              do\r
+-                      make_valgrind_symlink "$file"\r
+-              done\r
+-      done\r
+-      IFS=$OLDIFS\r
+-      PATH=$GIT_VALGRIND/bin:$PATH\r
+-      GIT_EXEC_PATH=$GIT_VALGRIND/bin\r
+-      export GIT_VALGRIND\r
+-      test -n "$notmuch_path" && MANPATH="$notmuch_path/man:$MANPATH"\r
+-else # normal case\r
+-      if test -n "$notmuch_path"\r
+-              then\r
+-                      PATH="$notmuch_path:$PATH"\r
+-                      MANPATH="$notmuch_path/man:$MANPATH"\r
+-              fi\r
+-fi\r
+-export PATH MANPATH\r
+-\r
+-# Test repository\r
+-test="tmp.$(basename "$0" .sh)"\r
+-test -n "$root" && test="$root/$test"\r
+-case "$test" in\r
+-/*) TMP_DIRECTORY="$test" ;;\r
+- *) TMP_DIRECTORY="$TEST_DIRECTORY/$test" ;;\r
+-esac\r
+-test ! -z "$debug" || remove_tmp=$TMP_DIRECTORY\r
+-rm -fr "$test" || {\r
+-      GIT_EXIT_OK=t\r
+-      echo >&5 "FATAL: Cannot prepare test area"\r
+-      exit 1\r
+-}\r
+-\r
+-# A temporary home directory is needed by at least:\r
+-# - emacs/"Sending a message via (fake) SMTP"\r
+-# - emacs/"Reply within emacs"\r
+-# - crypto/emacs_deliver_message\r
+-export HOME="${TMP_DIRECTORY}/home"\r
+-mkdir -p "${HOME}"\r
+-\r
+-MAIL_DIR="${TMP_DIRECTORY}/mail"\r
+-export GNUPGHOME="${TMP_DIRECTORY}/gnupg"\r
+-export NOTMUCH_CONFIG="${TMP_DIRECTORY}/notmuch-config"\r
+-\r
+-mkdir -p "${test}"\r
+-mkdir -p "${MAIL_DIR}"\r
+-\r
+-cat <<EOF >"${NOTMUCH_CONFIG}"\r
+-[database]\r
+-path=${MAIL_DIR}\r
+-\r
+-[user]\r
+-name=Notmuch Test Suite\r
+-primary_email=test_suite@notmuchmail.org\r
+-other_email=test_suite_other@notmuchmail.org;test_suite@otherdomain.org\r
+-EOF\r
++. test-lib-common.sh\r
\r
+ emacs_generate_script\r
\r
+-- \r
+1.7.10.4\r
+\r