1
Fork 0
mirror of git://git.sv.gnu.org/emacs.git synced 2026-03-15 11:21:19 -07:00
emacs/test/lisp/eshell
Jim Porter 073da412a1 Fix reference-counting of Eshell I/O handles
This ensures that output targets in Eshell are only closed when Eshell
is actually done with them.  In particular, this means that
"{ echo foo; echo bar } | rev" prints "raboof" as expected
(bug#59545).

* lisp/eshell/esh-io.el (eshell-create-handles): Structure the handles
differently so the targets and their ref-count can be shared.
(eshell-duplicate-handles): Reimplement this to share targets between
the original and new handle sets.  Add STEAL-P argument.
(eshell-protect-handles, eshell-copy-output-handle)
(eshell-interactive-output-p, eshell-output-object): Account for
changes to the handle structure.
(eshell-close-handle): New function...
(eshell-close-handles, eshell-set-output-handle): ... use it.
(eshell-get-targets): Remove.  This only existed to make the previous
implementation of 'eshell-duplicate-handles' work.

* lisp/eshell/esh-cmd.el (eshell-with-copied-handles): New argument
STEAL-P.
(eshell-do-pipelines): Use STEAL-P for the last item in the pipeline.
(eshell-parse-command): Don't copy handles for the last command in the
list; explain why we can't use STEAL-P here.
(eshell-eval-command): When queuing input, set 'eshell-command-body'
and 'eshell-test-body' for the 'if' conditional (see
'eshell-do-eval').

* test/lisp/eshell/esh-io-tests.el (esh-io-test/redirect-pipe): Split
into...
(esh-io-test/pipeline/default, esh-io-test/pipeline/all): ... these.
(esh-io-test/pipeline/subcommands): New test.

* test/lisp/eshell/esh-cmd-tests.el (esh-cmd-test/for-loop-pipe)
(esh-cmd-test/while-loop-pipe, esh-cmd-test/if-statement-pipe)
esh-cmd-test/if-else-statement-pipe): New tests.
(esh-cmd-test/while-loop): Use 'pop' to simplify the test a bit.

* test/lisp/eshell/eshell-test-helpers.el
(eshell-test--max-subprocess-time): Rename to...
(eshell-test--max-wait-time): ... this.
(eshell-wait-for): New function...
(eshell-wait-for-subprocess): ... use it.

* test/lisp/eshell/eshell-tests.el (eshell-test/queue-input): Fix this
test.  Previously, it didn't correctly verify that the original
command completed.

* test/lisp/eshell/em-tramp-tests.el
(em-tramp-test/should-replace-command): New macro...
(em-tramp-test/su-default, em-tramp-test/su-user)
(em-tramp-test/su-login, em-tramp-test/sudo-shell)
(em-tramp-test/sudo-user-shell, em-tramp-test/doas-shell)
(em-tramp-test/doas-user-shell): ... use it.
2022-12-29 22:38:25 -08:00
..
em-alias-tests.el Add support for the "splice operator" in Eshell 2022-12-15 21:41:03 -08:00
em-basic-tests.el Add 'eshell-command-result-equal' with an ERT explainer 2022-08-15 20:40:27 -07:00
em-dirs-tests.el Add 'eshell-command-result-equal' with an ERT explainer 2022-08-15 20:40:27 -07:00
em-extpipe-tests.el Fix handling of output handles in nested Eshell forms 2022-12-22 11:35:12 -08:00
em-glob-tests.el Make Eshell globs ending in "/" match directories only 2022-06-26 16:52:38 +02:00
em-hist-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
em-ls-tests.el Merge from origin/emacs-28 2022-01-01 07:03:03 -05:00
em-pred-tests.el ; Improve time-convert call in recently changed test 2022-08-07 13:16:53 +02:00
em-script-tests.el Fix handling of output handles in nested Eshell forms 2022-12-22 11:35:12 -08:00
em-tramp-tests.el Fix reference-counting of Eshell I/O handles 2022-12-29 22:38:25 -08:00
esh-arg-tests.el Treat escaped newlines in Eshell as the empty string 2022-12-07 21:39:07 -08:00
esh-cmd-tests.el Fix reference-counting of Eshell I/O handles 2022-12-29 22:38:25 -08:00
esh-ext-tests.el Improve handling of $PATH in Eshell for remote directories 2022-10-17 18:48:52 -07:00
esh-io-tests.el Fix reference-counting of Eshell I/O handles 2022-12-29 22:38:25 -08:00
esh-opt-tests.el Treat "-" as a positional arg in 'eshell-eval-using-options' 2022-01-25 13:28:48 +01:00
esh-proc-tests.el ; Fix a race condition in an Eshell test 2022-09-08 15:13:17 -07:00
esh-util-tests.el Only strip newlines when stringifying a value for Eshell 2022-11-03 11:44:41 -07:00
esh-var-tests.el Add support for the "splice operator" in Eshell 2022-12-15 21:41:03 -08:00
eshell-tests-helpers.el Fix reference-counting of Eshell I/O handles 2022-12-29 22:38:25 -08:00
eshell-tests.el Fix reference-counting of Eshell I/O handles 2022-12-29 22:38:25 -08:00