]> git.eshelyaron.com Git - emacs.git/commitdiff
New test for src/process.c on MS-Windows
authorIoannis Kappas <ioannis.kappas@gmail.com>
Wed, 3 Feb 2021 22:50:54 +0000 (22:50 +0000)
committerEli Zaretskii <eliz@gnu.org>
Sat, 6 Feb 2021 18:18:57 +0000 (20:18 +0200)
* test/src/process-tests.el (process-sentinel-interrupt-event):
New test.  (Bug#46284)

Copyright-paperwork-exempt: yes

test/src/process-tests.el

index a3fba8d328b622b0326357f8a76e9c1d54e5c222..950d0814c2a091cdf5699084da9a7ac3267e078c 100644 (file)
@@ -879,5 +879,34 @@ Return nil if FILENAME doesn't exist."
          (file-regular-p filename)
          filename)))
 
+;; Bug#46284
+(ert-deftest process-sentinel-interrupt-event ()
+  "Test that interrupting a process on MS-Windows sends the
+  \"interrupt\" event to the process sentinel."
+  (skip-unless (eq system-type 'windows-nt))
+  (with-temp-buffer
+    (let* ((proc-buf (current-buffer))
+          ;; Start a new emacs process to wait idly until interrupted.
+          (cmd "emacs -batch --eval=\"(sit-for 50000)\"")
+          (proc (start-file-process-shell-command
+                  "test/process-sentinel-signal-event" proc-buf cmd))
+          (events '()))
+
+      ;; Capture any incoming events.
+      (set-process-sentinel proc
+                            (lambda (proc event)
+                             (push event events)))
+      ;; Wait for the process to start.
+      (sleep-for 2)
+      (should (equal 'run (process-status proc)))
+      ;; Interrupt the sub-process and wait for it to die.
+      (interrupt-process proc)
+      (sleep-for 2)
+      ;; Should have received SIGINT...
+      (should (equal 'signal (process-status proc)))
+      (should (equal 2 (process-exit-status proc)))
+      ;; ...and the change description should be "interrupt".
+      (should (equal '("interrupt\n") events)))))
+
 (provide 'process-tests)
 ;;; process-tests.el ends here