diff options
author | Jim Porter <jporterbugs@gmail.com> | 2023-01-22 22:54:53 -0800 |
---|---|---|
committer | Jim Porter <jporterbugs@gmail.com> | 2023-01-23 09:48:09 -0800 |
commit | 7f438ff543b7bd83cee6c75be1d16abc1215d37f (patch) | |
tree | ddca7acf2572a39268ce5d6ead0182861f8b2e80 | |
parent | cb9628373a8dcb5ace0cb8fcc7b636dea39b5703 (diff) | |
download | emacs-7f438ff543b7bd83cee6c75be1d16abc1215d37f.tar.gz emacs-7f438ff543b7bd83cee6c75be1d16abc1215d37f.tar.bz2 emacs-7f438ff543b7bd83cee6c75be1d16abc1215d37f.zip |
Don't try to make a pipe process for remote processes in Eshell
Tramp currently isn't able to handle this, so the result will just
produce an error (bug#61024).
* lisp/eshell/esh-proc.el (eshell-gather-process-output): Check for a
remote 'default-directory' before trying to make a pipe process.
* test/lisp/eshell/esh-proc-tests.el
(esh-var-test/output/remote-redirect): New test.
-rw-r--r-- | lisp/eshell/esh-proc.el | 9 | ||||
-rw-r--r-- | test/lisp/eshell/esh-proc-tests.el | 13 |
2 files changed, 20 insertions, 2 deletions
diff --git a/lisp/eshell/esh-proc.el b/lisp/eshell/esh-proc.el index f1ec3a905b6..fcd59ab9f37 100644 --- a/lisp/eshell/esh-proc.el +++ b/lisp/eshell/esh-proc.el @@ -296,8 +296,13 @@ Used only on systems which do not support async subprocesses.") 'unix)))) (cond ((fboundp 'make-process) - (unless (equal (car (aref eshell-current-handles eshell-output-handle)) - (car (aref eshell-current-handles eshell-error-handle))) + (unless (or ;; FIXME: It's not currently possible to use a + ;; stderr process for remote files. + (file-remote-p default-directory) + (equal (car (aref eshell-current-handles + eshell-output-handle)) + (car (aref eshell-current-handles + eshell-error-handle)))) (eshell-protect-handles eshell-current-handles) (setq stderr-proc (make-pipe-process diff --git a/test/lisp/eshell/esh-proc-tests.el b/test/lisp/eshell/esh-proc-tests.el index ae7b1dddd69..8e02fbb5497 100644 --- a/test/lisp/eshell/esh-proc-tests.el +++ b/test/lisp/eshell/esh-proc-tests.el @@ -19,6 +19,7 @@ ;;; Code: +(require 'tramp) (require 'ert) (require 'esh-mode) (require 'eshell) @@ -85,6 +86,18 @@ "\\`\\'")) (should (equal (buffer-string) "stdout\nstderr\n")))) +(ert-deftest esh-var-test/output/remote-redirect () + "Check that redirecting stdout for a remote process works." + (skip-unless (and (eshell-tests-remote-accessible-p) + (executable-find "echo"))) + (let ((default-directory ert-remote-temporary-file-directory)) + (eshell-with-temp-buffer bufname "old" + (with-temp-eshell + (eshell-match-command-output + (format "*echo hello > #<%s>" bufname) + "\\`\\'")) + (should (equal (buffer-string) "hello\n"))))) + ;; Exit status |