Subject: ERT, buffers and windows (was: bug#52380: 28.0.50; [PATCH] run-python no longer focuses interpreter)

From: Kévin Le Gouguec <[email-masked]>
Date: Fri, 10 Dec 2021 21:09:30 +0100

Kévin Le Gouguec <[email-masked]> writes:

> Lars Ingebrigtsen <[email-masked]> writes:
>
>> Lars Ingebrigtsen <[email-masked]> writes:
>>
>>> Makes sense to me; pushed to emacs-28.
>>
>> But then I reverted it, because it led to a test failure, so could you
>> have a look at that?
>
> Well great; I meant to write a test case for that eventually.
>
> Assuming you mean python-tests--bug31398?  That's the one I'm seeing
> failing with my patch.
>
> I've banged my head on it for an hour now; I don't understand what's
> going on.  The test case is checking precisely what I was trying to fix,
> and for some reason the set-buffer I removed does something that the
> pop-to-buffer I replaced it with doesn't.
>
> What set-buffer does not, of course, is actually work in interactive
> usage 😒

If I amend the test as follows:

diff --git a/test/lisp/progmodes/python-tests.el b/test/lisp/progmodes/python-tests.el
index 15bda5c197..783f115fc7 100644
--- a/test/lisp/progmodes/python-tests.el
+++ b/test/lisp/progmodes/python-tests.el
@@ -5454,6 +5454,7 @@ python-tests--bug31398
   "Test for https://debbugs.gnu.org/31398 ."
   (skip-unless (executable-find python-tests-shell-interpreter))
   (let ((buffer (process-buffer (run-python nil nil 'show))))
+    (should (eq (get-buffer-window buffer) (selected-window)))
     (should (eq buffer (current-buffer)))
     (pop-to-buffer (other-buffer))
     (run-python nil nil 'show)

… then (should (eq (get-buffer-window buffer) (selected-window)))
passes, but (should (eq buffer (current-buffer))) does not.  Does that
make sense to anyone?