summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorIoannis Kappas <ioannis.kappas@gmail.com>2021-02-03 22:50:54 +0000
committerEli Zaretskii <eliz@gnu.org>2021-02-06 20:18:57 +0200
commitd640ec27183c9424daaf2d5dcb683ed1ff39d036 (patch)
tree602bc1e2f789a1b245fc61a9bd0209b3549de921
parentb76864ef5513a9c1f7fe1138266dfab47f6fe350 (diff)
downloademacs-d640ec27183c9424daaf2d5dcb683ed1ff39d036.tar.gz
New test for src/process.c on MS-Windows
* test/src/process-tests.el (process-sentinel-interrupt-event): New test. (Bug#46284) Copyright-paperwork-exempt: yes
-rw-r--r--test/src/process-tests.el29
1 files changed, 29 insertions, 0 deletions
diff --git a/test/src/process-tests.el b/test/src/process-tests.el
index a3fba8d328b..950d0814c2a 100644
--- a/test/src/process-tests.el
+++ b/test/src/process-tests.el
@@ -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