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

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

Date: Fri, 17 Aug 2012 14:55:00 -0400

To: Tomi Ollila

Cc: notmuch@notmuchmail.org

From: Austin Clements


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))

Thread: