mirror of
https://git.savannah.gnu.org/git/emacs.git
synced 2024-11-21 06:55:39 +00:00
Fix redirecting Eshell output to symbols in some places
Do not merge to master. * lisp/eshell/esh-io.el (eshell-output-object-to-target): Don't require TARGET to be bound. * lisp/eshell/em-script.el (eshell-execute-file): Quote the output/error targets. * test/lisp/eshell/em-script-tests.el (eshell-execute-file-output): New variable. (em-script-test/execute-file/output-file) (em-script-test/execute-file/output-symbol): New tests. * test/lisp/eshell/esh-io-tests.el (eshell-test-file-string): Move to... * test/lisp/eshell/eshell-tests-helpers.el (eshell-test-file-string): ... here.
This commit is contained in:
parent
a0f740c88d
commit
4af1dc83ae
@ -119,7 +119,7 @@ Comments begin with `#'."
|
||||
(eshell-mode)
|
||||
(eshell-do-eval
|
||||
`(let ((eshell-current-handles
|
||||
(eshell-create-handles ,stdout 'insert))
|
||||
(eshell-create-handles ',stdout 'insert))
|
||||
(eshell-current-subjob-p))
|
||||
,(eshell--source-file file args))
|
||||
t))))
|
||||
|
@ -713,7 +713,7 @@ Returns what was actually sent, or nil if nothing was sent.")
|
||||
|
||||
(cl-defmethod eshell-output-object-to-target (object (target symbol))
|
||||
"Output OBJECT to the value of the symbol TARGET."
|
||||
(if (not (symbol-value target))
|
||||
(if (not (and (boundp target) (symbol-value target)))
|
||||
(set target object)
|
||||
(setq object (eshell-stringify object))
|
||||
(if (not (stringp (symbol-value target)))
|
||||
|
@ -33,6 +33,9 @@
|
||||
(expand-file-name "eshell-tests-helpers"
|
||||
(file-name-directory (or load-file-name
|
||||
default-directory))))
|
||||
|
||||
(defvar eshell-execute-file-output)
|
||||
|
||||
;;; Tests:
|
||||
|
||||
(ert-deftest em-script-test/source-script ()
|
||||
@ -113,6 +116,21 @@
|
||||
(eshell-execute-file temp-file '(1 2 3) t))
|
||||
(should (equal (buffer-string) "6")))))
|
||||
|
||||
(ert-deftest em-script-test/execute-file/output-file ()
|
||||
"Test `eshell-execute-file' redirecting to a file."
|
||||
(ert-with-temp-file temp-file :text "echo more"
|
||||
(ert-with-temp-file output-file :text "initial"
|
||||
(with-temp-eshell-settings
|
||||
(eshell-execute-file temp-file nil output-file))
|
||||
(should (equal (eshell-test-file-string output-file) "moreinitial")))))
|
||||
|
||||
(ert-deftest em-script-test/execute-file/output-symbol ()
|
||||
"Test `eshell-execute-file' redirecting to a symbol."
|
||||
(ert-with-temp-file temp-file :text "echo hi\necho bye"
|
||||
(with-temp-eshell-settings
|
||||
(eshell-execute-file temp-file nil 'eshell-execute-file-output))
|
||||
(should (equal eshell-execute-file-output "hibye"))))
|
||||
|
||||
(ert-deftest em-script-test/batch-file ()
|
||||
"Test running an Eshell script file as a batch script."
|
||||
(ert-with-temp-file temp-file
|
||||
|
@ -34,12 +34,6 @@
|
||||
(defvar eshell-test-value-with-fun nil)
|
||||
(defun eshell-test-value-with-fun ())
|
||||
|
||||
(defun eshell-test-file-string (file)
|
||||
"Return the contents of FILE as a string."
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(buffer-string)))
|
||||
|
||||
(defun eshell/test-output ()
|
||||
"Write some test output separately to stdout and stderr."
|
||||
(eshell-printn "stdout")
|
||||
|
@ -139,6 +139,12 @@ After inserting, call FUNC. If FUNC is nil, instead call
|
||||
(buffer-substring-no-properties
|
||||
(eshell-beginning-of-output) (eshell-end-of-output)))
|
||||
|
||||
(defun eshell-test-file-string (file)
|
||||
"Return the contents of FILE as a string."
|
||||
(with-temp-buffer
|
||||
(insert-file-contents file)
|
||||
(buffer-string)))
|
||||
|
||||
(defun eshell-match-output (regexp)
|
||||
"Test whether the output of the last command matches REGEXP."
|
||||
(string-match-p regexp (eshell-last-output)))
|
||||
|
Loading…
Reference in New Issue
Block a user