diff options
Diffstat (limited to 'test/lisp')
-rw-r--r-- | test/lisp/eshell/esh-proc-tests.el | 43 |
1 files changed, 43 insertions, 0 deletions
diff --git a/test/lisp/eshell/esh-proc-tests.el b/test/lisp/eshell/esh-proc-tests.el index 7f461d1813c..734bb91a6a5 100644 --- a/test/lisp/eshell/esh-proc-tests.el +++ b/test/lisp/eshell/esh-proc-tests.el @@ -28,6 +28,15 @@ (file-name-directory (or load-file-name default-directory)))) +(defvar esh-proc-test--detect-pty-cmd + (concat "sh -c '" + "if [ -t 0 ]; then echo stdin; fi; " + "if [ -t 1 ]; then echo stdout; fi; " + "if [ -t 2 ]; then echo stderr; fi" + "'")) + +;;; Tests: + (ert-deftest esh-proc-test/sigpipe-exits-process () "Test that a SIGPIPE is properly sent to a process if a pipe closes" (skip-unless (and (executable-find "sh") @@ -44,6 +53,40 @@ (eshell-wait-for-subprocess t) (should (eq (process-list) nil)))) +(ert-deftest esh-proc-test/pipeline-connection-type/no-pipeline () + "Test that all streams are PTYs when a command is not in a pipeline." + (skip-unless (executable-find "sh")) + (should (equal (eshell-test-command-result esh-proc-test--detect-pty-cmd) + ;; PTYs aren't supported on MS-Windows. + (unless (eq system-type 'windows-nt) + "stdin\nstdout\nstderr\n")))) + +(ert-deftest esh-proc-test/pipeline-connection-type/first () + "Test that only stdin is a PTY when a command starts a pipeline." + (skip-unless (and (executable-find "sh") + (executable-find "cat"))) + (should (equal (eshell-test-command-result + (concat esh-proc-test--detect-pty-cmd " | cat")) + (unless (eq system-type 'windows-nt) + "stdin\n")))) + +(ert-deftest esh-proc-test/pipeline-connection-type/middle () + "Test that all streams are pipes when a command is in the middle of a +pipeline." + (skip-unless (and (executable-find "sh") + (executable-find "cat"))) + (should (equal (eshell-test-command-result + (concat "echo | " esh-proc-test--detect-pty-cmd " | cat")) + nil))) + +(ert-deftest esh-proc-test/pipeline-connection-type/last () + "Test that only output streams are PTYs when a command ends a pipeline." + (skip-unless (executable-find "sh")) + (should (equal (eshell-test-command-result + (concat "echo | " esh-proc-test--detect-pty-cmd)) + (unless (eq system-type 'windows-nt) + "stdout\nstderr\n")))) + (ert-deftest esh-proc-test/kill-pipeline () "Test that killing a pipeline of processes only emits a single prompt. See bug#54136." |