[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]
emacs-29 7f438ff543b: Don't try to make a pipe process for remote proces
From: |
Jim Porter |
Subject: |
emacs-29 7f438ff543b: Don't try to make a pipe process for remote processes in Eshell |
Date: |
Mon, 23 Jan 2023 12:49:11 -0500 (EST) |
branch: emacs-29
commit 7f438ff543b7bd83cee6c75be1d16abc1215d37f
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>
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.
---
lisp/eshell/esh-proc.el | 9 +++++++--
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
[Prev in Thread] |
Current Thread |
[Next in Thread] |
- emacs-29 7f438ff543b: Don't try to make a pipe process for remote processes in Eshell,
Jim Porter <=