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).
This commit is contained in:
parent
6c405b7a49
commit
9b80fe55f9
5 changed files with 74 additions and 0 deletions
0
test/lisp/files-resources/insert-directory/test_dir/bar
Normal file
0
test/lisp/files-resources/insert-directory/test_dir/bar
Normal file
0
test/lisp/files-resources/insert-directory/test_dir/foo
Normal file
0
test/lisp/files-resources/insert-directory/test_dir/foo
Normal file
|
@ -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
|
||||
|
|
Loading…
Add table
Reference in a new issue