From c6bb09c4ac22ffa76f248ccca8285397cc46f12e Mon Sep 17 00:00:00 2001 From: Jim Porter Date: Wed, 7 Sep 2022 13:58:31 -0700 Subject: [PATCH] Fix a race condition in an Eshell test * test/lisp/eshell/esh-proc-tests.el (esh-proc-test/sigpipe-exits-process): Use "|&" when creating the pipeline to prevent an extra pipe process from being started. --- test/lisp/eshell/esh-proc-tests.el | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/test/lisp/eshell/esh-proc-tests.el b/test/lisp/eshell/esh-proc-tests.el index 52a0d1eeeb..abe363bee0 100644 --- a/test/lisp/eshell/esh-proc-tests.el +++ b/test/lisp/eshell/esh-proc-tests.el @@ -128,8 +128,10 @@ esh-proc-test/sigpipe-exits-process (eshell-match-command-output ;; The first command is like `yes' but slower. This is to prevent ;; it from taxing Emacs's process filter too much and causing a - ;; hang. - (concat "sh -c 'while true; do echo y; sleep 1; done' | " + ;; hang. Note that we use "|&" to connect the processes so that + ;; Emacs doesn't create an extra pipe process for the first "sh" + ;; invocation. + (concat "sh -c 'while true; do echo y; sleep 1; done' |& " "sh -c 'read NAME; echo ${NAME}'") "y\n") (eshell-wait-for-subprocess t) -- 2.25.1