<feed xmlns='http://www.w3.org/2005/Atom'>
<title>emacs/test/lisp/eshell, branch scratch/track-changes</title>
<subtitle>Emacs is the extensible, customizable, self-documenting real-time display editor. 
</subtitle>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/'/>
<entry>
<title>Support expanding Eshell globs for remote file names</title>
<updated>2024-03-07T20:21:06+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-03-06T21:27:07+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=e42f14f0e034d0b20c6b9fd0fea23686699e7df0'/>
<id>e42f14f0e034d0b20c6b9fd0fea23686699e7df0</id>
<content type='text'>
* lisp/eshell/em-glob.el (eshell-glob-chars-regexp): New function...
(eshell-glob-regexp): ... use it.
(eshell-glob-p): New function...
(eshell-glob-convert): ... use it, and return the deepest start
directory possible.

* lisp/eshell/esh-util.el (eshell-split-path): Rename to...
(eshell-split-path): ... this, and account for remote file names.

* test/lisp/eshell/em-glob-tests.el
(em-glob-test/convert/current-start-directory)
(em-glob-test/convert/relative-start-directory)
(em-glob-test/convert/absolute-start-directory)
(em-glob-test/convert/remote-start-directory): New tests (bug#69592).
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/em-glob.el (eshell-glob-chars-regexp): New function...
(eshell-glob-regexp): ... use it.
(eshell-glob-p): New function...
(eshell-glob-convert): ... use it, and return the deepest start
directory possible.

* lisp/eshell/esh-util.el (eshell-split-path): Rename to...
(eshell-split-path): ... this, and account for remote file names.

* test/lisp/eshell/em-glob-tests.el
(em-glob-test/convert/current-start-directory)
(em-glob-test/convert/relative-start-directory)
(em-glob-test/convert/absolute-start-directory)
(em-glob-test/convert/remote-start-directory): New tests (bug#69592).
</pre>
</div>
</content>
</entry>
<entry>
<title>Replace use of obsolete eshell-kill-output in test</title>
<updated>2024-02-23T12:14:18+00:00</updated>
<author>
<name>Mattias Engdegård</name>
</author>
<published>2024-02-23T12:14:18+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a8f167547bc15eacaf5fbc07c1e75f603e70862d'/>
<id>a8f167547bc15eacaf5fbc07c1e75f603e70862d</id>
<content type='text'>
* test/lisp/eshell/eshell-tests.el (eshell-test/flush-output):
Use eshell-delete-output instead of eshell-kill-output.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* test/lisp/eshell/eshell-tests.el (eshell-test/flush-output):
Use eshell-delete-output instead of eshell-kill-output.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Compute the list of symbols for 'eshell-eval-using-options' once</title>
<updated>2024-02-13T20:27:38+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-02-13T20:27:38+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=160165e8a97cfa3f3ffd803be373a3b34ed87597'/>
<id>160165e8a97cfa3f3ffd803be373a3b34ed87597</id>
<content type='text'>
* lisp/eshell/esh-opt.el (eshell--get-option-symbols): New function...
(eshell-eval-using-options): ... use it.
(eshell--do-opts, eshell--process-args): Take OPTION-SYMS.

* test/lisp/eshell/esh-opt-tests.el (esh-opt-test/process-args):
(esh-opt-test/process-args-parse-leading-options-only):
(esh-opt-test/process-args-external): Pass OPTION-SYMS in.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/esh-opt.el (eshell--get-option-symbols): New function...
(eshell-eval-using-options): ... use it.
(eshell--do-opts, eshell--process-args): Take OPTION-SYMS.

* test/lisp/eshell/esh-opt-tests.el (esh-opt-test/process-args):
(esh-opt-test/process-args-parse-leading-options-only):
(esh-opt-test/process-args-external): Pass OPTION-SYMS in.
</pre>
</div>
</content>
</entry>
<entry>
<title>In Eshell, don't expand quoted tildes into a user's home directory</title>
<updated>2024-01-29T00:02:05+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2023-09-03T05:29:22+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=d2abe91d4bf68f20e4b1cd39f88ed98fd5731524'/>
<id>d2abe91d4bf68f20e4b1cd39f88ed98fd5731524</id>
<content type='text'>
* lisp/eshell/em-dirs.el (eshell-parse-user-reference): Don't expand
quoted tildes.

* test/lisp/eshell/em-dirs-tests.el
(em-dirs-test/expand-user-reference/local)
(em-dirs-test/expand-user-reference/quoted): New tests.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/em-dirs.el (eshell-parse-user-reference): Don't expand
quoted tildes.

* test/lisp/eshell/em-dirs-tests.el
(em-dirs-test/expand-user-reference/local)
(em-dirs-test/expand-user-reference/quoted): New tests.
</pre>
</div>
</content>
</entry>
<entry>
<title>In Eshell, allow an escaped newline at the end of a command</title>
<updated>2024-01-28T23:54:46+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-01-28T23:49:03+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=1f5a13d5843306af2e6a74fbdfd6d00af8804a23'/>
<id>1f5a13d5843306af2e6a74fbdfd6d00af8804a23</id>
<content type='text'>
Normally, "echo&lt;RET&gt;" runs the command "echo".  Likewise,
"echo\&lt;RET&gt;&lt;RET&gt;" should too: we escape the first newline, and then
the second one is unescaped and should send the command input to
Eshell.  Previously, you had to press RET a third time, but now it
works as expected.

* lisp/eshell/esh-arg.el (eshell-looking-at-backslash-return): Make
obsolete.
(eshell-parse-backslash): A backslash sequence is only incomplete if
there's nothing at all after it.

* test/lisp/eshell/esh-arg-tests.el (esh-arg-test/escape/newline)
(esh-arg-test/escape-quoted/newline): Remove inaccurate comment;
escaped newlines are always special.
(esh-arg-test/escape/trailing-newline): New test.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Normally, "echo&lt;RET&gt;" runs the command "echo".  Likewise,
"echo\&lt;RET&gt;&lt;RET&gt;" should too: we escape the first newline, and then
the second one is unescaped and should send the command input to
Eshell.  Previously, you had to press RET a third time, but now it
works as expected.

* lisp/eshell/esh-arg.el (eshell-looking-at-backslash-return): Make
obsolete.
(eshell-parse-backslash): A backslash sequence is only incomplete if
there's nothing at all after it.

* test/lisp/eshell/esh-arg-tests.el (esh-arg-test/escape/newline)
(esh-arg-test/escape-quoted/newline): Remove inaccurate comment;
escaped newlines are always special.
(esh-arg-test/escape/trailing-newline): New test.
</pre>
</div>
</content>
</entry>
<entry>
<title>Support setting umask symbolically in Eshell</title>
<updated>2024-01-28T06:21:23+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2023-03-05T06:11:23+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=a3cd284b90edcc7e06b21110cdbf55d11fb6fd0d'/>
<id>a3cd284b90edcc7e06b21110cdbf55d11fb6fd0d</id>
<content type='text'>
* lisp/eshell/em-basic.el (eshell/umask): Handle setting umask
symbolically, and make setting umask take precedence over "-S".

* test/lisp/eshell/em-basic-tests.el
(em-basic-test/umask-print-numeric, em-basic-test/umask-read-symbolic,
em-basic-test/umask-set): Rename to...
(em-basic-test/umask/print-numeric)
(em-basic-test/umask/print-symbolic, em-basic-test/umask/set-numeric):
... these.
(em-basic-test/umask/set-symbolic, em-basic-test/umask/set-with-S):
New tests.

* etc/NEWS: Announce this change.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
* lisp/eshell/em-basic.el (eshell/umask): Handle setting umask
symbolically, and make setting umask take precedence over "-S".

* test/lisp/eshell/em-basic-tests.el
(em-basic-test/umask-print-numeric, em-basic-test/umask-read-symbolic,
em-basic-test/umask-set): Rename to...
(em-basic-test/umask/print-numeric)
(em-basic-test/umask/print-symbolic, em-basic-test/umask/set-numeric):
... these.
(em-basic-test/umask/set-symbolic, em-basic-test/umask/set-with-S):
New tests.

* etc/NEWS: Announce this change.
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix command replacement with the Eshell builtin versions of "sudo" and "doas"</title>
<updated>2024-01-27T20:22:57+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-01-25T02:32:00+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=3c680968e492acf8891fda22c28baef5078ca768'/>
<id>3c680968e492acf8891fda22c28baef5078ca768</id>
<content type='text'>
This is particularly important when the inner command to execute is an
alias.  Aliases throw 'eshell-replace-command' too, so we want to do
this in two phases: first, replace the "sudo"/"doas" with a
let-binding of 'default-directory', and then later, let the alias code
do its own replacement (bug#68074).

* lisp/eshell/em-tramp.el (eshell/sudo, eshell/doas): Use
'eshell-replace-command' to wrap the inner command.
* test/lisp/eshell/em-tramp-tests.el (mock-eshell-named-command):
Remove.
(em-tramp-test/sudo-basic, em-tramp-test/sudo-user)
(em-tramp-test/doas-basic, em-tramp-test/doas-user): Catch
'eshell-replace-command'.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
This is particularly important when the inner command to execute is an
alias.  Aliases throw 'eshell-replace-command' too, so we want to do
this in two phases: first, replace the "sudo"/"doas" with a
let-binding of 'default-directory', and then later, let the alias code
do its own replacement (bug#68074).

* lisp/eshell/em-tramp.el (eshell/sudo, eshell/doas): Use
'eshell-replace-command' to wrap the inner command.
* test/lisp/eshell/em-tramp-tests.el (mock-eshell-named-command):
Remove.
(em-tramp-test/sudo-basic, em-tramp-test/sudo-user)
(em-tramp-test/doas-basic, em-tramp-test/doas-user): Catch
'eshell-replace-command'.
</pre>
</div>
</content>
</entry>
<entry>
<title>; Add docstring to test</title>
<updated>2024-01-26T19:56:47+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-01-26T19:56:47+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=b803d10d5fa550338e184baded42cc17d01c866e'/>
<id>b803d10d5fa550338e184baded42cc17d01c866e</id>
<content type='text'>
Note to self: coffee first, *then* push upstream.

* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test--deftest-invoke-directly): Add missing docstring.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
Note to self: coffee first, *then* push upstream.

* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test--deftest-invoke-directly): Add missing docstring.
</pre>
</div>
</content>
</entry>
<entry>
<title>; * test/lisp/eshell/esh-cmd-tests.el: Fix last change.</title>
<updated>2024-01-26T18:26:57+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-01-26T18:26:57+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=330284e7f6d5191bc107caaa1c6e8d4b319af259'/>
<id>330284e7f6d5191bc107caaa1c6e8d4b319af259</id>
<content type='text'>
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
</pre>
</div>
</content>
</entry>
<entry>
<title>Fix detection of directly-invokable commands in Eshell</title>
<updated>2024-01-26T18:17:19+00:00</updated>
<author>
<name>Jim Porter</name>
</author>
<published>2024-01-26T18:17:19+00:00</published>
<link rel='alternate' type='text/html' href='https://jason.zzq.org/git/emacs/commit/?id=047607f6e611709f89f6c93ae0e2fc97b25bf18f'/>
<id>047607f6e611709f89f6c93ae0e2fc97b25bf18f</id>
<content type='text'>
I think this regressed partly due to eef32d13da58, so let's add some
regression tests to make sure that doesn't happen again.

* lisp/eshell/em-unix.el (eshell-unix-initialize): Add "compile".

* lisp/eshell/esh-cmd.el (eshell--find-subcommands): Yield the second
element of the subcommand.
(eshell--invoke-command-directly-p): Rename and account for
'eshell-with-copied-handles'.
(eshell-invoke-directly): Rename to...
(eshell-invoke-directly-p): ... this, and use 'pcase' to make the
logic clearer.

* lisp/eshell/esh-mode.el (eshell-send-input): Always queue input if
the process is running; rename some locals to be clearer.

* lisp/eshell/esh-var.el (eshell-var-initialize): Add "env" as a
complex command.

* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test--deftest-invoke-directly): New macro.
(no-args, with-args, multiple-cmds, subcmd, complex, complex-subcmd):
New test cases.
</content>
<content type='xhtml'>
<div xmlns='http://www.w3.org/1999/xhtml'>
<pre>
I think this regressed partly due to eef32d13da58, so let's add some
regression tests to make sure that doesn't happen again.

* lisp/eshell/em-unix.el (eshell-unix-initialize): Add "compile".

* lisp/eshell/esh-cmd.el (eshell--find-subcommands): Yield the second
element of the subcommand.
(eshell--invoke-command-directly-p): Rename and account for
'eshell-with-copied-handles'.
(eshell-invoke-directly): Rename to...
(eshell-invoke-directly-p): ... this, and use 'pcase' to make the
logic clearer.

* lisp/eshell/esh-mode.el (eshell-send-input): Always queue input if
the process is running; rename some locals to be clearer.

* lisp/eshell/esh-var.el (eshell-var-initialize): Add "env" as a
complex command.

* test/lisp/eshell/esh-cmd-tests.el
(esh-cmd-test--deftest-invoke-directly): New macro.
(no-args, with-args, multiple-cmds, subcmd, complex, complex-subcmd):
New test cases.
</pre>
</div>
</content>
</entry>
</feed>
