aboutsummaryrefslogtreecommitdiffstats
path: root/test
diff options
context:
space:
mode:
authorTino Calancha2017-08-09 14:47:15 +0900
committerTino Calancha2017-08-09 14:48:49 +0900
commitda4438e14f1c55808937872b6d651a807404daa2 (patch)
treea7b3a8d1f8425b56071759d5b3507e1378afa585 /test
parent9ecbdeeaa845a75c63210057a8a554eedc9387bf (diff)
downloademacs-da4438e14f1c55808937872b6d651a807404daa2.tar.gz
emacs-da4438e14f1c55808937872b6d651a807404daa2.zip
dired-delete-file: Dont't ask for empty dirs
* lisp/dired.el (dired--yes-no-all-quit-help): New defun. (dired-delete-file): Use it. Dont't ask for empty dirs (Bug#27940). * test/lisp/dired-tests.el (dired-test-with-temp-dirs): New auxiliar macro. (dired-test-bug27940): Add new test.
Diffstat (limited to 'test')
-rw-r--r--test/lisp/dired-tests.el85
1 files changed, 85 insertions, 0 deletions
diff --git a/test/lisp/dired-tests.el b/test/lisp/dired-tests.el
index 981afdd929e..3c460d0151e 100644
--- a/test/lisp/dired-tests.el
+++ b/test/lisp/dired-tests.el
@@ -358,5 +358,90 @@
358 (should (equal "subdir" (dired-get-filename 'local t)))) 358 (should (equal "subdir" (dired-get-filename 'local t))))
359 (delete-directory top-dir t)))) 359 (delete-directory top-dir t))))
360 360
361
362(defmacro dired-test-with-temp-dirs (just-empty-dirs &rest body)
363 "Helper macro for Bug#27940 test."
364 (declare (indent 1) (debug body))
365 (let ((dir (make-symbol "dir"))
366 (ignore-funcs (make-symbol "ignore-funcs")))
367 `(let* ((,dir (make-temp-file "bug27940" t))
368 (dired-deletion-confirmer (lambda (_) "yes")) ; Suppress prompts.
369 (inhibit-message t)
370 (default-directory ,dir))
371 (dotimes (i 5) (make-directory (format "empty-dir-%d" i)))
372 (unless ,just-empty-dirs
373 (dotimes (i 5) (make-directory (format "non-empty-%d/foo" i) 'parents)))
374 (make-directory "zeta-empty-dir")
375 (unwind-protect
376 (progn
377 ,@body)
378 (delete-directory ,dir t)
379 (kill-buffer (current-buffer))))))
380
381(ert-deftest dired-test-bug27940 ()
382 "Test for http://debbugs.gnu.org/27940 ."
383 ;; If just empty dirs we shouln't be prompted.
384 (dired-test-with-temp-dirs
385 'just-empty-dirs
386 (let (asked)
387 (advice-add 'dired--yes-no-all-quit-help
388 :override
389 (lambda (_) (setq asked t) "")
390 '((name . dired-test-bug27940-advice)))
391 (dired default-directory)
392 (dired-toggle-marks)
393 (dired-do-delete nil)
394 (unwind-protect
395 (progn
396 (should-not asked)
397 (should-not (dired-get-marked-files))) ; All dirs deleted.
398 (advice-remove 'dired--yes-no-all-quit-help 'dired-test-bug27940-advice))))
399 ;; Answer yes
400 (dired-test-with-temp-dirs
401 nil
402 (advice-add 'dired--yes-no-all-quit-help :override (lambda (_) "yes")
403 '((name . dired-test-bug27940-advice)))
404 (dired default-directory)
405 (dired-toggle-marks)
406 (dired-do-delete nil)
407 (unwind-protect
408 (should-not (dired-get-marked-files)) ; All dirs deleted.
409 (advice-remove 'dired--yes-no-all-quit-help 'dired-test-bug27940-advice)))
410 ;; Answer no
411 (dired-test-with-temp-dirs
412 nil
413 (advice-add 'dired--yes-no-all-quit-help :override (lambda (_) "no")
414 '((name . dired-test-bug27940-advice)))
415 (dired default-directory)
416 (dired-toggle-marks)
417 (dired-do-delete nil)
418 (unwind-protect
419 (should (= 5 (length (dired-get-marked-files)))) ; Just the empty dirs deleted.
420 (advice-remove 'dired--yes-no-all-quit-help 'dired-test-bug27940-advice)))
421 ;; Answer all
422 (dired-test-with-temp-dirs
423 nil
424 (advice-add 'dired--yes-no-all-quit-help :override (lambda (_) "all")
425 '((name . dired-test-bug27940-advice)))
426 (dired default-directory)
427 (dired-toggle-marks)
428 (dired-do-delete nil)
429 (unwind-protect
430 (should-not (dired-get-marked-files)) ; All dirs deleted.
431 (advice-remove 'dired--yes-no-all-quit-help 'dired-test-bug27940-advice)))
432 ;; Answer quit
433 (dired-test-with-temp-dirs
434 nil
435 (advice-add 'dired--yes-no-all-quit-help :override (lambda (_) "quit")
436 '((name . dired-test-bug27940-advice)))
437 (dired default-directory)
438 (dired-toggle-marks)
439 (let ((inhibit-message t))
440 (dired-do-delete nil))
441 (unwind-protect
442 (should (= 6 (length (dired-get-marked-files)))) ; All empty dirs but zeta-empty-dir deleted.
443 (advice-remove 'dired--yes-no-all-quit-help 'dired-test-bug27940-advice))))
444
445
361(provide 'dired-tests) 446(provide 'dired-tests)
362;; dired-tests.el ends here 447;; dired-tests.el ends here