[Patch v6 2/8] test: add support for compiling and running C snippets
authorDavid Bremner <david@tethera.net>
Fri, 27 Mar 2015 22:11:54 +0000 (23:11 +0100)
committerW. Trevor King <wking@tremily.us>
Sat, 20 Aug 2016 21:48:36 +0000 (14:48 -0700)
ab/e2122380afe43d6f1850f739dd2669709fce70 [new file with mode: 0644]

diff --git a/ab/e2122380afe43d6f1850f739dd2669709fce70 b/ab/e2122380afe43d6f1850f739dd2669709fce70
new file mode 100644 (file)
index 0000000..105222c
--- /dev/null
@@ -0,0 +1,111 @@
+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 541B4429E34\r
+       for <notmuch@notmuchmail.org>; Fri, 27 Mar 2015 15:14:40 -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 7-O1+Nd+aMQf for <notmuch@notmuchmail.org>;\r
+       Fri, 27 Mar 2015 15:14:39 -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 915E1429E30\r
+       for <notmuch@notmuchmail.org>; Fri, 27 Mar 2015 15:14:39 -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 1YbcVn-0000FW-IF; Fri, 27 Mar 2015 22:13:55 +0000\r
+Received: (nullmailer pid 1809 invoked by uid 1000); Fri, 27 Mar 2015\r
+       22:12:15 -0000\r
+From: David Bremner <david@tethera.net>\r
+To: notmuch@notmuchmail.org\r
+Subject: [Patch v6 2/8] test: add support for compiling and running C snippets\r
+Date: Fri, 27 Mar 2015 23:11:54 +0100\r
+Message-Id: <1427494320-1483-3-git-send-email-david@tethera.net>\r
+X-Mailer: git-send-email 2.1.4\r
+In-Reply-To: <1427494320-1483-1-git-send-email-david@tethera.net>\r
+References: <1427494320-1483-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: Fri, 27 Mar 2015 22:14:40 -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..486d1c4 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,g"  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