[Patch v5 2/8] test: add support for compiling and running C snippets
authorDavid Bremner <david@tethera.net>
Tue, 24 Mar 2015 13:19:40 +0000 (09:19 +2000)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:48:33 +0000 (14:48 -0700)
20/dfe9796f410399a1ab70563a17a0f7c5a7d532 [new file with mode: 0644]

diff --git a/20/dfe9796f410399a1ab70563a17a0f7c5a7d532 b/20/dfe9796f410399a1ab70563a17a0f7c5a7d532
new file mode 100644 (file)
index 0000000..29ed98e
--- /dev/null
@@ -0,0 +1,112 @@
+Return-Path: <bremner@tesseract.cs.unb.ca>\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 58538429E2E\r
+       for <notmuch@notmuchmail.org>; Tue, 24 Mar 2015 06:22:03 -0700 (PDT)\r
+X-Virus-Scanned: Debian amavisd-new at olra.theworths.org\r
+X-Spam-Flag: NO\r
+X-Spam-Score: 2.438\r
+X-Spam-Level: **\r
+X-Spam-Status: No, score=2.438 tagged_above=-999 required=5\r
+       tests=[DNS_FROM_AHBL_RHSBL=2.438] 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 Lud7isxwi-85 for <notmuch@notmuchmail.org>;\r
+       Tue, 24 Mar 2015 06:22:00 -0700 (PDT)\r
+Received: from mx.xen14.node3324.gplhost.com (gitolite.debian.net\r
+       [87.98.215.224])\r
+       (using TLSv1 with cipher DHE-RSA-AES128-SHA (128/128 bits))\r
+       (No client certificate requested)\r
+       by olra.theworths.org (Postfix) with ESMTPS id 8ADE4429E35\r
+       for <notmuch@notmuchmail.org>; Tue, 24 Mar 2015 06:21:57 -0700 (PDT)\r
+Received: from remotemail by mx.xen14.node3324.gplhost.com with local (Exim\r
+       4.80) (envelope-from <bremner@tesseract.cs.unb.ca>)\r
+       id 1YaOlY-0000q8-Mo; Tue, 24 Mar 2015 13:21:08 +0000\r
+Received: (nullmailer pid 32630 invoked by uid 1000); Tue, 24 Mar 2015\r
+       13:19:47 -0000\r
+From: David Bremner <david@tethera.net>\r
+To: David Bremner <david@tethera.net>, notmuch@notmuchmail.org\r
+Subject: [Patch v5 2/8] test: add support for compiling and running C snippets\r
+Date: Tue, 24 Mar 2015 09:19:40 -0400\r
+Message-Id: <1427203186-32194-2-git-send-email-david@tethera.net>\r
+X-Mailer: git-send-email 2.1.4\r
+In-Reply-To: <1427203186-32194-1-git-send-email-david@tethera.net>\r
+References: <1426352554-4383-10-git-send-email-david@tethera.net>\r
+       <1427203186-32194-1-git-send-email-david@tethera.net>\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, 24 Mar 2015 13:22:03 -0000\r
+\r
+This is to limit the copy-pasta involved in running C tests. I decided\r
+to keep things simple and not try to provide an actual C skeleton.\r
+\r
+The setting of LD_LIBRARY_PATH is to force using the built libnotmuch\r
+rather than any potential system one.\r
+---\r
+ test/README      |  5 +++++\r
+ test/test-lib.sh | 15 +++++++++++++++\r
+ 2 files changed, 20 insertions(+)\r
+\r
+diff --git a/test/README b/test/README\r
+index 81a1c82..5b40474 100644\r
+--- a/test/README\r
++++ b/test/README\r
+@@ -84,6 +84,11 @@ the tests in one of the following ways.\r
+       TEST_EMACS=my-special-emacs TEST_EMACSCLIENT=my-emacsclient ./emacs\r
+       make test TEST_EMACS=my-special-emacs TEST_EMACSCLIENT=my-emacsclient\r
\r
++Some tests may require a c compiler. You can choose the name and flags similarly \r
++to with emacs, e.g.\r
++\r
++     make test TEST_CC=gcc TEST_CFLAGS="-g -O2"\r
++     \r
+ Quiet Execution\r
+ ---------------\r
\r
+diff --git a/test/test-lib.sh b/test/test-lib.sh\r
+index 133fbe4..fdb84ea 100644\r
+--- a/test/test-lib.sh\r
++++ b/test/test-lib.sh\r
+@@ -73,6 +73,8 @@ if [[ ( -n "$TEST_EMACS" && -z "$TEST_EMACSCLIENT" ) || \\r
+ fi\r
+ TEST_EMACS=${TEST_EMACS:-${EMACS:-emacs}}\r
+ TEST_EMACSCLIENT=${TEST_EMACSCLIENT:-emacsclient}\r
++TEST_CC=${TEST_CC:-cc}\r
++TEST_CFLAGS=${TEST_CFLAGS:-"-g -O0"}\r
\r
+ # Protect ourselves from common misconfiguration to export\r
+ # CDPATH into the environment\r
+@@ -1161,6 +1163,19 @@ test_python() {\r
+               | $cmd -\r
+ }\r
\r
++test_C () {\r
++    exec_file="test${test_count}"\r
++    test_file="${exec_file}.c"\r
++    cat > ${test_file}\r
++    export LD_LIBRARY_PATH=${TEST_DIRECTORY}/../lib\r
++    ${TEST_CC} ${TEST_CFLAGS} -I${TEST_DIRECTORY}/../lib -o ${exec_file} ${test_file} -L${TEST_DIRECTORY}/../lib/ -lnotmuch -ltalloc\r
++    echo "== stdout ==" > OUTPUT.stdout\r
++    echo "== stderr ==" > OUTPUT.stderr\r
++    ./${exec_file} "$@" 1>>OUTPUT.stdout 2>>OUTPUT.stderr\r
++    sed "s,$(pwd),CWD,"  OUTPUT.stdout OUTPUT.stderr > OUTPUT\r
++}\r
++\r
++\r
+ # Creates a script that counts how much time it is executed and calls\r
+ # notmuch.  $notmuch_counter_command is set to the path to the\r
+ # generated script.  Use notmuch_counter_value() function to get the\r
+-- \r
+2.1.4\r
+\r