From 2b0d3d2aa886a482bb0e5546ec27fef47f9d34b0 Mon Sep 17 00:00:00 2001 From: Tom Gillespie Date: Wed, 29 Jun 2022 13:26:06 -0700 Subject: [PATCH 1/2] test/src/process-tests.el: test make-process stderr query/cleanup * test/src/process-tests.el (make-process/query-stderr): Added to ensure :query-stderr behaves as expected. * test/src/process-tests.el (make-process/cleanup-stderrproc): Added to ensure that make-process correctly cleans up/never creates stderrproc in the event of an early exit/error. --- test/src/process-tests.el | 65 +++++++++++++++++++++++++++++++++++++++ 1 file changed, 65 insertions(+) diff --git a/test/src/process-tests.el b/test/src/process-tests.el index 824c6da119..50159ab46b 100644 --- a/test/src/process-tests.el +++ b/test/src/process-tests.el @@ -233,6 +233,71 @@ make-process/noquery-stderr (should-not (process-query-on-exit-flag process)))) (kill-process process)))))) +(ert-deftest make-process/query-stderr () + (skip-unless (executable-find "bash")) + (let ((stderr-buffer (generate-new-buffer " rc stderr"))) + (unwind-protect + (let ((process + (make-process + :name "process that never actually starts" + :stderr stderr-buffer + :command '("bash" "-c" "echo stdout; echo stderr 1>&2;")))) + (while (accept-process-output (get-buffer-process (process-buffer process))))) + (let ((stderrproc (get-buffer-process stderr-buffer))) + (should stderrproc) + (should-not (process-query-on-exit-flag stderrproc))) + (should (get-buffer-process stderr-buffer)) + (kill-buffer stderr-buffer)) + (should-not (buffer-live-p stderr-buffer))) + + (let ((stderr-buffer (generate-new-buffer " rc stderr"))) + (unwind-protect + (let ((process + (make-process + :name "process that never actually starts" + :stderr stderr-buffer + :query-stderr t + :command '("bash" "-c" "echo stdout; echo stderr 1>&2;")))) + (while (accept-process-output (get-buffer-process (process-buffer process))))) + (let ((stderrproc (get-buffer-process stderr-buffer))) + (should stderrproc) + (should (process-query-on-exit-flag stderrproc))) + (while (accept-process-output (get-buffer-process stderr-buffer))) + (should-not (get-buffer-process stderr-buffer)) + (kill-buffer stderr-buffer)) + (should-not (buffer-live-p stderr-buffer)))) + +(ert-deftest make-process/cleanup-stderrproc () + "ensure stderrproc is cleaned up/never created if `make-process' fails" + (should-error + (let ((stderr-buffer (generate-new-buffer " rc stderr"))) + (unwind-protect + (let ((process + (make-process + :name "process that never actually starts" + :stderr stderr-buffer + :query-stderr t + :command '("i_fail_before_there_can_be_a_return_code"))))) + (should-not (get-buffer-process stderr-buffer)) + (kill-buffer stderr-buffer)) + (should-not (buffer-live-p stderr-buffer)))) + + (should-error + (let ((stderr-buffer (generate-new-buffer " rc stderr"))) + (unwind-protect + (let ((process + (make-process + :name "process that never actually starts" + :stderr stderr-buffer + :query-stderr t + :command '("i_fail_before_there_can_be_a_return_code")))) + (message "this will never print because we never get here") + (while (accept-process-output process))) + (should-not (get-buffer-process stderr-buffer)) + (while (accept-process-output (get-buffer-process stderr-buffer))) + (kill-buffer stderr-buffer)) + (should-not (buffer-live-p stderr-buffer))))) + ;; Return t if OUTPUT could have been generated by merging the INPUTS somehow. (defun process-tests--mixable (output &rest inputs) (while (and output (let ((ins inputs)) -- 2.35.1