]> git.eshelyaron.com Git - emacs.git/commitdiff
Fix server-tests run noninteractively (bug#59742)
authorMattias Engdegård <mattiase@acm.org>
Fri, 2 Dec 2022 16:27:16 +0000 (17:27 +0100)
committerMattias Engdegård <mattiase@acm.org>
Fri, 2 Dec 2022 16:32:22 +0000 (17:32 +0100)
This may or may not fix the test run from CI.

* test/lisp/server-tests.el (server-tests/can-create-frames-p):
Don't attempt to create frames if TERM=dumb, which what we have
if run from M-x compile (for instance).
(server-tests/server-force-stop/keeps-frames): Delete created frame so
that it doesn't cause trouble for other tests.

test/lisp/server-tests.el

index f8ecd046f2b01a8073c95fffcafc98a25907c0b0..c7813e2aefc3190b9194ef6ba26fecd60eb046d2 100644 (file)
 
 (require 'ert)
 (require 'server)
+(require 'cl-lib)
 
 (defconst server-tests/can-create-frames-p
-  (not (memq system-type '(windows-nt ms-dos)))
+  (and (not (memq system-type '(windows-nt ms-dos)))
+       ;; TERM=dumb is what we get when running from `compile'.
+       (not (equal (getenv "TERM") "dumb")))
   "Non-nil if we can create a new frame in the tests.
 Some tests below need to create new frames for the emacsclient.
 However, this doesn't work on all platforms.  In particular,
@@ -188,8 +191,9 @@ tests that `server-force-stop' doesn't delete frames (and even
 then, requires a few tricks to run as a regression test).  So
 long as this works, the problem in bug#58877 shouldn't occur."
   (skip-unless server-tests/can-create-frames-p)
-  (let ((starting-frame-count (length (frame-list)))
-        terminal)
+  (let* ((starting-frames (frame-list))
+         (starting-frame-count (length starting-frames))
+         terminal)
     (unwind-protect
         (server-tests/with-server
           (server-tests/with-client emacsclient '("-c") 'exit
@@ -214,6 +218,9 @@ long as this works, the problem in bug#58877 shouldn't occur."
       (when (and terminal
                  (eq (terminal-live-p terminal) t)
                  (not (eq system-type 'windows-nt)))
-        (delete-terminal terminal)))))
+        (delete-terminal terminal)))
+    ;; Delete the created frame.
+    (delete-frame (car (cl-set-difference (frame-list) starting-frames))
+                  t)))
 
 ;;; server-tests.el ends here