aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPaul Eggert2017-09-20 11:49:12 -0700
committerPaul Eggert2017-09-20 11:50:35 -0700
commit047f02f00f602b9aef63ae8938e12f3f0ab481eb (patch)
tree05bb7bce7b212be58d92af124224adb8756329ad
parentfbd15836af69b1d156f39664f2512f85278fdb08 (diff)
downloademacs-047f02f00f602b9aef63ae8938e12f3f0ab481eb.tar.gz
emacs-047f02f00f602b9aef63ae8938e12f3f0ab481eb.zip
Fix new copy-directory bug with empty dirs
Problem reported by Afdam Plaice (Bug#28520) and by Eli Zaretskii (Bug#28483#34). This is another bug that I introduced in my recent copy-directory changes. * lisp/files.el (copy-directory): Work with empty subdirectories, too. * test/lisp/files-tests.el (files-tests--copy-directory): Test for this bug.
-rw-r--r--lisp/files.el2
-rw-r--r--test/lisp/files-tests.el7
2 files changed, 7 insertions, 2 deletions
diff --git a/lisp/files.el b/lisp/files.el
index 0c30d40c13b..f0a1f2380d9 100644
--- a/lisp/files.el
+++ b/lisp/files.el
@@ -5564,7 +5564,7 @@ into NEWNAME instead."
5564 (filetype (car (file-attributes file)))) 5564 (filetype (car (file-attributes file))))
5565 (cond 5565 (cond
5566 ((eq filetype t) ; Directory but not a symlink. 5566 ((eq filetype t) ; Directory but not a symlink.
5567 (copy-directory file newname keep-time parents)) 5567 (copy-directory file target keep-time parents t))
5568 ((stringp filetype) ; Symbolic link 5568 ((stringp filetype) ; Symbolic link
5569 (make-symbolic-link filetype target t)) 5569 (make-symbolic-link filetype target t))
5570 ((copy-file file target t keep-time))))) 5570 ((copy-file file target t keep-time)))))
diff --git a/test/lisp/files-tests.el b/test/lisp/files-tests.el
index f2a9a321808..285a884b695 100644
--- a/test/lisp/files-tests.el
+++ b/test/lisp/files-tests.el
@@ -399,11 +399,16 @@ name (Bug#28412)."
399 (dirname (file-name-as-directory dir)) 399 (dirname (file-name-as-directory dir))
400 (source (concat dirname "source")) 400 (source (concat dirname "source"))
401 (dest (concat dirname "dest/new/directory/")) 401 (dest (concat dirname "dest/new/directory/"))
402 (file (concat (file-name-as-directory source) "file"))) 402 (file (concat (file-name-as-directory source) "file"))
403 (source2 (concat dirname "source2"))
404 (dest2 (concat dirname "dest/new2")))
403 (make-directory source) 405 (make-directory source)
404 (write-region "" nil file) 406 (write-region "" nil file)
405 (copy-directory source dest t t t) 407 (copy-directory source dest t t t)
406 (should (file-exists-p (concat dest "file"))) 408 (should (file-exists-p (concat dest "file")))
409 (make-directory (concat (file-name-as-directory source2) "a") t)
410 (copy-directory source2 dest2)
411 (should (file-directory-p (concat (file-name-as-directory dest2) "a")))
407 (delete-directory dir 'recursive))) 412 (delete-directory dir 'recursive)))
408 413
409(provide 'files-tests) 414(provide 'files-tests)