emacs-diffs
[Top][All Lists]
Advanced

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

master 9b80fe5 1/2: Add tests for 'insert-directory'


From: Lars Ingebrigtsen
Subject: master 9b80fe5 1/2: Add tests for 'insert-directory'
Date: Wed, 10 Nov 2021 23:05:26 -0500 (EST)

branch: master
commit 9b80fe55f9725a039a2f367ffccea164c6ca9cf9
Author: John Cummings <john@rootabega.net>
Commit: Lars Ingebrigtsen <larsi@gnus.org>

    Add tests for 'insert-directory'
    
    * test/lisp/files-tests.el: Add 'insert-directory' tests.
    * test/lisp/files-resources/insert-directory/: Create directories and files 
to
    use for testing 'insert-directory'.
    
    Add tests for 'insert-directory' base functionality and regression tests for
    the issue where free space was reported for the current directory instead of
    the target of 'list-directory' (Bug#50630).
---
 .../files-resources/insert-directory/test_dir/bar  |  0
 .../files-resources/insert-directory/test_dir/foo  |  0
 .../insert-directory/test_dir_other/bar            |  0
 .../insert-directory/test_dir_other/foo            |  0
 test/lisp/files-tests.el                           | 74 ++++++++++++++++++++++
 5 files changed, 74 insertions(+)

diff --git a/test/lisp/files-resources/insert-directory/test_dir/bar 
b/test/lisp/files-resources/insert-directory/test_dir/bar
new file mode 100644
index 0000000..e69de29
diff --git a/test/lisp/files-resources/insert-directory/test_dir/foo 
b/test/lisp/files-resources/insert-directory/test_dir/foo
new file mode 100644
index 0000000..e69de29
diff --git a/test/lisp/files-resources/insert-directory/test_dir_other/bar 
b/test/lisp/files-resources/insert-directory/test_dir_other/bar
new file mode 100644
index 0000000..e69de29
diff --git a/test/lisp/files-resources/insert-directory/test_dir_other/foo 
b/test/lisp/files-resources/insert-directory/test_dir_other/foo
new file mode 100644
index 0000000..e69de29
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index 1e20317..d66ed62 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -1807,5 +1807,79 @@ Prompt users for any modified buffer with 
`buffer-offer-save' non-nil."
   (should (equal (file-name-split "/foo/bar/") '("" "foo" "bar" "")))
   (should (equal (file-name-split "foo/bar/") '("foo" "bar" ""))))
 
+;; `insert-directory' output tests.
+(let* ((data-dir "insert-directory")
+       (test-dir (file-name-as-directory
+                  (ert-resource-file
+                   (concat data-dir "/test_dir"))))
+       (test-dir-other (file-name-as-directory
+                        (ert-resource-file
+                         (concat data-dir "/test_dir_other"))))
+       (test-files `(,test-dir "foo" "bar")) ;expected files to be found
+       ;; Free space test data for `insert-directory'.
+       ;; Meaning: (path free-space-bytes-to-stub expected-free-space-string)
+       (free-data `((,test-dir 10 "available 10 B")
+                    (,test-dir-other 100 "available 100 B")
+                    (:default 999 "available 999 B"))))
+
+
+  (defun files-tests--look-up-free-data (path)
+    "Look up free space test data, with a default for unspecified paths."
+    (let ((path (file-name-as-directory path)))
+      (cdr (or (assoc path free-data)
+               (assoc :default free-data)))))
+
+  (defun files-tests--make-file-system-info-stub (&optional static-path)
+    "Return a stub for `file-system-info' using dynamic or static test data.
+If that data should be static, pass STATIC-PATH to choose which
+path's data to use."
+    (lambda (path)
+      (let* ((path (cond (static-path)
+                         ;; file-system-info knows how to handle ".", so we
+                         ;; do the same thing
+                         ((equal "." path) default-directory)
+                         (path)))
+             (return-size
+              (car (files-tests--look-up-free-data path))))
+        (list return-size return-size return-size))))
+
+  (defun files-tests--insert-directory-output (dir &optional verbose)
+    "Run `insert-directory' and return its output."
+    (with-current-buffer-window "files-tests--insert-directory" nil nil
+      (insert-directory dir "-l" nil t)
+      (buffer-substring-no-properties (point-min) (point-max))))
+
+  (ert-deftest files-tests-insert-directory-shows-files ()
+    "Verify `insert-directory' reports the files in the directory."
+    (let* ((test-dir (car test-files))
+           (files (cdr test-files))
+           (output (files-tests--insert-directory-output test-dir)))
+      (dolist (file files)
+        (should (string-match-p file output)))))
+
+  (defun files-tests--insert-directory-shows-given-free (dir &optional
+                                                             info-func)
+    "Run `insert-directory' and verify it reports the correct available space.
+Stub `file-system-info' to ensure the available space is consistent,
+either with the given stub function or a default one using test data."
+    (cl-letf (((symbol-function 'file-system-info)
+               (or info-func
+                   (files-tests--make-file-system-info-stub))))
+      (should (string-match-p (cadr
+                               (files-tests--look-up-free-data dir))
+                              (files-tests--insert-directory-output dir t)))))
+
+  (ert-deftest files-tests-insert-directory-shows-free ()
+    "Test that verbose `insert-directory' shows the correct available space."
+    (files-tests--insert-directory-shows-given-free
+     test-dir
+     (files-tests--make-file-system-info-stub test-dir)))
+
+  (ert-deftest files-tests-bug-50630 ()
+    "Verify verbose `insert-directory' shows free space of the target 
directory.
+The current directory at call time should not affect the result (Bug#50630)."
+    (let ((default-directory test-dir-other))
+      (files-tests--insert-directory-shows-given-free test-dir))))
+
 (provide 'files-tests)
 ;;; files-tests.el ends here



reply via email to

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