--- Begin Message ---
Subject: |
29.0.50; [PATCH] Provide ERT explainers for Eshell test functions |
Date: |
Sun, 14 Aug 2022 14:20:25 -0700 |
It can be difficult to diagnose test failures in the Eshell ERT test
suite, since it doesn't print useful details like the command that was
executed. See bug#57129 for example.
Here are some patches to fix that. The failures now look like this:
----------------------------------------
(ert-test-failed
((should
(eshell-match-output regexp))
:form
(eshell-match-output "wrong")
:value nil :explanation
(mismatched-output
(command "echo $INSIDE_EMACS[, 1]\n")
(output "eshell\n")
(regexp "wrong"))))
----------------------------------------
(ert-test-failed
((should
(eshell-command-result--equal command
(eshell-test-command-result command)
result))
:form
(eshell-command-result--equal "echo $LINES" 22 2)
:value nil :explanation
(nonequal-result
(command "echo $LINES")
(result 22)
(expected 2))))
----------------------------------------
Most of the first two patches are purely-mechanical changes to update
function calls. The diffs ended up being pretty big, but I think it
improves matters. Let me know if I should do it differently (especially
for the commit message; I didn't see much benefit to listing *every*
test function I touched, but maybe I should do that?)
While I was testing these, I also found a couple real bugs with the
'eshell-command-result' function. This throws 'eshell-defer':
M-: (eshell-command-result "if {[ foo = foo ]} {echo hi}")
That's because 'eshell-do-eval' wasn't forwarding the SYNCHRONOUS-P
argument in a couple spots.
This is also wrong:
M-: (eshell-command-result "if (zerop 1) {echo yes} {echo no}")
=> nil
It should return "no".
I fixed these in the third patch. Maybe that could go in a separate bug,
but it's fairly closely related to this one.
0001-Provide-ERT-explainer-for-eshell-match-command-outpu.patch
Description: Text document
0002-Add-eshell-command-result-equal-with-an-ERT-explaine.patch
Description: Text document
0003-Fix-non-interactive-use-of-conditionals-in-Eshell.patch
Description: Text document
--- End Message ---
--- Begin Message ---
Subject: |
Re: bug#57216: 29.0.50; [PATCH] Provide ERT explainers for Eshell test functions |
Date: |
Mon, 15 Aug 2022 20:52:09 -0700 |
On 8/15/2022 12:01 AM, Lars Ingebrigtsen wrote:
Jim Porter <jporterbugs@gmail.com> writes:
It can be difficult to diagnose test failures in the Eshell ERT test
suite, since it doesn't print useful details like the command that was
executed. See bug#57129 for example.
I'm generally not in favour of making ert tests less trivial (because
that makes dealing with them less easy if you're not familiar with the
specific harness), but in this case, it makes sense, I think.
Agreed. I've tried to keep the tests as simple as I can, though even for
the simplest of the Eshell tests, I think it's useful to show this info.
99% of the tests are "run some Eshell command and make sure it does
the right thing", and if it fails, the new failure output is probably
enough to debug it without even looking at the test code.
(Closing this, since I merged the patch.)
--- End Message ---