]> git.eshelyaron.com Git - emacs.git/commitdiff
Rework eshell-match-result for testing asynchronous commands
authorSean Whitton <spwhitton@spwhitton.name>
Sun, 23 Jan 2022 01:54:55 +0000 (18:54 -0700)
committerLars Ingebrigtsen <larsi@gnus.org>
Mon, 24 Jan 2022 20:45:00 +0000 (21:45 +0100)
When using eshell-match-result via eshell-command-result-p to examine
the output of asynchronous Eshell commands, a newly emitted prompt is
included in the text against which the regexp is matched.  This makes
it awkward to match against the whole output; for example, to check
whether it is empty.  Rework the function to exclude the prompt.

* test/lisp/eshell/eshell-tests-helpers.el (eshell-match-result):
Exclude any newly emitted prompt from the text against which the
regexp is matched.  Additionally, the function no longer moves point.
* test/lisp/eshell/eshell-tests.el (eshell-test/flush-output): Update
and simplify test given how eshell-match-result no longer moves point.

test/lisp/eshell/eshell-tests-helpers.el
test/lisp/eshell/eshell-tests.el

index 2afa63ae51a09007be46e33271b28cd37c5736ee..a150adb14423137c24006f5d1be3eb86bee3d653 100644 (file)
@@ -66,10 +66,11 @@ raise an error."
   (funcall (or func 'eshell-send-input)))
 
 (defun eshell-match-result (regexp)
-  "Check that text after `eshell-last-input-end' matches REGEXP."
-  (goto-char eshell-last-input-end)
-  (should (string-match-p regexp (buffer-substring-no-properties
-                                  (point) (point-max)))))
+  "Check that output of last command matches REGEXP."
+  (should
+   (string-match-p
+    regexp (buffer-substring-no-properties
+            (eshell-beginning-of-output) (eshell-end-of-output)))))
 
 (defun eshell-command-result-p (text regexp &optional func)
   "Insert a command at the end of the buffer."
index 6aeefdfde2114f2f46118fe754d5cb49e37a4196..542815df80963546c964441551e56c26dfd315b0 100644 (file)
@@ -232,9 +232,8 @@ chars"
   (with-temp-eshell
    (eshell-insert-command "echo alpha")
    (eshell-kill-output)
-   (eshell-match-result (regexp-quote "*** output flushed ***\n"))
-   (should (forward-line))
-   (should (= (point) eshell-last-output-start))))
+   (eshell-match-result
+    (concat "^" (regexp-quote "*** output flushed ***\n") "$"))))
 
 (ert-deftest eshell-test/run-old-command ()
   "Re-run an old command"