bug-gnu-emacs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

bug#58877: 29.0.50; [PATCH] When killing Emacs from a client frame with


From: Jim Porter
Subject: bug#58877: 29.0.50; [PATCH] When killing Emacs from a client frame with no other frames, Emacs shows a useless error prompt
Date: Sat, 26 Nov 2022 12:17:59 -0800

On 11/26/2022 11:45 AM, Eli Zaretskii wrote:
Date: Sat, 26 Nov 2022 11:04:48 -0800
Cc: 58877@debbugs.gnu.org
From: Jim Porter <jporterbugs@gmail.com>

I think you need to modify the tests to ensure the server file is created in
a temporary directory.  And keep in mind that the variable which affects
that is different depending on whether server-use-tcp is or isn't non-nil.

Hm, I'm surprised the tests failed again for you then. Both of the
patches I posted to fix the tests set the 'server-name' to a (hopefully)
unique value.

Still, I think it's a good idea to use a temporary directory to hold the
server file, so here's a patch that does that. I've tried this patch
with a production Emacs server running at the same time in several
different configurations (with 'server-use-tcp' on and off, and with
--daemon), and the tests all pass locally for me on GNU/Linux.

Still fails, and here's why:

     Client output: d:\gnu\git\emacs\trunk\lib-src\emacsclient.exe: 
unrecognized option '--socket-name'
                    Try 'd:\gnu\git\emacs\trunk\lib-src\emacsclient.exe --help' 
for more information

                    Process d:/gnu/git/emacs/trunk/lib-src/emacsclient exited 
abnormally with code 1

There's no --socket-name switch on MS-Windows; you need to use --server-file
instead.

Ah ha, that explains it. I didn't realize that distinction.

If I change server-tests/start-client to use --server-file, the next problem
rears its ugly head:

     Client output: *ERROR*: Not using an ASCII terminal now; cannot make a new 
ASCII frame

                    Process d:/gnu/git/emacs/trunk/lib-src/emacsclient exited 
abnormally with code 1

This is because emacsclient on Windows cannot create new terminal frames,
only new GUI frames, unless Emacs was started as "emacs -nw".

Why do these tests need TTY frames?

The test code just calls "emacsclient -c", and they should be happy with any kind of frame, TTY or GUI. I guess that by running in batch mode, Emacs will try to create TTY frames, but that fails on MS Windows?

Btw, with the above changes, only 3 tests fail:

   3 unexpected results:
      FAILED  server-tests/emacsclient/create-frame
      FAILED  server-tests/server-force-stop/keeps-frames
      FAILED  server-tests/server-start/stop-prompt-with-client

So this is progress, thanks.

All these tests involve creating client frames, so that makes sense. I'm not sure how to coax Emacs into creating GUI frames on MS Windows for these tests though. Still, I don't think these failures are a sign of anything broken exactly; it's just the combination of MS Windows' limitations with trying to create frames in an Emacs batch session.

Unless you have an idea for how to fix that (I've got no clue, unfortunately), how about just skipping these tests on MS Windows, with a comment explaining what the limitation is?





reply via email to

[Prev in Thread] Current Thread [Next in Thread]