[PATCH 2/2] test: emacs: run list-processes after accept-process-output in emacs 23.1

Subject: [PATCH 2/2] test: emacs: run list-processes after accept-process-output in emacs 23.1

Date: Sun, 5 Aug 2012 14:13:02 +0300

To: notmuch@notmuchmail.org

Cc: Tomi Ollila

From: Tomi Ollila


When running emacs tests using emacs 23.1.1 the tests block (until timeout)
when emacs function (notmuch-test-wait) is called.

There is an emacs bug #2930 titled:
23.0.92; `accept-process-output' and `sleep-for' do not run sentinel

It seems this is present in emacs 23.1.

Calling list-processes after accept-process-output seems work around
this problem; in case Emacs version is 23.1 a defadvice is activated
to do just that.
---

Thanks to Austin for the comments and IRC discussions on the matter.

 test/test-lib.el |    8 ++++++++
 1 files changed, 8 insertions(+), 0 deletions(-)

diff --git a/test/test-lib.el b/test/test-lib.el
index 52d9936..4330352 100644
--- a/test/test-lib.el
+++ b/test/test-lib.el
@@ -35,6 +35,16 @@
     "Disable yes-or-no-p before executing kill-emacs"
     (defun yes-or-no-p (prompt) t)))
 
+;; Emacs bug #2930:
+;;	23.0.92; `accept-process-output' and `sleep-for' do not run sentinels
+;; seems to be present in Emacs 23.1.
+;; Running `list-processes' after `accept-process-output' seems to work
+;; around this problem.
+(if (and (= emacs-major-version 23) (= emacs-minor-version 1))
+  (defadvice accept-process-output (after run-list-processes activate)
+    "run list-processes after executing accept-process-output"
+    (list-processes)))
+
 (defun notmuch-test-wait ()
   "Wait for process completion."
   (while (get-buffer-process (current-buffer))
-- 
1.7.1


Thread: