test/emacs: replace the use of process-attributes with signal-process
authorDavid Bremner <david@tethera.net>
Sat, 11 Jan 2014 17:25:39 +0000 (13:25 -0400)
committerDavid Bremner <david@tethera.net>
Sun, 12 Jan 2014 21:08:14 +0000 (17:08 -0400)
In some environments (at least Hurd), process-attributes is
unimplimented and always returns nil.  This ends up causing test
failures (see e.g. id:87a9ffofsc.fsf@zancas.localnet).

Historically and according to POSIX 1003.1-2001, a signal of 0 can be
used to check the validity of a pid. This seems less heinous than
parsing the output of ps(1).

test/test-lib.el

index d26b49f7551f1cd3bc159e241f64976e5e37db58..37fcb3d0e19dd845fa5cbf202fce63cf2df60811 100644 (file)
@@ -77,19 +77,22 @@ invisible text."
        (setq start next-pos)))
     str))
 
+;; process-attributes is not defined everywhere, so define an
+;; alternate way to test if a process still exists.
+
+(defun test-process-running (pid)
+  (= 0
+   (signal-process pid 0)))
+
 (defun orphan-watchdog-check (pid)
   "Periodically check that the process with id PID is still
 running, quit if it terminated."
-  (if (not (process-attributes pid))
+  (if (not (test-process-running pid))
       (kill-emacs)))
 
 (defun orphan-watchdog (pid)
   "Initiate orphan watchdog check."
-  ; If process-attributes returns nil right away, that probably means
-  ; it is unimplimented. So we delay two minutes before killing emacs.
-  (if (process-attributes pid)
-      (run-at-time 60 60 'orphan-watchdog-check pid)
-    (run-at-time 120 60 'orphan-watchdog-check pid)))
+  (run-at-time 60 60 'orphan-watchdog-check pid))
 
 (defun hook-counter (hook)
   "Count how many times a hook is called.  Increments