+emacs_generate_script () {
+ # Construct a little test script here for the benefit of the user,
+ # (who can easily run "run_emacs" to get the same emacs environment
+ # for investigating any failures).
+ cat <<EOF >"$TMP_DIRECTORY/run_emacs"
+#!/bin/sh
+export PATH=$PATH
+export NOTMUCH_CONFIG=$NOTMUCH_CONFIG
+
+# Here's what we are using here:
+#
+# --no-init-file Don't load users ~/.emacs
+#
+# --no-site-file Don't load the site-wide startup stuff
+#
+# --directory Ensure that the local elisp sources are found
+#
+# --load Force loading of notmuch.el and test-lib.el
+
+emacs --no-init-file --no-site-file \
+ --directory "$TEST_DIRECTORY/../emacs" --load notmuch.el \
+ --directory "$TEST_DIRECTORY" --load test-lib.el \
+ "\$@"
+EOF
+ chmod a+x "$TMP_DIRECTORY/run_emacs"
+}
+
+test_emacs () {
+ if [ -z "$EMACS_SERVER" ]; then
+ EMACS_SERVER="notmuch-test-suite-$$"
+ "$TMP_DIRECTORY/run_emacs" \
+ --daemon \
+ --eval "(setq server-name \"$EMACS_SERVER\")" \
+ --eval "(orphan-watchdog $$)" || return
+ fi
+
+ emacsclient --socket-name="$EMACS_SERVER" --eval "(progn $@)"
+}
+
+