Quoth Tomi Ollila on Aug 16 at 10:44 am: > On Mon, Aug 13 2012, Austin Clements <amdragon@MIT.EDU> wrote: > > > Quoth Tomi Ollila on Aug 05 at 2:13 pm: > >> 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. > > > > Should this workaround perhaps go in notmuch-test-wait directly, > > instead of being implemented as advice? > > This way the fact that this is workaround for bug that exists only in > 23.1(*) is emphasized; The notmuch-test-wait can exist in a (simpler) > format where it doesn't need to know about this bug. Okay. > (*) This bug probably exists in emacs 22 but the MUA has not worked > on emacs 22 at least for a year now. > > > If we do want to keep it as advice, should it go in notmuch-lib.el > > along with the few other compatibility functions? > > In tests we have fixed environment where we can write workarounds > as "global" advices. If we did this in notmuch-lib.el we'd be changing > users' environment, possibly causing surprises... Oh, right, of course. I'd forgotten that this was in test-lib.el and not in the general notmuch Emacs code. > ... but neither sleep-for or accept-process-output are used in > any of the notmuch elisp code so such "fixes" are not needed now... > > ... and this would ever be a problem, we might already support only > emacs 24 or newer >;) ... > > Tomi Series LGTM. > >> --- > >> > >> 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))