Choose the right target dir on dired operations
[emacs.git] / test / lisp / dired-tests.el
blob1863864abdf9735a58eaec87454c9c1175490082
1 ;;; dired-tests.el --- Test suite. -*- lexical-binding: t -*-
3 ;; Copyright (C) 2015-2017 Free Software Foundation, Inc.
5 ;; This file is part of GNU Emacs.
7 ;; GNU Emacs is free software: you can redistribute it and/or modify
8 ;; it under the terms of the GNU General Public License as published by
9 ;; the Free Software Foundation, either version 3 of the License, or
10 ;; (at your option) any later version.
12 ;; GNU Emacs is distributed in the hope that it will be useful,
13 ;; but WITHOUT ANY WARRANTY; without even the implied warranty of
14 ;; MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
15 ;; GNU General Public License for more details.
17 ;; You should have received a copy of the GNU General Public License
18 ;; along with GNU Emacs. If not, see <http://www.gnu.org/licenses/>.
20 ;;; Code:
21 (require 'ert)
22 (require 'dired)
23 (require 'nadvice)
26 (ert-deftest dired-autoload ()
27 "Tests to see whether dired-x has been autoloaded"
28 (should
29 (fboundp 'dired-jump))
30 (should
31 (autoloadp
32 (symbol-function
33 'dired-jump))))
35 (ert-deftest dired-test-bug22694 ()
36 "Test for http://debbugs.gnu.org/22694 ."
37 (let* ((dir (expand-file-name "bug22694" default-directory))
38 (file "test")
39 (full-name (expand-file-name file dir))
40 (regexp "bar")
41 (dired-always-read-filesystem t))
42 (if (file-exists-p dir)
43 (delete-directory dir 'recursive))
44 (make-directory dir)
45 (with-temp-file full-name (insert "foo"))
46 (find-file-noselect full-name)
47 (dired dir)
48 (with-temp-file full-name (insert "bar"))
49 (dired-mark-files-containing-regexp regexp)
50 (unwind-protect
51 (should (equal (dired-get-marked-files nil nil nil 'distinguish-1-mark)
52 `(t ,full-name)))
53 ;; Clean up
54 (delete-directory dir 'recursive))))
56 (ert-deftest dired-test-bug25609 ()
57 "Test for http://debbugs.gnu.org/25609 ."
58 (let* ((from (make-temp-file "foo" 'dir))
59 (to (make-temp-file "bar" 'dir))
60 (target (expand-file-name (file-name-nondirectory from) to))
61 (nested (expand-file-name (file-name-nondirectory from) target))
62 (dired-dwim-target t)
63 (dired-recursive-copies 'always)) ; Don't prompt me.
64 (advice-add 'dired-query ; Don't ask confirmation to overwrite a file.
65 :override
66 (lambda (sym prompt &rest args) (setq dired-query t))
67 '((name . "advice-dired-query")))
68 (advice-add 'completing-read ; Just return init.
69 :override
70 (lambda (prompt coll &optional pred match init hist def inherit keymap)
71 init)
72 '((name . "advice-completing-read")))
73 (dired to)
74 (dired-other-window temporary-file-directory)
75 (dired-goto-file from)
76 (dired-do-copy)
77 (dired-do-copy); Again.
78 (unwind-protect
79 (progn
80 (should (file-exists-p target))
81 (should-not (file-exists-p nested)))
82 (delete-directory from 'recursive)
83 (delete-directory to 'recursive)
84 (advice-remove 'dired-query "advice-dired-query")
85 (advice-remove 'completing-read "advice-completing-read"))))
87 (provide 'dired-tests)
88 ;; dired-tests.el ends here