emacs-diffs
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

master f2b162f8ee5 2/2: Add some more Eshell history tests


From: Jim Porter
Subject: master f2b162f8ee5 2/2: Add some more Eshell history tests
Date: Fri, 10 Nov 2023 21:01:18 -0500 (EST)

branch: master
commit f2b162f8ee5d93dafd87be34acef746e67d9ab26
Author: Jim Porter <jporterbugs@gmail.com>
Commit: Jim Porter <jporterbugs@gmail.com>

    Add some more Eshell history tests
    
    * test/lisp/eshell/em-hist-tests.el (em-hist-test/check-history-file):
    New function.  Use it throughout this file.
    (em-hist-test/history-append): Rename to...
    (em-hist-test/write-history/append): ... this.
    (em-hist-test/history-read): Rename to...
    (em-hist-test/write-history/overwrite): ... this.
    (em-hist-test/write-history/append-multiple-eshells)
    (em-hist-test/write-history/overwrite-multiple-shells): New tests.
    (em-hist-test/write-history/read-only): Check the resulting history.
---
 test/lisp/eshell/em-hist-tests.el | 127 +++++++++++++++++++++++++++-----------
 1 file changed, 91 insertions(+), 36 deletions(-)

diff --git a/test/lisp/eshell/em-hist-tests.el 
b/test/lisp/eshell/em-hist-tests.el
index 4851bdc50b2..e90ce141a81 100644
--- a/test/lisp/eshell/em-hist-tests.el
+++ b/test/lisp/eshell/em-hist-tests.el
@@ -19,6 +19,9 @@
 
 ;;; Code:
 
+(eval-when-compile
+  (require 'cl-lib))
+
 (require 'ert)
 (require 'ert-x)
 (require 'em-hist)
@@ -29,9 +32,94 @@
                            (file-name-directory (or load-file-name
                                                     default-directory))))
 
+(cl-defun em-hist-test/check-history-file (file-name expected &optional
+                                                     (expected-ring t))
+  "Check that the contents of FILE-NAME match the EXPECTED history entries.
+Additonally, check that after loading the file, the history ring
+matches too.  If EXPECTED-RING is a list, compare the ring
+elements against that; if t (the default), check again EXPECTED."
+  (when (eq expected-ring t) (setq expected-ring expected))
+  ;; First check the actual file.
+  (should (equal (with-temp-buffer
+                   (insert-file-contents file-name)
+                   (buffer-string))
+                 (mapconcat (lambda (i) (concat i "\n")) expected)))
+  ;; Now read the history ring and check that too.
+  (let (eshell-history-ring eshell-history-index eshell-hist--new-items)
+    (eshell-read-history file-name)
+    (should (equal (nreverse (ring-elements eshell-history-ring))
+                   expected-ring))))
+
 ;;; Tests:
 
-(ert-deftest em-hist-test/write-readonly-history ()
+(ert-deftest em-hist-test/write-history/append ()
+  "Test appending new history to history file."
+  (ert-with-temp-file histfile
+    (with-temp-eshell
+     (em-hist-test/check-history-file histfile nil)
+     (eshell-insert-command "echo hi")
+     (eshell-write-history histfile 'append)
+     (em-hist-test/check-history-file histfile '("echo hi"))
+     (eshell-insert-command "echo bye")
+     (eshell-write-history histfile 'append)
+     (em-hist-test/check-history-file histfile '("echo hi" "echo bye")))))
+
+(ert-deftest em-hist-test/write-history/append-multiple-eshells ()
+  "Test appending new history to history file from multiple Eshells."
+  (ert-with-temp-file histfile
+    (with-temp-eshell
+     (with-temp-eshell
+      ;; Enter some commands and save them.
+      (eshell-insert-command "echo foo")
+      (eshell-insert-command "echo bar")
+      (eshell-write-history histfile 'append)
+      (em-hist-test/check-history-file histfile '("echo foo" "echo bar")))
+     ;; Now do the same in the first Eshell buffer.
+     (eshell-insert-command "echo goat")
+     (eshell-insert-command "echo panda")
+     (eshell-write-history histfile 'append)
+     (em-hist-test/check-history-file
+      histfile '("echo foo" "echo bar" "echo goat" "echo panda")))))
+
+(ert-deftest em-hist-test/write-history/overwrite ()
+  "Test overwriting history file."
+  (ert-with-temp-file histfile
+    (with-temp-eshell
+     (em-hist-test/check-history-file histfile nil)
+     (eshell-insert-command "echo hi")
+     (eshell-insert-command "echo bye")
+     (eshell-insert-command "echo bye")
+     (eshell-insert-command "echo hi")
+     (eshell-write-history histfile)
+     (em-hist-test/check-history-file
+      histfile '("echo hi" "echo bye" "echo bye" "echo hi"))
+     (let ((eshell-hist-ignoredups t))
+       (em-hist-test/check-history-file
+        histfile '("echo hi" "echo bye" "echo bye" "echo hi")
+        '("echo hi" "echo bye" "echo hi")))
+     (let ((eshell-hist-ignoredups 'erase))
+       (em-hist-test/check-history-file
+        histfile '("echo hi" "echo bye" "echo bye" "echo hi")
+        '("echo bye" "echo hi"))))))
+
+(ert-deftest em-hist-test/write-history/overwrite-multiple-shells ()
+  "Test overwriting history file from multiple Eshells."
+  (ert-with-temp-file histfile
+    (with-temp-eshell
+     (with-temp-eshell
+      ;; Enter some commands and save them.
+      (eshell-insert-command "echo foo")
+      (eshell-insert-command "echo bar")
+      (eshell-write-history histfile)
+      (em-hist-test/check-history-file histfile '("echo foo" "echo bar")))
+     ;; Now do the same in the first Eshell buffer.
+     (eshell-insert-command "echo goat")
+     (eshell-insert-command "echo panda")
+     (eshell-write-history histfile)
+     (em-hist-test/check-history-file
+      histfile '("echo goat" "echo panda")))))
+
+(ert-deftest em-hist-test/write-history/read-only ()
   "Test that having read-only strings in history is okay."
   (ert-with-temp-file histfile
     (let ((eshell-history-ring (make-ring 2)))
@@ -39,41 +127,8 @@
                    (propertize "echo foo" 'read-only t))
       (ring-insert eshell-history-ring
                    (propertize "echo bar" 'read-only t))
-      (eshell-write-history histfile))))
-
-(ert-deftest em-hist-test/history-append ()
-  "Test 'history -a'."
-  (ert-with-temp-file histfile
-    (with-temp-eshell
-     (let ((eshell-history-file-name histfile))
-       (eshell-insert-command "echo hi")
-       (eshell-insert-command "history -w")
-       (eshell-insert-command "history -a")
-       (eshell-insert-command "echo bye")
-       (eshell-insert-command "history -a")
-       (eshell-insert-command "history -r")
-       (should (equal (ring-elements eshell-history-ring)
-                      '("history -a" "echo bye"
-                        "history -a" "history -w" "echo hi")))))))
-
-(ert-deftest em-hist-test/history-read ()
-  "Test 'history -r'."
-  (ert-with-temp-file histfile
-    (with-temp-eshell
-     (let ((eshell-history-file-name histfile))
-       (eshell-insert-command "echo hi")
-       (eshell-insert-command "echo bye")
-       (eshell-insert-command "echo bye")
-       (eshell-insert-command "echo hi")
-       (eshell-insert-command "history -w")
-       (let ((eshell-hist-ignoredups t))
-         (eshell-insert-command "history -r")
-         (should (equal (ring-elements eshell-history-ring)
-                        '("history -w" "echo hi" "echo bye" "echo hi"))))
-       (let ((eshell-hist-ignoredups 'erase))
-         (eshell-insert-command "history -r")
-         (should (equal (ring-elements eshell-history-ring)
-                        '("history -w" "echo hi" "echo bye"))))))))
+      (eshell-write-history histfile)
+      (em-hist-test/check-history-file histfile '("echo foo" "echo bar")))))
 
 (ert-deftest em-hist-test/add-to-history/allow-dups ()
   "Test adding to history, allowing dups."



reply via email to

[Prev in Thread] Current Thread [Next in Thread]